파이썬에서 이미지 추출 기능


18

내 수업에서는 이미지의 객체가 phylum porifera (seasponge) 또는 다른 객체의 예인지 여부를 결정하기 위해 두 개의 분류자를 사용하여 응용 프로그램을 만들어야합니다.

그러나 파이썬에서 기능 추출 기술과 관련하여 완전히 잃어 버렸습니다. 조언자는 수업 시간에 다루지 않은 이미지를 사용하도록 설득했습니다.

누구든지 의미있는 문서 나 독서를 지시하거나 고려할 방법을 제안 할 수 있습니까?


당신은 고문을 언급 했으므로 이것이 대학원 과제의 일부라고 가정합니다. 상용 소프트웨어에 액세스 할 수 있습니까, 아니면 Python 및 오픈 소스 패키지로만 수행해야합니까? 현재 수업에서 무엇을 배우고 있으며 수업 이름은 무엇입니까? 또한 답변을 제공하는 데 필요한 시간 측면에서 성능 요구 사항이 있습니까?
MLowry

파이썬과 오픈 소스 패키지 만 사용해야합니다. 내 자신의 소스 코드를 작성하는 것도 권장하지 않습니다. 이것은 마스터 레벨 과정입니다. 이 수업은 입문 데이터 과학 과정입니다. 마지막으로 다루었던 내용은 기능 선택이지만 거의 모든 토론은 텍스트 데이터에 관한 것입니다. ~ 70 %의 정확도
Jeremy Barnes

답변:


11

이미지에서 기능 추출에 자주 사용되는 일부 기술은 이진화흐리게 처리됩니다.

이진화 : 이미지 배열을 1과 0으로 변환합니다. 이미지를 2D 이미지로 변환하는 동안 수행됩니다. 그레이 스케일링도 사용할 수 있습니다. 이미지의 숫자 행렬을 제공합니다. 그레이 스케일은 디스크에 저장할 때 훨씬 적은 공간을 차지합니다.

이것은 당신이 파이썬에서하는 방법입니다 :

from PIL import Image

%matplotlib inline  

#Import an image
image = Image.open("xyz.jpg")

image

이미지 예 :

여기에 이미지 설명을 입력하십시오

이제 회색조로 변환하십시오.

im = image.convert('L')

im

이 이미지를 반환합니다 :

여기에 이미지 설명을 입력하십시오

그리고 이것을 실행하면 행렬을 볼 수 있습니다.

array(im)

배열은 다음과 같습니다.

array([[213, 213, 213, ..., 176, 176, 176],
       [213, 213, 213, ..., 176, 176, 176],
       [213, 213, 213, ..., 175, 175, 175],
       ..., 
       [173, 173, 173, ..., 204, 204, 204],
       [173, 173, 173, ..., 205, 205, 204],
       [173, 173, 173, ..., 205, 205, 205]], dtype=uint8)

이제 히스토그램 플롯 및 / 또는 등고선 플롯을 사용하여 이미지 기능을 살펴보십시오.

from pylab import *

# create a new figure
figure()
gray()
# show contours with origin upper left corner
contour(im, origin='image')
axis('equal')
axis('off')


figure()


hist(im_array.flatten(), 128)

show()

이것은 다음과 같은 플롯을 반환합니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

블러 링 : 블러 링 알고리즘은 주변 픽셀을 가중 평균하여 모든 픽셀에 주변 색상을 통합합니다. 윤곽을 향상시키고 기능과 중요성을 더 잘 이해하는 데 도움이됩니다.

그리고 이것은 당신이 파이썬에서하는 방법입니다 :

from PIL import *


figure()
p = image.convert("L").filter(ImageFilter.GaussianBlur(radius = 2))
p.show()

흐릿한 이미지는 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

따라서 기능 엔지니어링을 수행 할 수있는 몇 가지 방법이 있습니다. 또한 고급 방법을 사용하려면 Computer Vision 및 신경망의 기본 사항과 다양한 유형의 필터, 그 의미 및 그 배후의 수학을 이해해야합니다.


1
정말 고맙습니다. 나는 이것에 대해 몇 군데에 올렸고 당신의 정보가 가장 유익했습니다. 이미지의 특징 추출이 개념적으로 어떻게 작동하는지 오해하고 있음을 깨달았습니다.
Jeremy Barnes

내 대답이 당신에게 도움이 된 것을 기쁘게 생각합니다 :)
Dawny33

8

이 훌륭한 튜토리얼은 현재 대부분의 비전 작업에서 최첨단 성능을 달성하는 컨볼 루션 뉴럴 워크의 기초를 다룹니다.

http://deeplearning.net/tutorial/lenet.html

Theano와 그 위에 빌드 된 라이브러리를 포함하여 파이썬의 CNN에 대한 여러 가지 옵션이 있습니다 (케라가 사용하기 쉽다는 것을 알았습니다).

딥 러닝을 피하려면 OpenCV를 살펴보십시오. OpenCV는 다른 많은 유형의 기능, 라인 Haar 캐스케이드 및 SIFT 기능을 배울 수 있습니다.

http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_feature2d/py_table_of_contents_feature2d/py_table_of_contents_feature2d.html


1

Jeremy Barnes와 Jamesmf가 말했듯이 모든 기계 학습 알고리즘을 사용하여 문제를 해결할 수 있습니다. 강력하고 기능을 자동으로 식별 할 수 있습니다. 알고리즘에 올바른 교육 데이터를 제공하면됩니다. 이미지 작업이 필요하기 때문에 컨볼 루션 신경망이 더 나은 선택입니다.

이것은 컨볼 루션 신경망에 대해 배우기에 좋은 튜토리얼입니다. 코드를 다운로드 할 수도 있고 문제 정의에 따라 변경 될 수도 있습니다. 그러나 처리를 위해 파이썬과 theano 라이브러리를 배워야하며 그에 대한 훌륭한 자습서도 얻을 수 있습니다.

http://deeplearning.net/tutorial/lenet.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.