Apa itu Classification Temporal Classification (CTC)?

15

Saya ingin melakukan proyek optical character recognition (OCR). Setelah melakukan beberapa penelitian saya menemukan arsitektur yang tampaknya menarik: CNN + RNN + CTC. Saya akrab dengan jaringan saraf berbelit-belit (CNN), dan jaringan saraf berulang (RNN), tetapi apa itu Classification Temporal Classification (CTC)? Saya ingin penjelasan dalam istilah awam.

Ryan Zotti
sumber
3
Saya sarankan Anda untuk membaca makalah asal: Graves, et al. (2006) Klasifikasi Temporal Connectionist: Pelabelan Data Urutan Tidakegegmentasi dengan Jaringan Syaraf Berulang, Prosiding Konferensi Internasional ke-23 tentang Pembelajaran Mesin ( pdf ).
neo li

Jawaban:

28

Anda memiliki dataset yang berisi:

  • gambar I1, I2, ...
  • teks kebenaran dasar T1, T2, ... untuk gambar I1, I2, ...

Jadi dataset Anda dapat terlihat seperti itu:

masukkan deskripsi gambar di sini

Jaringan Saraf Tiruan (NN) mengeluarkan skor untuk setiap posisi horizontal yang mungkin (sering disebut t langkah-waktu dalam literatur) dari gambar. Ini terlihat seperti ini untuk gambar dengan lebar 2 (t0, t1) dan 2 karakter yang mungkin ("a", "b"):

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

Untuk melatih NN seperti itu, Anda harus menentukan untuk setiap gambar di mana karakter teks kebenaran dasar diposisikan dalam gambar. Sebagai contoh, pikirkan gambar yang berisi teks "Halo". Anda sekarang harus menentukan di mana "H" dimulai dan berakhir (misalnya "H" dimulai pada piksel ke-10 dan berlanjut hingga piksel ke-25). Hal yang sama untuk "e", "Aku, ... Kedengarannya membosankan dan merupakan kerja keras untuk dataset besar.

Bahkan jika Anda berhasil membuat anotasi dataset lengkap dengan cara ini, ada masalah lain. NN menampilkan skor untuk setiap karakter pada setiap langkah waktu, lihat tabel yang saya tunjukkan di atas untuk contoh mainan. Kita sekarang dapat mengambil karakter yang paling mungkin per langkah-waktu, ini adalah "b" dan "a" dalam contoh mainan. Sekarang pikirkan teks yang lebih besar, misalnya "Halo". Jika penulis memiliki gaya penulisan yang menggunakan banyak ruang dalam posisi horizontal, setiap karakter akan menempati beberapa langkah waktu. Mengambil karakter yang paling mungkin per langkah waktu, ini bisa memberi kita teks seperti "HHHHHHHHeeeellllllllloooo". Bagaimana seharusnya kita mengubah teks ini menjadi hasil yang benar? Hapus setiap karakter duplikat? Ini menghasilkan "Helo", yang tidak benar. Jadi, kita perlu beberapa postprocessing pintar.

CTC memecahkan kedua masalah:

  • Anda dapat melatih jaringan dari pasangan (I, T) tanpa harus menentukan di mana posisi karakter terjadi menggunakan hilangnya CTC
  • Anda tidak perlu memposting proses, karena decoder CTC mengubah output NN menjadi teks akhir

Bagaimana ini dicapai?

  • memperkenalkan karakter khusus (CTC-blank, dilambangkan sebagai "-" dalam teks ini) untuk menunjukkan bahwa tidak ada karakter yang terlihat pada langkah waktu tertentu
  • memodifikasi teks kebenaran dasar T ke T 'dengan memasukkan CTC-blanks dan dengan mengulangi karakter dengan semua cara yang mungkin
  • kita tahu gambarnya, kita tahu teksnya, tetapi kita tidak tahu di mana letak teks itu. Jadi, mari kita coba semua posisi yang memungkinkan dari teks "Hai ----", "-Hi ---", "--Hi--", ...
  • kami juga tidak tahu berapa banyak ruang yang ditempati setiap karakter dalam gambar. Jadi mari kita juga mencoba semua keberpihakan yang memungkinkan dengan memungkinkan karakter untuk mengulang seperti "HHi ----", "HHHi ---", "HHHHi--", ...
  • apakah Anda melihat masalah di sini? Tentu saja, jika kita membiarkan satu karakter mengulang beberapa kali, bagaimana kita menangani karakter duplikat nyata seperti "l" di "Halo"? Yah, selalu selalu masukkan kosong di antara dalam situasi ini, yaitu misalnya "Hel-lo" atau "Heeellll ------- llo"
  • menghitung skor untuk setiap kemungkinan T '(yaitu untuk setiap transformasi dan setiap kombinasi dari ini), jumlah atas semua skor yang menghasilkan kerugian untuk pasangan (I, T)
  • decoding mudah: pilih karakter dengan skor tertinggi untuk setiap langkah waktu, misalnya "HHHHHH-eeeellll-lll - oo ---", membuang karakter duplikat "H-el-lo", membuang kosong "Halo", dan kami sudah selesai.

Untuk mengilustrasikan ini, lihat gambar berikut. Namun dalam konteks pengenalan ucapan, pengenalan teks sama saja. Decoding menghasilkan teks yang sama untuk kedua speaker, meskipun penyelarasan dan posisi karakter berbeda.

masukkan deskripsi gambar di sini

Bacaan lebih lanjut:

Harry
sumber
Agak membingungkan, setidaknya bagi saya, apa yang Anda maksud dengan " teks kebenaran dasar untuk setiap gambar T1, T2, ...". Anda harus mulai dengan menjelaskannya. Juga, itu tidak terlalu jelas, jika Anda tidak terbiasa dengan konsep, apa yang Anda maksud dengan "A Neural Network (NN) menghasilkan skor untuk setiap posisi horizontal yang mungkin (t langkah waktu) dari gambar". Kenapa gambar punya langkah waktu? Singkatnya, beberapa pernyataan awal Anda tampaknya berasumsi bahwa Anda mengetahui beberapa konsep, yang akhirnya dipahami kemudian dalam jawaban yang sama, tetapi, IMHO, Anda harus menjelaskan konsep-konsep ini.
nbro
Terima kasih untuk umpan baliknya. Saya telah menambahkan ilustrasi tentang dataset dan meningkatkan deskripsi. Selanjutnya, istilah waktu-langkah berarti "posisi horisontal" atau koordinat x dalam konteks pengenalan teks. Istilah yang paling mungkin berasal dari pengenalan suara (tugas yang serupa), di mana langkah-waktu mengacu pada posisi waktu dalam sinyal audio.
Harry