HMS ML Kit ile Nesne Tanımlama

Oğuzhan Demirci
Huawei Developers - Türkiye
4 min readNov 20, 2020

Başlamadan önce ML Kit’in ne olduğu ve ne işe yaradığını anlamak adına basitçe bu konudaki tanımlamalara kısaca değinelim. Bu sayede tepeden aşağı bir bakış açısıyla konuya eğilip, bu makalede neyi inceleyeceğimizi anlamış oluruz.

Yapay zeka nedir?

Yapay zeka, bir bilgisayarın genellikle zeki varlıklarla özdeşleştirilmiş olan işleri icra etme kabiliyetidir. Yapay zeka üzerine yapılan çalışmalar halihazırda insanların daha iyi yapmakta olduğu işlerin bilgisayarlar tarafından yapılmasını sağlamayı amaçlar. İlgili makalelerde genel olarak yapay zekadan İngilizce “Artificial Intelligence” kısaltması olan AI olarak bahsedilir.

Makine öğrenmesi nedir?

Makine öğrenmesi, çoğu yerde “Machine Learning” kısaltması olan ML olarak geçer. Makine öğrenmesi, bir bilgisayarın, tümüyle dışarıdan öğretime tabi tutulmadan, kendi kendine bir sorguya cevap verebilme kabiliyeti kazanmasıdır. Makine öğrenmesinde bilgisayarın öğrendiği karar verme yetisi için programlanması gerekmez, aksine bilgisayar kendisine verilen örnekler ile sorgular arasındaki ilişkileri kendi kendine kurar. Yapay zeka, zeki varlıkların yapageldiği işlerin bilgisayar tarafından yapılabilmesi üzerine yapılan çalışma iken, makine öğrenmesi yapay zekanın bu hedefe ulaşabilmesi için uygulanan bir yöntem gibi düşünülebilir. Makine öğrenmesi, yapay zekanın bir alt dalıdır.

HMS ML Kit ve Sunduğu Servisler

HMS (Huawei Mobil Servisleri) ML Kit geliştiricilere çok çeşitli makine öğrenmesi servisleri sunan bir kittir. Aşağıda ML Kit’in sunduğu servisler ile ilgili bir tablo paylaşıyorum:

HMS ML Kit Servisleri

ML Kit nesne tanımlama servisi, bir görselde yer alan bir veya birden fazla nesneyi tespit ve teşhis eder. Ayrıca bize tespit edilen nesnelerin görsel içerisindeki konumlarını da verir. Aynı anda en fazla sekiz nesne tespiti yapabilir. Nesnenin teşhisinde ise bize o nesnenin kategorisi hakkında bilgi verilir. Bunlar: ev eşyası (household product), giyecek (fashion goods), yiyecek (food), yer (place), yüz (face), bitki (plant), mobilya (furniture) ve diğerleridir (other).

Nesne Tanımlamanın Çalışma Prensibi

Bugün nesne tanımlama ve takibi üzerine Android Studio’da Kotlin’de basit bir uygulama geliştireceğiz. HMS ML Kit ile nesne tanımalama iki farklı kaynaktan yapılabilir: Sabit görsel veya video akışı. Daha kolay olması açısından bu makalede sizlerle sabit görsel üzerinden nesne tanımlama projesi hazırlayacağız. Bütün adımları tek tek yazacağım. Benimle beraber Android Studio’yu açıp projeyi yazmanızı tavsiye ederim.

  1. Hala bir Huawei geliştirici hesabınız yoksa buradan oluşturabilirsiniz.
  2. AppGallery Connect üzerinden projemizi oluşturalım. Bu sayfadaki adımları takip edebilirsiniz.
  3. Projemizi oluşturduktan sonra AppGallery Connect üzerinden Develop > Manage APIs bölümünden ML Kit servisinin aktive edilmiş olduğundan emin olmalıyız.

4. ML Kit SDK’sını projemize entegre edelim. App modülümüze ait build.gradle dosyası aşağıdaki şekilde olabilir:

Proje seviyesi build.gradle dosyası:

5. ML Kit SDK’mızı entegre ettikten sonra projemizin layout’unu oluşturmaya başlayabiliriz. Basit bir layout oluşturacağız. Bir ImageView ve bir FloatingActionButton kullanacağız. FloatingActionButton’a tıklayınca kullanıcıya resim seçtireceğiz ve ImageView içerisinde resmimizi göstereceğiz. Layout örneği:

6. Cihazdaki resimleri temin etmek için implicit intent kullanacağız. Resmi Bitmap tipinde onActivityResult içerisinde alacağız. Müteakiben bitmap üzerinde analizlerimizi gerçekleştireceğiz.

7. Bu noktaya kadar üzerinde analiz yapacağımız resmi temin etmiş olduk. Bu remin analizini MLObjectAnalyzer’ı kullanarak yapacağız. MLObjectAnalyzer’ı iki şekilde oluşturabiliriz. TYPE_PICTURE veya TYPE_VIDEO olarak. Bu örnekte TYPE_PICTURE seçeceğiz. MLObjectAnalyzer’ı aşağıdaki örnekte olduğu gibi oluşturabilirsiniz.

8. Analyze metodumuzu aşağıdaki örnekte olduğu gibi oluşturabilirsiniz. Bu metodun içerisinde bitmapi kullanarak MLFrame oluşturup MLObjectAnalyzer ile asenkron olarak analizimizi yapacağız. Eğer hata almaz isek ve başarılı bir şekilde task tamamlanırsa tespit edilen nesneleri çevreleyen dikdörtgenler çizeceğiz ve bu nesnelerin tiplerini de yine resmin üzerinde yazı olarak çizeceğiz. Çizim işlemlerini drawItems metodu içerisinde gerçekleştirebiliriz.

10. Projemizi tamamladık. MainActivity’miz aşağıdaki örnekteki gibi olacak.

11. Şimdi de birkaç örnek ile deneme yapalım.

Bu yazıda sizlerle beraber statik modda nesne tanmlama Android uygulamasını HMS ML Kit kullanarak yapmış olduk. Bundan başka ML Kit’in sunduğu çok çeşitli servisler var. Onlara da göz gezdirmenizi tavsiye ederim. Bu sayfadan ML Kit’in diğer servisleri hakkında bilgi edinebilirsiniz. Eğer hazırladığımız proje hakkında sorunuz varsa yorum kısmından sorularınızı sorabilirsiniz. Projenin kaynak kodunu da aşağıda ekledim.

Görüşmek üzere!

--

--