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

 

 

 

Advertisements

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 👋

3000km & 11 günde Batı Avrupa Turu ✌️

İlk durak Amsterdam! (1. ve 2. gün)

Amsterdamdaki ilk günümüzde, gezmeye yakın bir mesafede oldugumuz Rijskmuseum alanından başladık. Müze binasının içerisinden geçen yolda bisikletlilere ezilmeden ve sokakta yapılan müzikleri dinleyerek geçtik. Yolun devamında önümüzde I amsterdam işaretini ve arkasında alabildiğine yeşil bir dinlenme alanının yanında yer alan Mocco müzesi ve Van Gogh müzesini gördük.

Yolculuğa başlarken her şehir için bir önemli müze kararımız bizi Van Gogh müzesini giriş kapısına götürdü, eğer gidecekseniz öncesinde müzenin alışveriş mağazasına uğramayı unutmayın. Mağazada alışveriş yaparken bir saat sonrasında bilet bulup müzenin internet sitesinden aldık. Biletinizi internet sitesinden almanızı öneririm. Biz internetten bilet alabilirken gişedeki görevli bugünkü biletlerin satıldığını söylüyordu.

Hollanda peynirleri ve bir o kadar da güzel ekmek ve sandviçleri ile ünlü, müze ziyaret saatimizin gelmesini beklerken Albert Heijn’a uğrayıp sandviç ve meyvelerimizi aldık. Süpermarketin tek kötü yanı Master ve Visa card ile ödeme kabul etmemeleri, varsa Maestro kart ile ödeme yapmanız gerekiyor :/

Screen Shot 2018-05-03 at 13.33.06

Van Gogh müzesinde 1 – 1,5 saatte rahatça gezebilirsiniz. Müze çıkışı müzenin hemen yakınındaki VondelPark‘a geçtik ve havanın güzel olduğu günlerde diğer Hollandalıların yaptığı gibi, çimlere serilip piknik yapıp, arkadaşlarımızla sohbet edip güneşlendik.Read More »

2017 – İyisiyle Kötüsüyle

Ocak – Şubat  2017’de yılın ilk ayları yeni yaşam düzenime alışmak ve yeni insanlar tanımakla geçti. Fırsat buldukça şiirlerle, denizle ve doğayla iç içe olmaya çalıştım.

18161735_418830315157851_3646747814957940736_n

Mart – WTM İstanbul 2017’yi düzenledik.. Bundan 4 yıl önceki konferansta Elif’le aynı şekilde bir fotoğrafımız var 🙂 Ancak bu sefer organize eden ekipteyiz.

IMG_1771.JPG

Mayıs – Google I/O 17

Google’ın San Francisco’da düzenlediği ve bütün bir yılı etkisi altına alacak teknolojilerini tanıttığı Google I/O konferansına katılma şansını elde ettim. Etkinlik öncesinde dünyanın dört bir yanından GDG’lerin katıldığı summit öncesi partide, şu aşağıda gördüğünüz yaramaz bisikletle Google kampüsünde kaza yaptım.

18812180_1693808237580165_6226996941843070976_n

Amerika sağlık sistemini de tanımış oldum diyerek, hiç moral bozmadan bir hafta tüm etkinliklere katıldım. Döndükten sonra ağrı kesici almaktan yorulup, MR sonrası menisküs ameliyatı olmak zorunda olduğumu ve kemiğimin çatladığını öğrendim. Ama oradayken başıma gelen bu olayın seyahatime gölge düşürmesine izin vermedim 🙂

Burcu Geneci - SF Google IO

Haziran – After I/O 2017 etkinliği – Kotlin sunumum

Her ne kadar bir 15 gün önce ameliyat olmuş da olsam, koltuk değneklerini atıp, aşağıda gördüğünüz sahneye çıktık. I/O etkinliğinden tanışıp, çok sevdiğim Kotlin üzerine İstanbulda sunum yaptım ve gerçekten ilgili bir dinleyici topluluğuna bu sunumu yapmak beni çok mutlu etti.

DSC_0032 (1)

 

Temmuz

