연결주의 시간 분류 (CTC) 란 무엇입니까?


15

광학 문자 인식 (OCR) 프로젝트를 수행하려고합니다. 몇 가지 연구를 한 후에 흥미로운 것으로 보이는 아키텍처 인 CNN + RNN + CTC를 발견했습니다. CNN (Convoluted Neural Network) 및 RNN (Recurrent Neural Network)에 익숙하지만 CTC (Connectionistor Temporal Classification) 란 무엇입니까? 평신도의 용어로 설명하고 싶습니다.


3
원산지 논문 : Graves, et al. (2006) 연결주의 시간 분류 : 순환 신경망으로 세그먼트 화되지 않은 시퀀스 데이터에 라벨링, 제 23 회 기계 학습에 관한 국제 회의 ( pdf ).
neo li

답변:


28

다음을 포함하는 데이터 세트가 있습니다.

  • 이미지 I1, I2, ...
  • 이미지 I1, I2, ...에 대한 지상 진실 텍스트 T1, T2, ...

따라서 데이터 세트는 다음과 같이 보일 수 있습니다.

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

신경망 (NN)은 이미지의 각 가능한 수평 위치 (종종 문헌에서 시간 단계 t 라고도 함)에 대한 점수를 출력합니다 . 너비 2 (t0, t1) 및 가능한 문자 2 개 ( "a", "b")가있는 이미지의 경우 다음과 같습니다.

| t0 | t1 --+-----+---- a | 0.1 | 0.6 b | 0.9 | 0.4

이러한 NN을 훈련 시키려면 이미지에서 실제 텍스트의 문자가있는 각 이미지에 대해 지정해야합니다. 예를 들어, "Hello"라는 텍스트가 포함 된 이미지를 생각해보십시오. 이제 "H"가 시작하고 끝나는 위치를 지정해야합니다 (예 : "H"는 10 번째 픽셀에서 시작하여 25 번째 픽셀까지 진행). "e", "l, ...의 경우와 동일합니다. 지루하게 들리고 큰 데이터 세트에는 어려운 작업입니다.

이런 식으로 완전한 데이터 세트에 주석을 달았더라도 다른 문제가 있습니다. NN은 각 시간 단계에서 각 캐릭터의 점수를 출력합니다. 장난감 예제는 위의 표를 참조하십시오. 우리는 이제 시간 단계마다 가장 가능성이 높은 문자를 취할 수 있습니다. 이는 장난감 예제에서 "b"와 "a"입니다. 이제 더 큰 텍스트 (예 : "Hello")를 생각해보십시오. 작가가 가로 방향으로 많은 공간을 사용하는 쓰기 스타일을 가지고 있다면 각 문자는 여러 시간 간격을 차지할 것입니다. 시간 단계마다 가장 가능성이 높은 문자를 사용하면 "HHHHHHHHHeeeellllllllloooo"와 같은 텍스트를 얻을 수 있습니다. 이 텍스트를 어떻게 올바른 출력으로 변환해야합니까? 각 중복 문자를 제거 하시겠습니까? 이로 인해 "Helo"가 나오지 않습니다. 따라서 영리한 사후 처리가 필요합니다.

CTC는 두 가지 문제를 모두 해결합니다.

  • CTC 손실을 사용하여 캐릭터가 발생하는 위치를 지정하지 않고도 쌍 (I, T)에서 네트워크를 훈련시킬 수 있습니다
  • CTC 디코더가 NN 출력을 최종 텍스트로 변환하므로 출력을 후 처리 할 필요가 없습니다.

이것이 어떻게 달성됩니까?

  • 특정 시간 단계에서 문자가 보이지 않음을 나타내는 특수 문자 (이 텍스트에서 "-"로 표시된 CTC 공백)를 소개합니다.
  • CTC 공백을 삽입하고 가능한 모든 방식으로 문자를 반복하여 기본 진리 텍스트 T를 T '로 수정하십시오.
  • 우리는 이미지를 알고 텍스트를 알고 있지만 텍스트의 위치를 ​​모릅니다. 텍스트 "Hi ----", "-Hi ---", "--Hi--", ...의 가능한 모든 위치를 시도해 봅시다 .
  • 우리는 또한 이미지에서 각 캐릭터가 차지하는 공간을 모릅니다. "HHi ----", "HHHi ---", "HHHHi--", ...와 같이 문자가 반복되도록하여 가능한 모든 정렬을 시도해 봅시다.
  • 여기에 문제가 있습니까? 물론 한 문자가 여러 번 반복되도록 허용하면 "Hello"의 "l"과 같은 실제 중복 문자를 어떻게 처리 합니까? 글쎄, 항상 "Hel-lo"또는 "Heeellll ------- llo"와 같은 상황에서 사이에 공백을 삽입하십시오.
  • 각 가능한 T '(즉, 각 변환 및 이들의 각 조합에 대한)에 대한 점수를 계산하고, 모든 점수에 대해 합산하여 쌍의 손실을 산출합니다 (I, T)
  • 디코딩은 쉽다 : "HHHHHH-eeeellll-lll--oo ---"와 같이 각 시간 단계에서 가장 높은 점수를 가진 문자를 선택하고, 중복 문자 "H-el-lo"를 버리고 공백을 "Hello"를 버린다. 끝났습니다.

이를 설명하기 위해 다음 이미지를 살펴보십시오. 음성 인식의 맥락에서 텍스트 인식은 동일합니다. 문자의 정렬 및 위치가 다르더라도 디코딩은 두 스피커 모두에 대해 동일한 텍스트를 생성합니다.

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

더 읽을 거리 :


적어도 처음에는 " 각 이미지 T1, T2, ...에 대한 사실 텍스트 "라는 의미가 약간 혼란 스럽습니다 . 먼저 설명해야합니다. 또한 개념에 익숙하지 않은 경우 "신경망 (NN)이 이미지의 가능한 각 수평 위치 (시간 단계 t)에 대한 점수를 출력 함"의 의미는 명확하지 않습니다. 어떻게 이미지에 시간이 걸립니까? 요약하면, 귀하의 초기 진술 중 일부는 몇 가지 개념을 알고 있다고 가정하는 것 같습니다.이 개념은 나중에이 동일한 답변에서 나중에 이해되지만 IMHO는이 개념을 명확히해야합니다.
nbro

피드백 감사드립니다. 데이터 세트에 대한 그림을 추가하고 설명을 개선했습니다. 또한, 시간 단계라는 용어는 단순히 텍스트 인식의 맥락에서 "가로 위치"또는 x 좌표를 의미한다. 이 용어는 음성 인식 (유사한 작업)에서 유래 한 것으로, 시간 단계는 오디오 신호의 시간 위치를 나타냅니다.
Harry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.