Hafta Sonu Projesi Olarak: Nesneleri Tanıyan Yapay Zeka Uygulaması
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;
- Apple’ın CoreML dokümantasyon sayfası
- Apple’ın sunduğu modeller ve makine öğrenmesi sayfası
- CoreML için kullanılabilecek modeller
Kendi Modelimizi Eğitmek İçin;
- Modelinizi CoreML modeline nasıl dönüştürebileceğinizi anlatan Apple web sayfası
- Model dönüştürücü: Apache MXNet
- Model dönüştürücü: Tensor Flow
- Özel model eğitmenize yardımcı araç: Turi Create
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.
Kırmızı dairenin içindeki -> ikonuna tıkladığımızda modelimizin kod sayfası açılıyor.
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.