2016-11-30 2 views
-1

저는 신경망을 가진 작은 프로젝트를하고 있습니다. 필자는 MNIST 데이터 세트를 사용하여 숫자 인식에 대해 읽었으며 동일한 데이터 세트를 만들 수 있는지를 생각했지만 일상적으로 볼 수있는 개체를 매일 보았습니다. 그래서 여기에 알고리즘이 있습니다 (우리가 그렇게 말할 수 있다면) : 파이썬을위한 opencv 라이브러리로 모두 완료되었습니다 1) 이미지에서 등고선 가져 오기. 이것은 말 그대로 등고선이 아니라 그렇게 보이는 것입니다. 이 코드로 이런 짓을했습니다 훈련 세트를 만들 수이미지에 무엇이 있는지 확인하십시오.

def findContour(self): 
    gray = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY) 
    gray = cv2.bilateralFilter(gray, 11, 17, 17) 
    self.image = cv2.Canny(gray, 30, 200) 

2) 다음이 필요합니다. 이 메시지를 복사하고 편집하십시오. 회전 변경 및 뒤집기 - 회전 된 윤곽으로 구성된 약 40 개의 이미지가 생성되었습니다. 3) 이제이 이미지를 CSV 파일로 옮깁니다. 이러한 이미지는 3D 배열로 표현되므로 numpy에서 .flatten 함수를 사용하여 이미지를 평평하게 만듭니다. 다음으로이 병합 된 벡터는 csv 파일로 작성되며 마지막 문자로 레이블이 붙습니다.

이것은 내가 수행 한 것이며 묻고 싶습니다. 다음 마지막 요소를 입력 x 벡터로 사용하고 마지막 요소를 제외한 모든 것을 y 벡터로 사용하려고합니다. (here)

같은 방식으로 인식이 이루어집니다 : 이미지의 윤곽을 얻고이를 신경망에 공급하면 출력이 레이블이됩니다.

시도해 볼 필요가 없습니까?

+0

_ 작동하지 않습니까? _ 아니요. 정말로, 시간 낭비입니다. 대신에 객체 인식 및 주제에 관한 최신 논문을 읽으십시오. 당신은 윤곽을 추출하는 것보다 (그리고 흥미로운) 더 어렵다는 것을 배울 것입니다 ... – Miki

+1

나는 동의하지 않는다; 현재 논문을 읽지 마십시오. 다른 방법보다 훨씬 혼란 스럽습니다. 구글 "객체 인식 신경 네트워크 튜토리얼", 또는 그 라인을 따라 뭔가 당신이 볼 수있는 많은 자습서를 찾을거야! –

+1

@Christopher 아마도 나는 다음과 같이 다시 말해야합니다. "간단하게 시작하고, 온라인 자습서를보고, 장난감 문제보다 더 의미있는 일을하고 싶을 때, 새로운 논문과 최첨단 접근법을 살펴보십시오." ;디 – Miki

답변

1

실험을위한 충분한 공간이 있습니다. 그러나 학습 운동을 제외하고는 바퀴를 재발 명해서는 안됩니다. 패러다임을 연구하고, 이미 존재하는 것을 배우고, 자신의 바퀴를 개선하십시오.

CNN (길쌈 신경 네트워크)에서 이미지 인식으로 시작하는 것이 좋습니다. ILSVRC 2012 이미지 데이터 세트 (a.k.a ImageNet 파일)로 많은 훌륭한 작업이 수행되었습니다. 사실 현재 NN 인기의 상당 부분은 Alex Krizhevsky의 획기적인 성과 (AlexNet, ILSVRC를 획득 한 최초의 NN)와 계속되는 토폴로지 (ResNet, GoogleNet, VGG 등)에서 비롯된 것입니다.

간단한 대답은 네트워크가 원본 사진에서 중요한 것을 "결정"하는 것입니다. 물론, 이미지를 평평하게하고 윤곽을 그려야하지만 원본 이미지를 실행하면 우수한 결과를 얻을 수 있습니다.

"이미지 인식 소개"에 대한 리소스를 검색하고 현재 읽고있는 내용과 관심 분야와 일치하는 몇 가지 히트를 선택하십시오. 밖에는 좋은 것들이 많이 있습니다.

자신의 모델을 프로그래밍 할 때, 모든 기존 자료를 처음부터 작성하는 대신 기존 프레임 워크를 사용하는 것이 좋습니다. CSV 형식을 덤프하십시오. 미리 패키지화 된 I/O 루틴과 많은 지원이있는 더 나은 것들이 있습니다. 아이디어는 항상 데이터를 조작하는 것이 아니라 네트워크를 설계 할 수있게하는 것입니다.

인기있는 프레임 워크에는 Caffe, TensorFlow, Torch, Theano 및 CNTK가 포함됩니다. 지금까지 나는 Caffe와 Torch가 가장 쉬운 전반적인 학습 곡선을 가지고 있음을 발견했습니다. 비록 실제로 많은 차이가 없지만 실제로는 을 일반적으로 다른 하나 이상 추천합니다. 관심있는 분야에서 좋은 문서와 예제가있는 자료를 찾아보십시오.

관련 문제