← Projelere dön

Derin Öğrenme

ScribbleMind

Tek bir fotoğraftan el yazısını okuyup kimin yazdığını belirleme

El yazısıyla yazılmış bir kelimeyi analiz eden ScribbleMind arayüzü. Ham sinir ağı çıktısı "eecisionn", altındaki yazım düzeltmeli sonuç ise "decision".
  • Yayında

    Durum

    Tarayıcıda kullanılabilir durumda

  • CRNN + ResNet-18

    Mimari

  • 5

    Yazar sınıfı

Genel Bakış

ScribbleMind, el yazısının fotoğrafını alıp aynı anda iki soruyu yanıtlıyor: ne yazıyor ve bu kimin el yazısı? İkisi de tek bir yüklemeden çalışıyor — telefon kamerası, web kamerası ya da dosya — ve iki modeli ayrı ayrı veya birlikte sunan bir FastAPI arka ucundan geçiyor.

Proje yayında ve şu anda kullanılabilir. Arayüzde beş hazır örnek görsel var; denemek için kendi el yazına ihtiyacın yok, tek tıklama yetiyor.

Bu iki yarı aslında farklı problemler. Metne dökme bir dizi problemi: girdi de çıktı da değişken uzunlukta ve aralarında hizalama yok. Stil tanıma ise düz bir görüntü sınıflandırma işi. İkisini ayrı çözüp sonuçları API katmanında birleştirmek her iki modeli de basit tuttu.

Yaklaşım

Metne dökme için CRNN kullanıldı: görüntüyü okuyan evrişimli katmanlar, ardından ortaya çıkan öznitelik dizisi üzerinde yinelemeli katmanlar. Eğitim CTC kaybıyla yapıldığı için modelin karakter düzeyinde hizalama etiketine hiç ihtiyacı olmuyor. Çözümlemede açgözlü argmax yerine CTC ışın araması, ardından da trigram tabanlı bir yazım düzeltme adımı var. Bu son adım kulağa geldiğinden daha önemli: model görsel olarak benzer karakterleri düzenli biçimde karıştırıyor ve hello wor1d yalnızca bağlamdan hello world hâline geliyor.

İki farklı girdi boyutu için iki ayrı ağırlık kümesi var — tam satırlar için 512×32, tek kelimeler için 128×32 — çünkü satır uzunluğundaki dizilerle eğitilen bir model tek kelimede belirgin biçimde kötüleşiyor.

Stil tanıma, beş yazar/yazı tipi ailesi üzerinde — Caveat, Courier, Lobster, Merriweather ve Roboto — ince ayar yapılmış bir ResNet-18. Eğitim kümesi toplanmadı, üretildi: bir metin derlemi her yazı tipiyle görüntüye dönüştürüldü, sonra döndürme, perspektif kaydırma, bulanıklaştırma ve gürültüyle çoğaltıldı. Böylece sınıflandırıcı temiz harfleri ezberlemek yerine kalem darbesinin biçimini öğreniyor.

Ön işleme ise çalışan ile çalışmayan arasındaki fark oldu. Kâğıt fotoğraflarında temiz taramalarla eğitilmiş bir modeli bozan gölgeler ve dengesiz aydınlatma var. Sabit bir eşik yerine, işlem hattı parlaklık değerlerinin 90. yüzdeliğini kullanarak beyaz noktayı geriyor: bu, arka planı ve gölgeyi temizlerken silik kurşun kalem izlerini koruyor — naif bir eşikleme onları gürültüyle birlikte siliyor.

Neyi farklı yapardım

Sınıflandırıcı tamamen üretilmiş yazı tipleriyle eğitildi, yani eğitim sırasında hiç gerçek el yazısı görmedi. Fotoğraflanmış yazıya beklediğimden daha iyi genelliyor; ama dürüst sınav, eğitim kümesinde bulunmayan kişilerden alınmış gerçek el yazılarından oluşan ayrı bir test kümesi ve çalıştığını iddia etmeden önce görmek isteyeceğim sayı da bu.