Pengenalan objek dan emosi manusia menggunakan Firebase ML Kit

Pengenalan objek dan emosi manusia menggunakan Firebase ML Kit


Jika Anda mengikuti Google I / O (atau paling tidak melihat Keynotes), maka Anda mungkin telah memperhatikan pengumuman produk baru sebagai bagian dari platform Firebase yang disebut ML Kit.


ML Kit menyediakan API untuk menambahkan fungsi pembelajaran mesin yang kuat ke aplikasi (baik Android dan iOS), apakah Anda seorang pengembang pembelajaran mesin yang berpengalaman atau hanya pemula di bidang ini.


Meskipun produk ini belum menjadi fokus perhatian di konferensi (terima kasih, Google Duplex), pasti ada banyak cara berguna untuk menggunakannya dalam pengembangan Android.


Jadi mari kita bermain dengannya dan membuat aplikasi kecil yang akan terlihat seperti Google Lens (hampir)!


Berikut adalah beberapa tangkapan layar dari aplikasi. Pada mereka, Anda dapat melihat upaya untuk mengidentifikasi objek dalam gambar.


Pengenalan Headphone 1


Pengenalan Headphone 2


Cukup akurat, ya?
Anda juga dapat menggunakan API ini untuk mendefinisikan emosi manusia seperti kebahagiaan, kesedihan, kemarahan, dll., Yang bahkan lebih keren.


Berhenti bicara, tunjukkan kodenya !!!!!


Ada 5 API dalam Kit ML:


  1. Pengenalan teks (kami telah menerbitkan artikel tentang aplikasi menggunakan fungsi ini)
  2. Deteksi Wajah ( artikel seperti itu ada di blog kami)
  3. Pemindaian barcode
  4. Identifikasi objek dalam gambar (yang akan kita gunakan)
  5. Pengenalan karakter

Pada artikel ini, kita akan menggunakan API identifikasi objek pada gambar. Dengan menggunakan API ini, kami mendapatkan daftar objek yang dikenali dalam gambar: orang, benda, tempat, aktivitas, dll.


Selain itu, ada 2 jenis API ini. Yang pertama adalah API yang ada di perangkat Anda yang berfungsi, yang logis, pada perangkat itu sendiri. Ini gratis dan dapat mengenali lebih dari 400 objek dalam gambar.


Yang kedua adalah cloud API , yang berjalan di Google Cloud dan mengenali lebih dari 10.000 objek yang berbeda. Itu dibayar, tetapi 1000 permintaan pertama per bulan gratis.


Pada artikel ini, kita akan melihat jenis API pertama, sebagai itu gratis (tetapi prinsip pembayarannya mirip dengan gratis).


Mari kita mulai.


  • Hubungkan Firebase ke proyek Anda dan tambahkan firebase-ml-vision
    Cara menghubungkan firebase, Anda dapat melihat tutorial yang bagus dari Google. Anda juga harus menambahkan dependensi yang sesuai untuk menggunakan API ini:

 implementation 'com.google.firebase:firebase-ml-vision:15.0.0' implementation 'com.google.firebase:firebase-ml-vision-image-label-model:15.0.0' 

  • Sematkan fungsi kamera dalam aplikasi
    Visi API memerlukan gambar untuk menerima data, jadi buatlah aplikasi yang memungkinkan Anda mengunduh gambar dari galeri, atau buat aplikasi yang menggunakan kamera untuk mengambil gambar dan langsung menganalisanya.
    Jika Anda tidak ingin menggunakan API kamera standar, Anda bisa menggunakan pustaka yang praktis dan mudah untuk fungsi ini.


  • Gunakan bitmap untuk mengakses API Visi
    Perpustakaan yang disebutkan di atas secara langsung menyediakan bitmap gambar, yang dapat digunakan untuk mengakses API.



 fab_take_photo.setOnClickListener { // cameraView is a custom View which provides camera preview cameraView.captureImage { cameraKitImage -> // Get the Bitmap from the captured shot and use it to make the API call getLabelsFromDevice(cameraKitImage.bitmap) } } private fun getLabelsFromDevice(bitmap: Bitmap) { val image : FirebaseVisionImage = FirebaseVisionImage.fromBitmap(bitmap) val detector : FirebaseVisionLabelDetector = FirebaseVision.getInstance().visionLabelDetector detector.detectInImage(image) .addOnSuccessListener { // Task completed successfully for(firebaseVision : FirebaseVisionLabel in it){ // Logging through the list of labels returned from the API and Log them Log.d(TAG,"Item Name ${firebaseVision.confidence}") Log.d(TAG,"Confidence ${firebaseVision.confidence}") } } .addOnFailureListener { // Task failed with an exception Toast.makeText(baseContext,"Sorry, something went wrong!",Toast.LENGTH_SHORT).show() } } 

Dalam cuplikan kode di atas, pertama-tama kita membuat FirebaseVisionImage dari bitmap.


Lalu kami membuat instance FirebaseVisionLabelDetector yang melewati FirebaseVisionImage dan menemukan FirebaseVisionLabels (objek) spesifik yang dikenali dalam gambar yang disediakan.


Akhirnya, kami meneruskan gambar ke metode detectInImage() dan membiarkan detektor menganalisis gambar.


Kita dapat mengatur pendengar untuk menangani analisis yang berhasil dan untuk yang tidak berhasil. Di sana kita akan memiliki akses ke daftar objek yang diidentifikasi dalam gambar dan pengecualian yang telah muncul, masing-masing.


Untuk setiap objek yang dikenali, Anda bisa mendapatkan namanya, akurasi pengenalan, dan id entitas .


Seperti yang disebutkan sebelumnya, API ini juga dapat digunakan untuk mendefinisikan emosi manusia dalam suatu gambar, yang dapat dilihat pada tangkapan layar di bawah ini:


Emosi manusia


Pengakuan Emosi 1


Pengakuan Emosi 2


Kode untuk cloud API sangat mirip dengan kode yang kami tulis untuk API perangkat . Hanya jenis detektor ( FirebaseVisionCloudLabelDetector vs FirebaseVisionLabelDetector ) dan jenis objek yang diidentifikasi ( FirebaseVisionCloudLabel vs FirebaseVisionLabels ) yang FirebaseVisionLabels :


 private fun getLabelsFromDevice(bitmap: Bitmap) { ... val detector : FirebaseVisionCloudLabelDetector = FirebaseVision.getInstance().visionCloudLabelDetector detector.detectInImage(image) .addOnSuccessListener { for(firebaseVision : FirebaseVisionCloudLabel in it){ ... } } .addOnFailureListener { ... } } 

Selain perubahan dalam kode, Anda juga perlu mengonfigurasi penagihan (pembayaran) untuk proyek Anda dan mengaktifkan API Google Vision di Google Cloud Console Anda.


Harap dicatat bahwa API memungkinkan Anda untuk melakukan hanya 1000 permintaan gratis per bulan, jadi Anda tidak perlu membayar jika Anda hanya ingin bermain dengannya.


Aplikasi yang ditunjukkan di screenshot dapat ditemukan di repositori GitHub .

Source: https://habr.com/ru/post/id420085/


All Articles