Firebase ve ML Kit ile Görsel üzerindeki metinlerin tanınması – CodeLab

Google’ın I/O 18 etkinliğinde Mobil uygulamalar icin ML Kit API’yı duyurmasının ardından, etkinlik sitesinde ML Kit ile alistirmalar yapabileceğimiz ornek projeler duyuruldu. Bu yazıda, ilgimi çeken Recognize text in images with ML Kit for Firebase: iOS codelab alistirmasi uzerinden giderek, yorumlarımı paylasacagim.

Yukarida paylastigim site uzerinden codelab adimlarini takip ettiginizde size Google tarafından hazirlanmis proje klasörünü indirmenizi isteniyor. Klasor içersinde iki adet proje yer alıyor. Ilki final, ikincisi ise starter. Starter proje ile ilerleyip, talimatları adim adim takip edecegiz.

Projeyi indirdikten sonra Xcode 9 ve uzerin versiyonlardan birinde acmalisiniz. Kirimizi ile işaretli ve henüz projede eksik olan GoogleService-Info.plist dosyasını farkedeceksiniz. Bu dosya Firebase ile projemiz arasındaki tanımları içeren dosya olacak. Bu dosyayı oluşturmak ve mobil uygulamamızla birlikte calisacak Firebase projesini oluşturmak icin Firebase Console‘a gidiyoruz ve Proje Ekle ile kendimize ML Kit Codelab adinda bir proje oluşturuyoruz.

Screen Shot 2018-05-19 at 23.36.44

Projemiz icin anasayfa hazırlandıktan sonra, Firebase’i hangi uygulama icin kullanacaksak entegrasyon icin verilen öneriyi takip ediyoruz. Yani bu ekranda iOS seçerek ilerliyoruz.

Screen Shot 2018-05-19 at 23.47.51

Codelab adiminda da yazdigi gibi burada iOS Paket ismi olarak com.google.firebase.codelab.mlkit yaziyoruz ve diger kisimlari boş bırakarak devam ediyoruz.  

Screen Shot 2018-05-20 at 00.02.43

Bu bilgiler sonunda, iOS projemiz icin Firebase ayarlarimizi içeren GoogleService-Info.plist dosyasını indiriyoruz.

Screen Shot 2018-05-20 at 00.11.42.png

Firebase Core kütüphanesi ve ML Kit kütüphanelerini iOS projemize Cocoapods ile alıyoruz. Bilgisayarinizda cocoapods kurulu degilse, sudo gem install cocoapods komutu ile yükleyebilirsiniz.

Screen Shot 2018-05-20 at 00.15.08

Cocoapods yükledikten sonra, terminal uzerinden projenizdeki ana dizinin içerisine gidip, pod init komutunu calistirmalisiniz. Bu komutla birlikte, bulunduğunuz dizinde projenizde kullanacaginiz yani bagimli oldugunuz pod’lari – kütüphanelerini- ekleyeceğiniz bir Podfile oluştuğunu goreceksiniz.

 

 

Screen Shot 2018-05-20 at 00.34.55

Podfile’i herhangi bir text editor ile açıp; use frameworks keywordu sonrasına Firebase Core, ML Vision ve ML Vision Text Model pod’larini almak icin aşağıdaki 3 satırı  ekliyoruz ve pod’lari almak icin yine terminal uzeriden pod install komutunu calistiriyoruz.

Screen Shot 2018-05-20 at 01.55.55
Source : Google

Bu komut tamamlandiginda, starter projemiz ve bagimli oldugumuz pod kütüphanelerini içeren bir workspace dosyası oluşturmuş olacak. xcworkspace uzantılı dosyayi çift tiklayarak Xcode ile açıyoruz.

Screen Shot 2018-05-20 at 02.12.53
pod install komutu sonrası projemizin klasör görünümü

Projemizi yeni bağımlılıkları ile birlikte calistirip seçtiğimiz herhangi bir simülatöre gönderiyoruz.  Scroll uzerinde iki farklı resimi görüntüleyebiliyoruz ve Find Text ve Find Text (Cloud) butonlarının arkasına henüz herhangi bir kod yazmadık.

Screen Shot 2018-05-20 at 11.37.12
Uygulamayi ilk defa simülatöre attigimizda.

Hadi kod yazmaya başlayalım, codelab tutorialinda olduğu gibi öncelikle görüntü üzerindeki metinleri tanımak icin Vision Api içerisinde bulunan VisionTextEditor sinifina ait bir textDetector objesi olusturacagiz. Bunu asagida yeşille işaretlediğim kod bloklarındaki satırları ornek projeye ekleyelim.

 

