Apple Turi ML Kütüphanesi ile Görüntü Tanıma Uygulaması Geliştirmek

Furkan OZOGLU
Sep 8, 2018 · 5 min read

Merhaba, bu yazıda sizlere makine öğrenmesi kütüphanesi olan Turi’nin kullanımını bir örnek üzerinden anlatacağım. Sonrasında ise bu sistemden elde ettiğimiz modelin bir iOS uygulamasındaki kullanımını göstereceğim ama öncesinde sizlere Turi hakkında kısaca bilgi vermek istiyorum.

Apple 2016 yılında Turi yapay zeka & makine öğrenmesi teknolojileri sağlayan firmayı satın aldı. Sonrasında ise Apple Core ML Kütüphanesine entegre olan .mlmodel formatında çıktı alabilceğimiz bir araç haline geldi. Peki Core ML nedir ? Apple ürünlerinde kullanılan bir makine öğrenme çatısıdır. 2018 Haziran ayındaki Apple geliştirici etkinliğinde (WWDC18) 2. versiyonu tanıtılmıştır.

Turi yapay zeka & makine öğrenmesi çatısı

Turi, nesne algılaması, resim sınıflandırma, regresyon, kümeleme, yazı sınıflandırma gibi işleri yapabileceğiniz bir kütüphanedir. Turi’ye ek olarak IBM Watson gibi kod yazmadan makine öğrenmesini uygulayacağımız ve model olarak indirebileceğimiz sistemler de mevcut. Belki başka bir yazıda bu sistemlerden bahsedebiliriz.

Turi’nin avantajı eğer bir iOS, MacOS, tvOS uygulaması geliştiriyorsanız, Core ML ile uyumlu olarak modellerinizi çıktısını alıp uygulamanıza entegre edebilirsiniz.


Veri Kümesinin Hazırlanması

Ben bu yazıda uygulama yapmak için Google görselden 3 farklı enstrumanın (Gitar, Piyano, Bateri) fotoğraflarını indirdim (Google Chrome eklentisi olan Fatkun ile toplu olarak indirildi.) ve hepsini 100'er adet olacak şekilde hazırladım. En son elde edilen klasör yapısı aşağıdaki resimdeki gibi oldu.

Veri Seti Klasör Yapısı (Her enstruman için 100 fotoğraf)
Örnek Gitar Veri Seti

Kurulum

Verilerimiz hazırlandıktan sonra Turi ve Python 3.6 bilgisayarınıza kurmamız gerekmektedir. Bu kurulum işlemleri farklılık gösterebilir. Benim uyguladığım yöntem PyCharm programı ile direk projeye ortamınına ekledim. Görseldeki gibi direk olarak indirip kurabilirsiniz.

(Not: Bu anlatım macOS işletim sistemi üzerinden anlatılmaktadır. Kendi sayfasında, Linux (with glibc 2.12+) ve Windows 10 (via WSL) ile çalıştığı yazmakta ama denemedim. Ayrıca MacOS işletim sistemi haricinde .mlmodel formatında çıktı alınamayabilir. Çıktı almak için yine MacOS işletim sistemli bir cihazda uygulamanız gerekebilir.)

Github Linki:


Eğitim

Kurulumları tamanlandıktan sonra verilerimizi eğiteceğimiz ve bunları model halinde çıktı alabileceğimiz kodlarımızı yazmaya başlayalım. Bunun için 2 ayrı Python dosyası oluşturuyorum. İsimleri turi.py, turi_train.py olsun.

Burada dikkat edeceğimiz nokta çalışma alanımızın dosya yolunu doğru olarak vermek ve çıktıları yine doğru klasöre yazdırmak.

- turi.py

- turi_train.py

Burada yaptığımız önemli noktalardan birisi verilerimizin etiketlemesini dosya isminden yararlanarak yapmamızdır. Böylece pratik bir etiketleme uygulamış oluyoruz. İşlem tamamlandıktan sonra turi.py ile elde edilen etiketli verimizin ön izlemesi şekildeki gibi görünmektedir.

