Hafta Sonu Projesi Olarak: Nesneleri Tanıyan Yapay Zeka Uygulaması

Ümit Bozkurt
1 : 0
Published in
3 min readJan 29, 2018

Uzun süredir Swift’in popüler kütüphanesi CoreML ile ilgilenmek ve nasıl çalıştığını görmek/öğrenmek istiyordum. Nihayet, bu hafta sonu Celil Bozkurt ile ufak bir CoreML projesi geliştirme imkanı bulduk. Geliştirdiğimiz bu basit proje, fotoğrafını çektiğiniz nesneyi tanıyan bir mobil uygulama.

Bu yazıda hem projenin teknik altyapısından hem de yeni başlayanlar için CoreML’in ne olduğundan bahsedeceğim.

Let’s start! 💥

CoreML Nedir?

CoreML, Apple’ın WWDC’17 de tanıttığı bir framework. Yazdığımız uygulamarda eğitilmiş makine öğrenmesi algoritmalarını kullanmamızı kolaylaştırıyor.

Eğitilmiş makine öğrenmesi algoritması nedir?

Aşağıdaki görselde görüldüğü gibi makine öğrenmesi algoritmasının, herhangi bir konudaki data setleriyle eğitilmiş haline “model” deniyor. Apple, hazır olan modelleri CoreML modeline dönüştürmemiz için bazı araçlar sunuyor. Ayrıca halihazırda CoreML modeline dönüştürülmüş modelleri de Xcode’da kullanabiliriz.

CoreML sayesinde yapmamız gereken sadece analiz ettirmek istediğimiz veriyi modele gönderip tahminler ve sonuçlar almak.

CoreML ile bir görüntüde baskın nesneyi bulabilir, o nesneyi sınıflandırabilir, insanların cinsiyetini tespit edebilir, insanların ifadelerindeki duyguları tespit edebilir, insanlar için yaş tahminleri alabilir, fotoğrafları farklı stillere dönüştürebilir, cümlelerdeki baskın duyguyu tespit edebilir, videolarda nesne takibi ve daha bir çok şeyi kolayca yapabilirsiniz.

Yapmak istediğinize karar verdikten sonra, o işi yapan model bulmanız gerekiyor. Apple’ın bize sunduğu bazı modeller mevcut. Ayrıca, farklı kaynaklardan CoreML’e uyarlanmış modeller bulabiliriz.

CoreML İçin Kullanılabilecek Kaynaklar;

Kendi Modelimizi Eğitmek İçin;

Geliştirdiğimiz Proje

Yazdığımız örnek proje oldukça basit. Uygulamayı açıp herhangi bir nesnenin fotoğrafını çekiyorsunuz. Uygulama içerisindeki yapay zeka fotoğrafını çektiğiniz nesneyi bize string olarak döndürüyor.

Öncelikle modeli kurarak başlıyoruz. Biz bu proje için MobileNet adlı modeli kullandık.

Xcode’da projeyi oluşturduktan sonra modeli sürükle bırakla projeye ekliyoruz. Xcode’da modelin üzerine tıklayınca kullandığımız modelin bilgileri açılıyor. Bu ekran üzerinden modelin input ve output datalarını inceleyebiliriz.

Model Dosyasının XCode’daki Görünümü

Kırmızı dairenin içindeki -> ikonuna tıkladığımızda modelimizin kod sayfası açılıyor.

Model’in Swift Görünümü

Modeli projeye ekledikten sonra ViewController’ımız içerisinde model nesnesini oluşturuyoruz.

Modelin sonucu daha hızlı döndürmesi için boyutlandırmakta fayda var. Ayrıca bu aşamada fotoğrafı CVPixelBuffer’a döndürüyoruz. Bunun için kullandığımız Extension;

Elimizdeki image’ı pixelBuffer methodundan geçirdikten sonra yapay zeka algoritmamızın bulunduğu defineImage methoduda gönderiyoruz.

defineImage, model.prediction fonksiyonuna image’ı gönderiyor ve gelen sonucu prediction değişkenine atıyor.

possibility değişkenine olasılıklar arasından en büyük olanını atıyoruz. Fotoğraftaki nesnenin adını ve olasılığını ise ekrandaki label’a yazdırıyoruz.

Veee sonuç ⚡️

Projenin kaynak koduna GitHub üzerinden ulaşabilirsiniz.

Vakit ayırıp okuduğunuz için teşekkür ederim. Bu yazı ve CoreML ile ilgili geri bildirimlerinizi hi@celil.me ve iletisim@umitbozkurt.com.tr adreslerinden bize ulaştırabilirsiniz.

Görüşmek üzere.

--

--