Screen Shot 2018-05-20 at 14.37.41

Daha sonrasında runTextRecognition metodunu textDetector’umuzun imaj uzerinde calismasini ve tanıdığı metinleri kare icine alması icin kod yazacağız. Imajimizi Vision Api’da yer alan VisionImage sinifindan bir visionImage objesi oluşturup, TextDetector objesine detect etmesi için bu objeyi veriyoruz.

Screen Shot 2018-05-21 at 08.50.31

Detect metodu sonrasında, metod callback’inde bize features ve  hata oluştuysa error değişkenlerini dönüyor ve processResult metodu ile bulunan her bir özelliği/texti VisionTextBlock olarak ele alip, bulunan metni, frame -yer- bilgisini addFrameView kullanarak imajın üzerinde gösteriyoruz.

Screen Shot 2018-05-21 at 08.50.19

Tada! Vision kütüphanesi Find Text dediğimizde bizim icin görüntü uzerinde metinleri cikardi ve bizde sonrasında bunları çerçeve içerisine alıp gösterdik. Screen Shot 2018-05-20 at 15.11.10

Fakat ilk görüntü için deneme yaptigimizda latin alfabesi kullanılmayan kelimeler için sonuç getirmediği / doğru sonuç çıkarmadığını göreceksiniz. Vision API ile cihaz üzerinde latin alfabesiyle sonuçlar üretebileceğiz. Diğer kelimelerin de tanınması için API’in Cloud özelliklerini kullanmalıyız.

Screen Shot 2018-05-21 at 09.29.18Text Recognition – Kelime tanıma – için Cloud tarafında aylık ilk 1000 kelime ücretsiz olacak sekilde kullanım yapabiliyoruz.

Spark Plan‘dan Blaze Plan‘a yani kullandığın kadar ode planına geçerek Vision Api uzerinde denemeler yapmaya baslayabilirsiniz.

Screen Shot 2018-05-22 at 00.07.51

Google Cloud uzerinden Cloud Vision API’yi aktif hale getiriyoruz.

Screen Shot 2018-05-22 at 00.23.29

Gelelim, kod kısmına: Cloud uzerinde kelime tanıma icin bu sefer VisionCloudDocumentTextDetector asagidaki sekilde tanımlıyoruz.

Screen Shot 2018-05-21 at 23.50.56

Cihaz uzerinde calismasi için yazdigimiza benzer bir sekilde detect metodu çağrımını yapıyoruz, bu sefer CloudTextDetector için.

Screen Shot 2018-05-21 at 23.51.22

Cloud uzerinde daha fazla özellik yer aldiginda tanidigi metinleri, paragraflar hatta içerisindeki kelimeler ve semboller olarak tanıyabiliyorsunuz. Asagida bu özelliklere bakarak görüntü uzerine çerçeveler çizen metodu oluşturuyoruz.

Screen Shot 2018-05-21 at 23.50.29

Ve sonuç, beklendiği gibi cihazdaki API kadar hızlı çalışmasa da kelimeleri yakalama açısından oldukça başarılı buldum. Önümüzdeki yazılarda farklı imajlarla karsilastirmali bir uygulama yapmayı düşünüyorum.

Screen Shot 2018-05-22 at 00.34.57.png

ML Kit‘in diger özellikleri ve kullanımlar icin firebase üzerindeki dokümanlardan  yararlanabilirsiniz. Yeni ve daha farklı çalısmalarda görüşmek üzere 👋

WhatsApp Image 2018-05-21 at 23.40.23

 

 

 

Google I/O 18 – Makine Öğrenmesi

Mobil çözümler için yazılım yapsam da bu yıl bir farklılık yapıp, uzmanlık alanımı genişletecek ve mobil uygulamalarla entegre kullanabileceğim diğer teknolojiler icin bir hafta ayırdım. Ve Google I/O 18 etkinliği icin, Firebase ve Machine Learning ağırlıklı bir programı oluşturdum. Sektörün bulut teknolojileri ve yapay zeka odaklı çözümleri içerecek şekilde evrildiğini görmek hiç de zor değil.

Google IO 18 acilis konuşması, beklediğim şekilde Google AI ile başladı. Yapay Zeka’nın diğer Google ürünlerine getirdiği yeniliklere kısaca bakarsak;

