10 Dakikada Görüntü Sınıflandıran Mobil Uygulama Geliştirin

Özgür Şahin
NSIstanbul
Published in
5 min readNov 10, 2018
customvision.ai

Microsoft tarafından geliştirilen CustomVision, bilgisayarlı görü modellerini eğitebildiğiniz bir platform. Görüntü sınıflandıran bir mobil uygulama geliştirmek istiyorsanız CustomVision bu konuda en hızlı çözümlerden birini sunuyor. Wwdc 18 Apple etkinliğinde tanıtılan CreateML de bu çözümü sunuyor ama sadece iOS uygulamalar için, CustomVision ile hem Android için hem de iOS için modeller oluşturabiliyorsunuz. Bir model eğitmek için kategorize edilmiş resim örneklerini bu platforma yüklüyorsunuz ve sınıflandırıcı modeli bu site üzerinde eğitiyorsunuz. Daha sonra ister CoreML modeli olarak ister Tensorflow modeli olarak modelinizi (Windows ML için Onnx ve AzureML için DockerFile’da destekleniyor) export ediyorsunuz. Bu platformu 2 proje ve 5000 eğitim resmi limitleri dahilinde ücretsiz kullanabiliyorsunuz.

Şimdi gelin kendi projemiz için özelleştirilmiş modelimizi eğitelim ve mobil uygulamada kullanalım.

İlk olarak, görüntü sınıflandırıcı modeli eğitmek için kategorize edilmiş resimlere ihtiyacımız var. Bu yazıda Ankara Ayrancı Anadolu Lisesi öğrencileri tarafından hazırlanmış olan İşaret Dili Rakamlar veri kümesini kullanacağım. Öncelikle veri kümesini indirelim. Bu kümede 10 sınıfa ayrılmış işaret dili resimleri ayrı klasörlerde tutuluyor.

https://github.com/ardamavi/Sign-Language-Digits-Dataset

Şimdi CustomVision üzerinde projeler sayfasına gidelim ve ilk projemizi oluşturalım.

CustomVision

“New Project”e tıklayalım ve proje adını girip proje tipi olarak classification seçelim. Domains kısmında General (compact) seçelim. CoreML ve Tensorflow modeli olarak export edebilmeyi destekleyen modeller sadece bu compact modeller.

Bu şekilde projeyi oluşturduktan sonra resimleri yükleyelim.

0 klasörü altındaki resimleri seçelim ve yükleyelim. Burada klasörleri ayrı ayrı yüklersek işimiz kolaylaşıyor çünkü yükleme işleminden sonra direkt bu sınıfın etiketini belirtebiliyoruz.

Yüklediğimiz bu resimler için etiket belirleyelim.

Yine ayrı işlemi 1 klasörü için tekrarlayalım.

Bunları da “one” olarak etiketleyelim ve yükleyelim. Tüm klasörler için ayrı yöntemi izleyerek etiketlemeyi tamamlayalım.

Tüm klasörleri ekleyip etiketledikten sonra modelimi eğitme işlemine geçebiliriz. Train butonuna basarak bu işlemi başlatalım.

Burada Olasılık Eğik Değerini (“Probability Threshold”) belirleyebiliyoruz. Bu değer modelin tahmininin geçerli olması için minimum değeri belirliyor. Yani bir resim için bu resim %51 sıfır resmidir diye tahminlediyse bunu sıfır olarak kategorilendiriyor.

Eğitim birkaç dakika sürüyor. Eğitimden sonra modelimizin ne kadar iyi eğitildiğini anlamak değerleri kontrol ediyoruz. Precision değeri modelimiz tarafından tahmin edilen sınıfların hangi oranda doğru olduğunu gösteriyor. Recall değeri ise doğru sınıflandırma yapması gereken etiketler içinden yüzde kaçını doğru bildiğini gösteriyor. Bu metriklere göre modelimizin gayet iyi sınıflandırma yaptığını söyleyebiliriz.

Bu modeli kendiniz test etmek isterseniz, Quick Test butonu ile bunu yapabiliyorsunuz. Buraya test etmek istediğiniz resimleri yükleyip inference butonuna basarak modelin bunu hangi sınıf olarak tahmin ettiğini görebilirsiniz.

Kontrollerini de yaptıktan sonra “export model” butonuna basarak istediğimiz platformu seçelim. Bu yazı için ben CoreML seçiyorum.

Modeli indirdikten sonra, Azure’un bu modeli kullanmak için örnek olarak oluşturduğu XCode projesini de indirelim. iOS için buradan Android için ise buradan indirebilirsiniz.

iOS için indirilen modelin adını Sign.mlmodel olarak değiştirdim. Modeli indirdiğimiz projeye sürükleyelim bırakalım ve modelin içinde gelen Fruit.mlmodel’i silelim.

ViewController.swift dosyasını açalım “Fruit” kelimelisi arayalım ve buradaki model çağrımını kendi modelimize yönlendirmek için “Sign” olarak düzenleyelim.

Android için ise pb dosyasını ve labels.txt dosyalarını Android projesindeki Assets klasörüne sürükleyim bırakalım.

Aşağıdaki gibi codesigning hataları alırsanız, General tabından Team kısmında account seçerek ilerleyebilirsiniz.

Şimdi projemizi derleyelim ve mobil cihazda görelim.

Anlatmaya gerek yok görüyorsunuz uygulamamız çalışıyor:)

Eğer modeli export etmek istemiyorsanız ve API olarak kullanmak istiyorsanız CustomVision bunu sağlıyor. Bunun için “Prediction URL” e tıklayıp modelinize özel API adreslerini görebilirsiniz.

Önceden günler alan bu eğitim şekli artık sadece dakikalar alıyor, makine öğrenmesi araçlarının gelişimi gerçekten büyük ivme kazandı.

Eğer bu yazımı beğendiyseniz ve daha derine inmek isterseniz Görüntü Tanıyan Mobil Uygulama Nasıl Geliştirilir? yazıma göz atabilirsiniz. Bu yazıda Python ile kağıt paraları tanıma modeli eğitip iOS’da kullanıyorum.

iOS’da Makine Öğrenmesi mail bültenime aşağıdaki formdan kayıt olabilirsiniz.

Tüm süreci Apple ekosisteminde geliştirmek isterseniz şu yazıma bir göz atın: iOS Geliştiriciler için Makine Öğrenmesi 1.Bölüm: CreateML ile Görüntü Sınıflandırma

Yine Makine Öğrenmesi Eğlencelidir! yazısıda da makine öğrenmesi bilmeyenler için yumuşak bir giriş niteliğinde, konuyla ilgileniyorsanız bu yazıyı da tavsiye ederim.

Buraya kadar okuduğunuz için teşekkürler :) Benzer yazılardan haberdar olmak için beni Medium’da ve Twitter’da takip edebilirsiniz. Esenlikle kalın :)

--

--

Özgür Şahin
NSIstanbul

Articles about Deep Learning, iOS App Development, Entrepreneurship and Psychology