2017 zor bir yıldı, hastalıklarla boğuştuğum bir yıl oldu. Geriye dönüp baktığımda onca şeyden öte, bana kattığı en güzel şey alttaki fotoğrafta yanımda gördüğünüz bu güzel insan. İyi ki seni tanıdım. Sen olmasan, bir eksik olurdu. İyi varsın.

20582971_497491277266257_1013299681251295232_n

Ağustos – WTM Summit için Beiruttaydık. Türkiye bölgesinden bir çok WTM lead’in katıldığı etkinlikte. I’m Remarkable ve networking toplantılarını oldukça başarılı buldum. Beirut’a gitmişken kordon kısmında yürüyüş yapmayı, Yasak bölgelerde, soldaki gibi güzel resimleri çekmeyi ihmal etmedik 🙂

 

Eylül

Yazılımcı Salı’sı Eylül ayında benimle yaptıkları röportajı yayınladı. Yoğun iş temposu ve koşuşturmacada, insan hayatta bazen nerede olduğunu, neler yaptığını ve genç insanlara tecrübelerini aktarmayı atlayabiliyor. Bu blogun çıkış sebebi, paylaşmak ve aktarmak da olsa bazen ihmal edebiliyorum. Bu yıl blogumu biraz ihmal ettiğimi söyleyebilirim. Ancak bu röportaj ve beni çok güzel özetleyen bir ürün oldu. HdTeknoHaber ailesine teşekkürler..

Burcu_Geneci-yazilimic-salisi-1068x604

Ekim – Bir konferansta ilk defa konuşma yaptım! 🎙 ve konuşmam aşağıdaki Kotlin Talks listesinde globalde yer aldı. Yapılan diğer konuşmalar ve listeyi şurada bulabilirsiniz. Kotlin üzerine konuşma yaptıysanız ya da yapacaksanız, siteden konuşmanızı register etmenizi öneririm. Community katkınız nedeniyle Jetbrains’ten konuşmacı tshirt’ü ve dinleyicileriniz için sticker hediyeleriniz ise üstüne kaymağı oluyor 🤓
Screen Shot 2017-12-28 at 00.12.49

gdg_konusma

first_talk
İlk konferans konuşmam 🙂
first_talk_gdg_eskişehir
Herşey dostlarla yapınca daha bir güzel.

Ekim – Yeni eve taşınma 🙂 Nazlı’yla aşağıdaki güzel kahvaltıları hazırladığımız yeni evimize taşındık. Daha evimizde ağırlayamadığımız bir sürü arkadaşımız var, herkesi birer birer misafir etmeye çalışıyoruz. Çok huzurlu bir eve taşındığımız için çok mutluyum 🙂

IMG_6109

Kasım – Firebase Dev Summit ve yakın arkadaş ziyareti 🙂 

O güzel yürekli insanlar Sinan ve Ceren, şu an Amsterdam’dalar ve evlerinde bizleri çok güzel ağırladılar. Amsterdam’a daha önceden defalarca gitmiş olsam da bu gezi beni daha bir oralı gibi hissettirdi. Amsterdam’da daha önce hiç bu kadar eğlenmemiştim 🙂

amsterdam

Kasım – GDG Istanbul ailesi olarak Devfest Istanbul 2017’yi düzenlendik.

Bu kadar iyi, yetenekli, özverili, mesleğini / teknolojiyi yardımlaşmayı seven insanların arasında olmak çok güzel. Yaklaşık 1 yıl önce ekibe dahil olmama rağmen, en yakın arkadaş grubum oldular. Birbirine böylesine destek olan ve böylesine uyumlu bir gruba dahil olmamıştım. İyi ki varsınız GDG’ler… (Solda Bff Alp✌️)

gdg_devfest_2017

Aralık: Tekirdağ Devfest 2017‘de yılın benim için son konuşmasını yaptım.

Doğum günü 🎂 – NSAhmet ve benim doğum günümü Aralık Aylık etkinliğinden sonra hep birlikte kutladık. 🙂

doğum_günü

Ve yeni yıl yeni beklentiler…