Gmail uygulaması, Smart Compose özelliği ile basladiginiz cümleyi hizli bir sekilde bitirebilmenizi saglayacak. Özelliğin hangi dilleri desteklediğini göreceğiz bakalım Türkçe’de olacak mı?

Screen Shot 2018-05-19 at 21.18.11
Source : Google

 

Google Asistan, her seferinde Hey Google ya da Ok Google diye seslenmenize gerek kalmadan, birden çok komutunuza yanıt verebilecek ve sonraki komutlarınızı dinleyebilecek. Google bu özelliğe multiple actions ismini veriyor.

Screen Shot 2018-05-19 at 21.38.32

Robotik seslerden sıkılanlar icin bir güzel haber: Google Asistan AI kullanılarak, vurgu ve tonlamaları ile insan sesine yakin – John Legend’in sesi de dahil olmak üzere – 6 farklı ses seçeneği ile kullanılabilecek. (Google bu tekniği Deep Mind şirketinin çalışması olarak tanıttı.)

Screen Shot 2018-05-19 at 21.46.01

Ayrıca, Asistanınız sizin yerinize arama yaparak, randevu alabilecek! Asistan teknolojisinin arkasında, conversation – iletişimin doğru bir sekilde sürdürülmesi – için AI uygulamaları yapıldığı keynote’da özellikle vurgulandı.

Screen Shot 2018-05-19 at 21.43.22

Mobil uygulama geliştiriciler için güzel haber makine öğrenmesi için ML Kit kütüphanesini duyurdu. Kütüphane içerisinde imaj, kelime, yüz tanıma, barkod okuma, önemli yerlerin tanınması gibi özellikleri barındıracak, ayni zamanda kendi modelleriniz ile de calisabilecek. Google bu hamle ile, yapay zekaya ilgi duyan ancak nereden başlayacağını bilmeyen yazilimcilar icin giriş seviyesinde temel bazı fonksiyonları sundu ve bunu iOS ve Android platform farki gözetmeden yaptı diyebiliriz. Yapay Zeka’ya daha aşina bir yazilimciysaniz ve Cloud’da TensorFlow uzerinde calisan modelleriniz varsa, mobilde modellerinizi TensorFlow Lite modeline dönüştürmek kısaca, modellerin sıkıştırılmış  versiyonunu kullanmanız gerekiyor. Google sonuçların daha hızlı alınabilmesi icin bu yöntemi seçmiş görünüyor.

Önümüzdeki günlerde ML Kit API’yını kullanarak mobilde neler yapabileceğimizi test edebileceğimiz örnek uygulamalar yazmayı planlıyorum.

Tartışmasız ML Kit‘in özelliklerini en güzel gösterebilen uygulama Google Lens. Mağazalar, binalar, objeler hakkında bilgi alabilmek, afişler üzerinden etkinlik bilgisine ulaşmak gibi hayat kolaylaştırıcı özelliklere sahip.

google_lens_dog_1.png
Source: Google

ML Kit, Cloud ürünü olan ve geliştiricilerin hayatını kolaylaştıran Firebase platformunun içerisine eklenmiş olarak tanıtıldı. Firebase’in prediction yani kullanıcı  davranışını görebileceğiz tahminleme araçları vardı. Bununla birlikte konsol üzerinden ML Kit kullanımına başlayabileceğiz. Özellik henüz Beta’da, deneyip yorumlarınızı iletmenizi bekliyor.

Screen Shot 2018-05-19 at 17.38.13

Bir başka, hatta güzel olduğu için sona bıraktığım özellik text-to-speech. Ve bu özellik Türkçe de dahil olmak üzere 12 dil için Google Cloud üzerinden denemeye açıldı. Bu bağlantıdan deneyebilirsiniz.

Screen Shot 2018-05-19 at 17.36.14
Source: Google

Keynote ve I/O’da haftanın geri kalan oturumlarında Google Brain takımının ortaya çıkardığı yapay zeka calışmalarının diğer Google ürünleri ve teknolojilerini nasıl daha iyi yaptığı üzerine bir çok konuşma yapıldı. Yapay Zeka ile ilgili çok daha kapsamlı ve daha hızlı gelişmeler olacağı kesin. ML Kit ile birlikte ortaya çıkacak yeni ürünleri ve uygulamaları merakla bekliyoruz.
Dc35d6LUwAADXVu.jpg-large

Yeni yazılarda ML Kit incelemesiyle görüşmek üzere 👋