Co to jest klasyfikacja czasowa łączników (CTC)?

15

Szukam projektu optycznego rozpoznawania znaków (OCR). Po przeprowadzeniu badań natrafiłem na architekturę, która wydaje się interesująca: CNN + RNN + CTC. Znam zwinięte sieci neuronowe (CNN) i rekurencyjne sieci neuronowe (RNN), ale czym jest klasyfikacja czasowa łącznika (CTC)? Chciałbym wyjaśnienia w kategoriach laika.

Ryan Zotti
źródło
3
Polecam lekturę oryginału: Graves i in. (2006) Klasyfikator czasowy łączników: Oznaczanie danych niesekcjonowanych sekwencji za pomocą rekurencyjnych sieci neuronowych, materiały z 23. Międzynarodowej Konferencji na temat Uczenia Maszynowego ( pdf ).
neo li

Odpowiedzi:

28

Masz zestaw danych zawierający:

  • obrazy I1, I2, ...
  • teksty prawdy gruntowej T1, T2, ... dla obrazów I1, I2, ...

Twój zestaw danych może wyglądać mniej więcej tak:

wprowadź opis zdjęcia tutaj

Sieć neuronowa (NN) generuje wynik dla każdej możliwej pozycji poziomej (często w literaturze nazywanej krokiem czasu t). Wygląda to mniej więcej tak dla obrazu o szerokości 2 (t0, t1) i 2 możliwych znakach („a”, „b”):

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

Aby wytrenować taki NN, musisz określić dla każdego obrazu, w którym na obrazie umieszczony jest znak tekstu prawdy. Jako przykład pomyślmy o obrazie zawierającym tekst „Cześć”. Musisz teraz określić, gdzie zaczyna się i kończy „H” (np. „H” zaczyna się od 10 piksela i przechodzi do 25 piksela). To samo dla „e”, „l, ... To brzmi nudno i jest ciężką pracą dla dużych zestawów danych.

Nawet jeśli udało Ci się w ten sposób opatrzyć adnotację kompletny zestaw danych, istnieje inny problem. NN wypisuje wyniki dla każdej postaci na każdym kroku czasowym, zobacz tabelę, którą pokazałem powyżej, na przykład zabawki. Możemy teraz wybrać najbardziej prawdopodobną postać na krok czasu, w przykładzie zabawki jest to „b” i „a”. Pomyśl teraz o większym tekście, np. „Cześć”. Jeśli pisarz ma styl pisania, który zajmuje dużo miejsca w pozycji poziomej, każda postać zajmuje wiele kroków czasowych. Biorąc najbardziej prawdopodobny znak na krok czasu, może to dać nam tekst w stylu „HHHHHHHeeeellllllllloooo”. Jak powinniśmy przekształcić ten tekst we właściwy wynik? Usunąć każdy zduplikowany znak? To daje „Helo”, co nie jest poprawne. Potrzebowalibyśmy więc sprytnego przetwarzania końcowego.

CTC rozwiązuje oba problemy:

  • możesz trenować sieć z par (I, T) bez konieczności określania, w której pozycji występuje znak przy użyciu utraty CTC
  • nie musisz przetwarzać danych wyjściowych, ponieważ dekoder CTC przekształca dane wyjściowe NN w końcowy tekst

Jak to się osiąga?

  • wprowadzić znak specjalny (pusty CTC, oznaczony w tym tekście jako „-”), aby wskazać, że żaden znak nie jest widoczny w danym przedziale czasowym
  • zmodyfikuj tekst prawdy od T do T ', wstawiając odstępy CTC i powtarzając znaki na wszystkie możliwe sposoby
  • znamy obraz, znamy tekst, ale nie wiemy, gdzie jest on umieszczony. Wypróbujmy więc wszystkie możliwe pozycje tekstu „Cześć ----”, „-Hi ---”, „-Hi--”, ...
  • nie wiemy również, ile miejsca zajmuje każda postać na obrazie. Spróbujmy też wszystkich możliwych wyrównań, umożliwiając powtarzanie się znaków, takich jak „HHi ----”, „HHHi ---”, „HHHHi--”, ...
  • widzisz tutaj problem? Oczywiście, jeśli pozwolimy postaci powtarzać się wiele razy, jak radzimy sobie z prawdziwymi zduplikowanymi znakami, takimi jak „l” w „Cześć”? Cóż, po prostu zawsze wstaw puste miejsce w takich sytuacjach, np. „Hel-lo” lub „Heeellll ------- llo”
  • oblicz wynik dla każdej możliwej T '(czyli dla każdej transformacji i każdej ich kombinacji), zsumuj wszystkie wyniki, które dają stratę dla pary (I, T)
  • dekodowanie jest łatwe: wybierz znak z najwyższym wynikiem dla każdego kroku czasowego, np. „HHHHHH-eeeellll-lll - oo ---”, wyrzuć duplikaty znaków „H-el-lo”, wyrzuć puste pola „Cześć”, a my są skończone.

Aby to zilustrować, spójrz na poniższy obrazek. Odbywa się to w kontekście rozpoznawania mowy, jednak rozpoznawanie tekstu jest takie samo. Dekodowanie daje ten sam tekst dla obu głośników, mimo że wyrównanie i położenie znaku są różne.

wprowadź opis zdjęcia tutaj

Dalsza lektura:

Złupić
źródło
Jest to trochę mylące, przynajmniej dla mnie, co początkowo rozumiesz przez „ tekst prawdy gruntowej dla każdego obrazu T1, T2, ...”. Powinieneś zacząć od wyjaśnienia tego. Ponadto, nie jest bardzo jasne, jeśli nie znasz koncepcji, co rozumiesz przez „Sieć neuronowa (NN) generuje wynik dla każdej możliwej pozycji poziomej (krok czasowy t) obrazu”. Dlaczego obraz ma kroki czasowe? Podsumowując, niektóre z twoich wstępnych stwierdzeń wydają się zakładać, że znasz kilka pojęć, które ostatecznie zrozumiałeś później w tej samej odpowiedzi, ale, IMHO, powinieneś je wyjaśnić.
nbro
Dziękuję za opinię. Dodałem ilustrację o zestawie danych i poprawiłem opis. Ponadto termin „krok czasowy” oznacza po prostu „pozycję poziomą” lub współrzędną xw kontekście rozpoznawania tekstu. Termin najprawdopodobniej pochodzi od rozpoznawania mowy (podobne zadanie), w którym krok czasu odnosi się do pozycji w czasie w sygnale audio.
Harry,