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.
machine-learning
deep-learning
conv-neural-network
rnn
Ryan Zotti
źródło
źródło
Odpowiedzi:
Masz zestaw danych zawierający:
Twój zestaw danych może wyglądać mniej więcej tak:
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:
Jak to się osiąga?
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.
Dalsza lektura:
źródło