32

신경망의 작동 방식을 이해합니다. 그러나 실제 문자 인식과 같은 이미지 처리에 사용하려면 신경망에 이미지 데이터를 입력하는 방법을 이해할 수 없습니다.신경망에 이미지를 입력하는 방법은 무엇입니까?

매우 큰 이미지가 A입니다. 어쩌면 이미지에서 일부 정보/사양을 가져 와서 해당 사양의 값 벡터를 사용하려고 시도해야합니까? 그리고 그들은 신경 망에 대한 입력이 될 것입니까?

누가 이미 그런 일을 했는가? 이것을 어떻게 할 수 있습니까?

+0

이미 신경 세포가 있습니까? 그렇지 않다면 이것은 이상한 질문입니다. 예인 경우 최소한 게시 인터페이스. –

+1

이상한 질문이 아닙니다. 사실, 인터페이스가 있다면, 처음에는 뉴 넷에 이미지를 입력하는 방법을 결정합니다. 문제는 - 매우 크거나 작더라도 문자 A와 같은 이미지 데이터를 신경망에 입력 할 수 있습니까? 아니면 문자 A를 고유하게 결정하는 일부 매개 변수로 나누어야합니까? – Dzen

+0

매개 변수로 나누어야 할 경우 사용해야하는 매개 변수의 종류는 무엇입니까? – Dzen

답변

7

해결하려는 문제의 이름은 "feature extraction"입니다. 확실히 중요한 것은 아니며 적극적인 연구 주제입니다.

단순한 방법은 이미지의 각 픽셀을 해당 입력 뉴런에 매핑하는 것입니다. 분명히 이것은 동일한 크기의 이미지에만 적용되며 일반적으로 효과가 제한적입니다.

너머에 할 수있는 일이 많습니다. 가보 필터, Haar와 유사한 기능, PCA 및 ICA, 스파 스 기능 등이 인기있는 예입니다. 내 충고는 신경 네트워크 및 패턴 인식, 또는 특히 광학 문자 인식에 대한 교과서를 선택하는 것입니다.

+0

OCR에 관한 좋은 책을 제안 할 수 있습니까? – Dzen

+0

필자의 전문 분야는 아니지만 빠른 검색은 Roman Yampolskiy의 "Optical Character Recognition을위한 기능 추출 접근법"을 보여줍니다. –

24

가장 쉬운 해결책은 교육 및 테스트를 위해 모든 이미지를 동일한 해상도로 정규화하는 것입니다. 또한 각 이미지의 문자는 거의 같은 크기 여야합니다. 그레이 스케일 이미지를 사용하는 것도 좋은 생각이므로 각 픽셀은 단 하나의 숫자 만 제공합니다. 그런 다음 각 픽셀 값을 네트워크의 하나의 입력으로 사용할 수 있습니다. 예를 들어 크기가 16x16 픽셀 인 이미지의 네트워크는 16 * 16 = 256 입력 뉴런을 갖습니다. 첫 번째 뉴런은 픽셀 값을 (0,0), 두 번째 뉴런 값을 (0,1) 등으로 나타냅니다. 기본적으로 이미지 값을 하나의 벡터에 넣고이 벡터를 네트워크에 공급합니다. 이것은 이미 작동해야합니다.

이미지에서 먼저 피쳐 (예 : 가장자리)를 추출한 다음 해당 피쳐에서 네트워크를 사용하면 학습 속도가 빨라지고 검색이 더욱 강력해질 수 있습니다. 이 경우 사전 지식을 통합하는 것입니다. 문자 인식을 위해서는 특정 관련 기능을 알고 있어야합니다. 따라서 사전 처리 단계로 추출하여 네트워크에서 이러한 기능을 학습 할 필요가 없습니다. 그러나 잘못된, 즉 관련성이없는 기능을 제공하면 네트워크에서 이미지 -> 문자 매핑을 배울 수 없습니다.

+1

이 질문을 해결하기위한 나의 단계가 있습니까? 1. 이미지를 2 진화하십시오. 2. 분할. 이미지의 연결된 부분을 찾으십시오. 등고선을 사용 중일 수 있습니다. 3. 각 세그먼트에 대해 다른 세그먼트에서 개별적으로 진행하십시오. 3.1 이미지 세그먼트에서 일부 정보를 추출합니다. 3.2 패턴과 비교하거나 신경망에 입력하십시오. 그래서 몇 가지 질문이 있습니다. 1. 이미지를 세그먼트 화하고 문자 "i"가 있으면 그 세그먼트에서 세그먼트가 분리됩니다. 이 상황을 어떻게 처리할까요? 특별한 경우를 추가 할 수 있습니다. 2. 세그먼트의 크기가 너무 크거나 작 으면 크기를 조정해야합니까? – Dzen

+0

신경망에 다른 크기의 이미지를 입력 할 수 있습니까? 나는 할 수 있다고 생각하지 않지만 확실하지는 않습니다. 그래서 이미지는 다른 크기의 글자를 어떻게 처리 할 수 ​​있습니까? – Dzen

+3

이렇게 처리 할 수있는 사전 처리 단계 사운드는 있지만, 첫 번째 단락에서 제안한 것으로 시작하는 것이 좋습니다. 신경 네트워크 나 캐릭터 인식에 대한 많은 경험이 없다고 생각됩니다. 따라서 작동하는 것과 작동하는 방법에 대한 느낌을 얻으려면 간단한 경우부터 시작해야합니다. 한 번에 너무 많은 단계를 추가하면 실수가 발생할 가능성이 높아지며 각 단계별로 무엇을 기대해야할지 모르는 상태에서 코드를 디버깅하는 데 어려움을 겪습니다. – ahans

1

실제 픽셀을 입력으로 사용할 수 있습니다. 이 때문에 때때로 입력 이미지의 작은 해상도를 사용하는 것이 좋습니다. 이 색상 확인/:

ANN의 좋은 점은 여기

0

(그 입력 노드에 대한 제로에 가까운 가중치를 할당하여 중요하지 않은 픽셀을 무시) 몇 가지 단계 기능 선택의 어떻게 든 할 수있는 점이다 그레이 스케일 이미지는 이진 이미지입니다. 이렇게하려면 일부 임계 값 연산을 수행하십시오. 그 다음에 일종의 특징 추출을합니다. https://github.com/gbuesing/neural-net-ruby/blob/master/examples/mnist.rb

2

이미지의 NN을 적용하는 방법에 대한 이러한 모든 고려 사항 (등, 기능을 기반으로, 픽셀 기반, 규모의 불변) 우리 2002 review paper 에 설명되어 있습니다

: 루비에 있지만, OCR/NN 물건이 예는, 도움이 될 수 있습니다

당신의 가장 큰 도전은 이른바 '차원의 저주'입니다.

NN 성능을 지원 벡터 머신의 성능 (까다로운 커널을 사용)과 비교할 것입니다.

관련 문제