내 수업에서는 이미지의 객체가 phylum porifera (seasponge) 또는 다른 객체의 예인지 여부를 결정하기 위해 두 개의 분류자를 사용하여 응용 프로그램을 만들어야합니다.
그러나 파이썬에서 기능 추출 기술과 관련하여 완전히 잃어 버렸습니다. 조언자는 수업 시간에 다루지 않은 이미지를 사용하도록 설득했습니다.
누구든지 의미있는 문서 나 독서를 지시하거나 고려할 방법을 제안 할 수 있습니까?
내 수업에서는 이미지의 객체가 phylum porifera (seasponge) 또는 다른 객체의 예인지 여부를 결정하기 위해 두 개의 분류자를 사용하여 응용 프로그램을 만들어야합니다.
그러나 파이썬에서 기능 추출 기술과 관련하여 완전히 잃어 버렸습니다. 조언자는 수업 시간에 다루지 않은 이미지를 사용하도록 설득했습니다.
누구든지 의미있는 문서 나 독서를 지시하거나 고려할 방법을 제안 할 수 있습니까?
답변:
이미지에서 기능 추출에 자주 사용되는 일부 기술은 이진화 및 흐리게 처리됩니다.
이진화 : 이미지 배열을 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 및 신경망의 기본 사항과 다양한 유형의 필터, 그 의미 및 그 배후의 수학을 이해해야합니다.
이 훌륭한 튜토리얼은 현재 대부분의 비전 작업에서 최첨단 성능을 달성하는 컨볼 루션 뉴럴 워크의 기초를 다룹니다.
http://deeplearning.net/tutorial/lenet.html
Theano와 그 위에 빌드 된 라이브러리를 포함하여 파이썬의 CNN에 대한 여러 가지 옵션이 있습니다 (케라가 사용하기 쉽다는 것을 알았습니다).
딥 러닝을 피하려면 OpenCV를 살펴보십시오. OpenCV는 다른 많은 유형의 기능, 라인 Haar 캐스케이드 및 SIFT 기능을 배울 수 있습니다.
Jeremy Barnes와 Jamesmf가 말했듯이 모든 기계 학습 알고리즘을 사용하여 문제를 해결할 수 있습니다. 강력하고 기능을 자동으로 식별 할 수 있습니다. 알고리즘에 올바른 교육 데이터를 제공하면됩니다. 이미지 작업이 필요하기 때문에 컨볼 루션 신경망이 더 나은 선택입니다.
이것은 컨볼 루션 신경망에 대해 배우기에 좋은 튜토리얼입니다. 코드를 다운로드 할 수도 있고 문제 정의에 따라 변경 될 수도 있습니다. 그러나 처리를 위해 파이썬과 theano 라이브러리를 배워야하며 그에 대한 훌륭한 자습서도 얻을 수 있습니다.