Bağlantıcı Zamansal Sınıflandırma (CTC) nedir?


15

Optik karakter tanıma (OCR) projesi yapmak istiyorum. Biraz araştırma yaptıktan sonra ilginç görünen bir mimari ile karşılaştım: CNN + RNN + CTC. Kıvrık sinir ağları (CNN) ve tekrarlayan sinir ağları (RNN) hakkında bilgi sahibiyim, ancak Bağlantıcı Geçici Sınıflandırma (CTC) nedir? Layman'ın terimleriyle bir açıklama istiyorum.


3
Kaynak belgeyi okumanızı tavsiye ederim: Graves, et al. (2006) Bağlantıcı Zamansal Sınıflandırma: Tekrarlanmamış Sinir Ağları ile Bölümlenmemiş Sekans Verilerinin Etiketlenmesi , 23. Uluslararası Makine Öğrenimi Konferansı ( pdf ).
neo li

Yanıtlar:


28

Aşağıdakileri içeren bir veri kümeniz var:

  • görüntüleri I1, I2, ...
  • zemin gerçeği metinleri T1, T2, ... görüntüler için I1, I2, ...

Böylece veri kümeniz şöyle görünebilir:

resim açıklamasını buraya girin

Bir Sinir Ağı (NN) , görüntünün olası her yatay konumu (genellikle literatürde zaman adımı t olarak adlandırılır) için bir puan verir . Bu, genişliği 2 (t0, t1) ve 2 olası karakteri ("a", "b") olan bir resim için şöyle görünür:

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

Böyle bir NN'yi eğitmek için, zemin gerçeği metninin bir karakterinin görüntüde nereye yerleştirileceğini her görüntü için belirtmelisiniz. Örnek olarak, "Merhaba" metnini içeren bir resim düşünün. Şimdi "H" nin nerede başlayıp biteceğini belirtmelisiniz (örn. "H" 10. pikselde başlar ve 25. piksele kadar gider). Aynı "e", "l, ... Bu sıkıcı geliyor ve büyük veri kümeleri için zor bir iş.

Tam bir veri kümesine bu şekilde açıklama ekleseniz bile başka bir sorun daha vardır. NN, her bir zaman adımında her bir karakterin puanlarını verir, bir oyuncak örneği için yukarıda gösterdiğim tabloya bakın. Artık zaman adımı başına en olası karakteri alabiliriz, bu oyuncak örneğinde "b" ve "a" dır. Şimdi daha büyük bir metin düşünün, örneğin "Merhaba". Yazarın yatay konumda çok yer kaplayan bir yazma stili varsa, her karakter birden fazla zaman adımını işgal eder. Zaman adımı başına en olası karakteri alarak, bu bize "HHHHHHHHeeeellllllllloooo" gibi bir metin verebilir. Bu metni nasıl doğru çıktıya dönüştürmeliyiz? Her yinelenen karakter kaldırılsın mı? Bu doğru olmayan "Helo" verir. Bu yüzden, biraz zekice işlemeye ihtiyacımız olacak.

CTC her iki sorunu da çözer:

  • CTC kaybını kullanarak bir karakterin hangi konumda meydana geldiğini belirtmek zorunda kalmadan ağı çiftlerden (I, T) eğitebilirsiniz
  • CTC kod çözücüsü NN çıkışını son metne dönüştürdüğü için çıktıyı sonradan işlemek zorunda değilsiniz

Bu nasıl başarılır?

  • Belirli bir zaman adımında hiçbir karakterin görülmediğini belirtmek için özel bir karakter (CTC boş, bu metinde "-" ile gösterilir)
  • CTC boşlukları ekleyerek ve karakterleri mümkün olan her şekilde tekrarlayarak temel doğruluk metnini T'den T 'ye değiştirin
  • görüntüyü biliyoruz, metni biliyoruz, ancak metnin nereye yerleştirildiğini bilmiyoruz. Şimdi, "Merhaba ----", "-Hi ---", "-Hi--" metninin tüm olası konumlarını deneyelim ...
  • biz de her karakterin görüntüde ne kadar yer kapladığını bilmiyoruz. Öyleyse karakterlerin "HHi ----", "HHHi ---", "HHHHi--" gibi tekrarlamalarına izin vererek olası tüm hizalamaları deneyelim.
  • burada bir problem görüyor musun? Tabii ki, bir karakterin birden çok kez tekrarlanmasına izin verirsek , "Merhaba" daki "l" gibi gerçek yinelenen karakterleri nasıl ele alırız ? Eh, bu durumlarda arasına her zaman boşluk koyun, yani "Hel-lo" veya "Heeellll ------- llo"
  • olası her T 'için skoru hesaplayın (her bir dönüşüm ve bunların her kombinasyonu için), çift için kayıp veren (I, T) tüm puanları toplayın
  • kod çözme kolaydır: her zaman adımı için en yüksek puanı alan karakteri seçin, örneğin "HHHHHH-eeeellll-lll - oo ---", yinelenen karakterleri "H-el-lo" atın, boşlukları "Merhaba" atın ve biz yapılır.

Bunu göstermek için aşağıdaki resme bir göz atın. Konuşma tanıma bağlamındadır, ancak metin tanıma aynıdır. Kodlama, karakterin hizalaması ve konumu farklı olsa da, her iki hoparlör için aynı metni verir.

resim açıklamasını buraya girin

Daha fazla okuma:


En azından benim için başlangıçta " T1, T2, ... her görüntü için gerçek gerçeği metni " ile kastettiğin biraz kafa karıştırıcı . Bunu açıklayarak başlamalısın. Ayrıca, kavramlara aşina değilseniz, "Sinir Ağı (NN) ile kastettiğiniz, görüntünün olası her yatay konumu (zaman adımı t) için bir puan verir" çok net değildir. Nasıl bir görüntü zaman adımları var? Özet olarak, ilk ifadelerinizden bazıları, sonunda aynı cevapta anlaşılacak olan birkaç kavramın farkında olduğunuzu varsayıyor gibi görünmektedir, ancak IMHO, bu kavramları açıklığa kavuşturmalısınız.
nbro

Geri dönüşünüz için teşekkür ederiz. Veri kümesi hakkında bir örnek ekledim ve açıklamayı geliştirdim. Ayrıca, zaman adımı terimi, metin tanıma bağlamında "yatay konum" veya x-koordinatı anlamına gelir. Büyük olasılıkla, zaman adımı ses sinyalindeki zamandaki konumu ifade eden konuşma tanıma (benzer bir görev) kaynaklıdır.
Harry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.