2017 çok fazla sağlık sorunları ile savaştığım bir yıl oldu, savaşım halen de devam ediyor. 2018 daha enerjik olduğum ve daha fazlasına cesaret edip yaptığım bir yıl olacak biliyorum. Çünkü şimdiden başladım. Geçen yılın eksikleri sağlık sorunları nedeniyle sporu ihmal etmem, rutinimi bozmam oldu. Bu yıla girerken, yüzme sporunu tekrar hayatıma aldım, şu ameliyattan sonra aldığım fazlalıkları verirsem de tamam olur. 🙂

Teknik konuşmalar yapmaya başlamam bir artı, ancak blogumu ihmal ettiğim için de mutsuzum. Bu nedenle 2018’te daha fazla teknik yazıyla bu blogda karşınız da olacağım.

2018 sana bol cesaretle geliyorum. Bakalım neler olacak… 2017 verdiğin herşey için minnettarım, hoşçakal.. 🖐

807D9102-3F29-47D6-8438-D7F5FB6E1CA1

Kotlin’e Merhaba!

Google I/O 17’de Kotlin’in Android platformu için resmi dil olarak ilan edilmesinden sonra, eğer daha önce inceleme fırsatı bulamadıysanız, Kotlin dilini incelemenin zamanıdır diye düşünüyorum. Bu yazıda, Kotlin’de genel konseptleri ve çalışma mantığını ele almak istiyorum.

Önce, biraz genel bilgiyle başlayalım, sanıldığının aksine son 1-2 yıldır ismini duyuyor olsak da Kotlin 6 yıllık bir geçmişe sahip. Android Studio’nun üzerine kurulduğu platform IntelliJ Idea’nın da kurucusu olan Jetbrains ekibinin geliştirdiği bir dil.

Java gibi JVM üzerinde çalışan bir dil olması sebebiyle Java ile birlikte aynı projede uyum sorunu yaşamadan geliştirme yapabilirsiniz. Aynı zamanda Google ve Jetbrains ekipleri Kotlin kullanımına destek vermek için hazır ve açıklar. Kotlin’in geliştirilmesi için hali hazırda bir komünite oluşturulmuş durumda, geliştiricilerin dahil olmalarını ve kendilerini bu konuda daha çok geliştirmelerini istiyorlar.

Geleneklere sadık kalıp, Kotlin’de çalışabildiğimizi gösteren Hello World örneği ile başlayalım.Read More »

WWDC 17 Keynote, Apple teknolojileri hayatımıza ne getirecek?

Apple WWDC geliştirici konferansında, her yıl olduğu gibi bu yılda keynote’da, yeni Apple teknolojileri, işletim sistemlerindeki değişiklikler ve ürünlere gelen yeni özellikler kısaca tanıtıldı.

5K iMac Pro ve Yeni Özellikleri

IMG_3847

IMG_3848

5K iMac Pro aynı zamanda Space Black renk seçeneğiyle ve güçlü işlemcisiyle birlikte geliyor. Mac için yeni işletim sistemi macOS High Sierra olarak tanıtıldı.

Şüphesiz, iPhone kullanıcılarının beklediği yeni işletim sistemi iOS 11

IMG_3859

iOS11’de ilk göze çarpan yeni “Control Center” yani kontrol merkezi, artık kontrol merkezi full ekran ve 3d touch ile menüdeki ayarların daha da derinine inmeniz mümkün. Örneğin müzik üzerinde 3d touch yaptığınızda, pick and pop’la daha detaylı bir ekranı müzik player açıyorsunuz. Diğer bir önemli UX değişikliği ise “Lock Screen” ile “Notification Center”‘ın aynı ekranda olması, kilit ekranında varsa ilk bildirim gösterilecek ve bounce edildiğinde ise diğer bildirimlere ulaşılabilecek.Read More »

What did I experience at Google I/O 17? What are the news?

This year, I had a chance to attend Google I/O. I think it’s a double chance considering that I’m a part of a great community, Google Developer Groups in Istanbul Chapter,Turkey. I’m very proud of it..

Google I/O is kind of like Geek Festival which fed developers with new tech sessions, codelabs and demonstrations of cool projects. And it’s great opportunity to bring GDG members together all around the world and strengthen community spirit.

That was a fruitful week for tech lovers. So, what are the highlights?Read More »