turi_train.py dosyasının 3. aşamasında aşağıdaki şekilde yazılmıştır. Bu şekilde model sınıflandırması yapılırsa Pretrained Model (Önceden eğitilmiş) olarak Resnet-50 modelini kullanacaktır. Biz de çalışmamızda bu şekilde kullandık. Ancak bu modelin dosya boyutu ~90mb olacaktır. Bu noktada Turi bize alternatif olarak boyutu ~4.7mb olan Squeezenet_v1.1 modelini seçme imkanı vermektedir. Ancak bu model Resnet-50 mimarisine göre doğruluğu daha düşük olacaktır. 3. Adım için aşağıdaki değişikleri uygulayabilirsiniz. Elde edilen sonuçları karşılaştırabilirsiniz.


Test & Model

Bu çalışmada yukarıdaki 2. adım olan veriyi rastgele olarak %80 eğitim %20 test için kullanılmıştır. Sonuçlar aşağıdaki görseldeki gibidir. Oluşturulan çıktı modelimizin adı : instruments.mlmodel şeklindedir. Bu model dosyasını iOS uygulamasında kullanacağız.

Eğitim işlemi tamamlandıktan sonra iterasyon sonuçları ve doğruluk (Accuracy) başarı ölçütü değerleri log’lara aşağıdaki görseldeki gibi yazdırılmıştır. Hazırlamış olduğumuz veri setinde doğruluk oldukça yüksek çıkmıştır ve 1 iterasyonla eğitim işlemi tamamlamıştır. Farklı veri setinde farklı iterasyon sayıları oluşabiliyor. Bu durum biraz da elimizdeki resim sayısı ile ilgilidir.

Hem model hem de .mlmodel dosyası proje klasöründe üretilmiştir. Artık model dosyasını bir iOS uygulamasında kullanabiliriz.


iOS Uygulaması

Yazının çok uzun olmaması için sıfırdan bir iOS projesi geliştirmek yerine örnek bir iOS projesi üzerinden modelin kullanımı aşağıda adımlar halinde anlatılmıştır. Bu projeyi de GitHub üzerinden paylaşıyorum.

Bu işlemler için MacOS X işletim sistemine sahip bir bilgisayara sahip olunması ve xCode yazılımının bilgisayarınızda kurulu olması gerekmektedir.

Eğer kendi veri setinizi uygulama üzerinde kullanmak isterseniz. Aşağıda anlatılan adımları örnek proje üzerinde düzenleyebilirisiniz.

https://github.com/fozoglu/instrument-recognition

Adımlar;

  • Turi ile oluşturduğumuz instruments.mlmodel dosyasını projemize ekliyoruz.
  • ViewController.swift‘de 16. satırına modelimizin değişkenini tanımlıyoruz.
  • ViewController.swift‘de 25. satırına modelimizi oluşturuyoruz.
  • ViewController.swift’de 94. satırına modelimizin etiket (label) sütunun ismini veriyoruz. (Sonucu label’a yazıdırmak için.)
xCode
iOS projesinin xCode dosya görünümü

Yazımı buraya kadar okuduğunuz için teşekkür ederim :) Umarım yazımı beğenmişsinizdir. Yazıda anlaşılmayan ya da hatalı gördüğünüz kısımları belirtirseniz sevinirim.

Sorularınızı https://sorucevap.deeplearningturkiye.com/c/donanim-bulut/ios adresinden soru&cevap sitemizde IOS kategorisi altında sorabilirsiniz.

İyi çalışmalar.

Alternatif Kaynaklar

Deep Learning Türkiye

Türkiye'nin En Büyük Yapay Zeka Topluluğu tarafından yapay zekanın alt dalları olan makine öğrenmesi ve derin öğrenme alanlarındaki Türkiye'den üretilen içerikleri bulabilirsiniz.

Furkan OZOGLU

Written by

Deep Learning Türkiye

Türkiye'nin En Büyük Yapay Zeka Topluluğu tarafından yapay zekanın alt dalları olan makine öğrenmesi ve derin öğrenme alanlarındaki Türkiye'den üretilen içerikleri bulabilirsiniz.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade