• Twitter
  • Instagram
  • slack-icon-black_edited_edited_edited
  • development_düzenlendi_düzenlendi
  • Gri LinkedIn Simge

© 2020 by mobiler.dev

iOS CoreML ve Vision ile Image Recognition


Hedef

Machine Learning'i, Core ML kütüphanesini ve Vision yapısını kullanarak örnek bir fotoğraf tanımlama uygulaması yapmak.


Öncelikle galeriden fotoğraf seçimi sağlayan starter projeyi buradan indirmelisiniz.

Basit şekilde uygulama ile kullanıcıya galeriden bir fotograf seçtirip, bu fotoğrafın içeriğini ekranın altında bulunan alana yazdıracağız.


Machine Learning Nedir?

Machine Learning, Türkçe olarak "Makine Öğrenmesi" sonuç odaklı bir teknolojidir. Yani Machine Learning'i kullandığınız zaman size bir sonuç verecektir. Bu sonucun doğruluğunun kontrol edilmesi gerekiyor. Machine Learning'in alt kümesi olan Deep Learning ise sonucun doğru ya da yanlış olduğunu denetliyor. Fakat Deep Learning için büyük veri ve bir nöral ağ gerekmektedir. Machine Learning ise bir yapay zeka uygulamasıdır. Machine Learning internet üzerinde herhangi veriye ihtiyaç duymaz.

"Machine Learning belirli modelleri kullanarak, veri yorumlayarak en uygun sonucu veren yapay zeka uygulamasıdır."
Milyonlarca olasılık tek sonuç :)

iOS ve Core ML kütüphanesi

Machine Learning verinin işlenmesi ile bilgi elde edilir. Ardından bu bilgi ile tahminleme yapılır ve sonuç elde edilir. Bu nedenle ne kadar fazla veri olursa o kadar doğru sonuç ortaya çıkar. Fazla veri ve öğrenme işleminin çok olması sebebiyle yüksek işlem gücüne ihtiyaç vardır.

Neyse ki iOS 8'de gelen Metal API ile cihazın GPU'suna alt seviyede ulaşım sağlandı. iOS 11 ile birlikte Apple Core ML kütüphanesi ve Vision yapısı kullanıma sunuldu. Bu ikisi teknoloji de Metal API kullanılarak geliştirildi, bu nedenle cihaz üzerinde hızlı bir şekilde çalışabilirler.


Core ML kütüphanesi "eğitimli model" dediğimiz Machine Learning'in algılayacağı verinin işlenmesi ve bu modele göre sonuç elde edilmesinden sorumludur. Vision yapısı ise, yüzleri, yüz işaretlerini, metinleri, dikdörtgenleri, barkodları ve nesneleri algılamak için Apple'ın modellerine kolay erişim sağlar.




Core ML Entegrasyonu

Bu uygulama için ben Apple'ın kendi sitesinde sunduğu birkaç modelden biri olan "MobileNetV2" modelini seçtim. Siz istediğiniz yerden istediğiniz modeli uygulamanıza koyabilirsiniz.


MobileNetV2 (32bit) kütüphanesini indirdiğinizde gelen "MobileNetV2.mlmodel" dosyasını aşağıdaki şekilde uygulamanıza ekleyin.

.mlmodel dosyasını XCode'a sürükleyerek ekleyin.

MobileNetV2.mlmodel dosyasının üzerine tıkladığınızda model dosyasının özelliğini görebilirsiniz. Ayrıca isterseniz Model Class bölümünden Otomatik olarak yaratılmış Swift sınıfını (Automatically generated Swift model class) görebilirsiniz.


MobileNetV2 -> kısmında ok işaretine basarak görebilirsiniz.

Oluşturduğumuz ViewController.swift sınıfında CoreML ve Vision'ı import ediyoruz.

ViewController.swift sınıfını ilk oluşturduğumuzda gelen "import UIKit" altına yazabilirsiniz. Daha sonra ViewController'a extension olarak detectScene fonksiyonunu ekleyelim. detect fonksiyonunu imagePicker ile kullanıcıya fotoğraf seçtirdikten sonra çağıracağız ve seçilen image'ın içeriğini coreML ile tespit edeceğiz.



Burada dikkat edilmesi gereken MobileNetV2().model yazan satırdır. Buraya projeye eklediğiniz modeli adreslemeniz gerekiyor.


Oluşturduğumuz model objesini VNCoreMLRequest init metoduna ileterek vision request objemizi oluşturuyoruz. Bu sırada sonucu elde edeceğimiz ve ekrandaki Doğruluk Oranı alanına yazacağımız completion handler'ımızı da tanımlıyoruz.


Son olarak oluşturduğumuz VKImageRequestHandler objesini kullanıcının seçtiği image objesi ile ayağa kaldırıyoruz ve request objesini perform ile handler'a iletiyoruz.


Sonuç olarak handler fonksiyonuna gelen imaj işleme sokuluyor ve request 'den gelen ilk sonucu beklediğimiz sonuç olarak değerlendirip, değerini guessText ile ekrana yazıyoruz.


detectScene fonksiyonunu başta belirttiğimiz gibi kullanıcıya galeriden fotoğrafı seçtirdiğimizde çağırıyoruz.


Sonuç olarak, istediğiniz fotoğraf ile demonuzu deneyebilirsiniz. Her fotografta farklı sonuç ve doğruluk oranı ile karşılaşacaksınız.




github: https://github.com/kemalsen/mobiler/tree/master/recognition


#coreML #vision #ios #machinelearning #imagerecognition


Referanslar

https://www.raywenderlich.com/577-core-ml-and-vision-machine-learning-in-ios-11-tutorial

https://skymind.ai/wiki/ai-vs-machine-learning-vs-deep-learning

https://hackernoon.com/deep-learning-vs-machine-learning-a-simple-explanation-47405b3eef08

https://www.geeksforgeeks.org/difference-between-machine-learning-and-artificial-intelligence/


125 görüntüleme