Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android Things
Code

Android Thing dan Machine Learning

by
Length:MediumLanguages:
This post is part of a series called Android Things.
Android Things: Understanding and Writing Drivers
Android Things: Creating a Cloud-Connected Doorman

Indonesian (Bahasa Indonesia) translation by Husain Ali Yahya (you can also view the original English article)

Android Things mengizinkanmu untuk membuat perangkat IoT keten dengan kode sederhana, tapi satu hal yang membuatnya luar biasa adalah mempelajari mesin. Sementara ada bebeapa layanan yang tersedia online yang akan mengizinkanmu untuk mengunggah datamu dan mengembalikan hasilnua, bisa menggunakan mesil secara lokal dan offline akan jadi sangat berguna.

Di artikel ini, saya akan membagikan pengalaman saya menggunakan TensorFlow image classifier, dimulai dengan Google's Android Things TensorFlow example.

Kenapa Menggunakan Machine Learning?

Machine learning bisa membantu menyelesaikan masalah yang aplikasi konvensional tidak bisa. Untuk memberikan konteks, mari pergi ke contoh sederhana di mana machine learning bisa digunakan dengan berkas IoT untuk meningkatkan kehidupan sehari-hari.

Di sini di Colorado, adalah sebuah hal yang tidak umum untuk melihat berita mengenai binatang liar muncul dari hutan dan berjalan di kota:

News story of a moose in downtown Boulder Colorado

Atau beruang memanjat pohon di universitas lokal:

News article of a bear at CU Boulder in Colorado

Saya pernah melihat teman mosting video sebuah beruang di luar rumahnya!

Snapshot from a video of a bear outside of a home

Sementara situasi ini tidak dianggap penting, ada data publik yang tersedia dari State of Colorado’s Division of Parks and Wildlife yang menjelaskan konflik manusia-beruang hitam, dan aneka aktivitas spesies-spesies liar. Dengan melihat kembali ke data konflik beruang hitam-manusia di Google Earth, kita bisa menemukan area di mana beruang bisa menjadi ancaman bagi keamanan publik.

Colorado bear-human conflict map

Sebagai tambahan, sementara saya membaca data dari negara bagian, seorang teman memosting gambar darei mobilnya memiliki kecelakaan dengan sebuah elk selama perjalanannya ke Durango, CO. Berdasarkan  Colorado Department of Transportation (CDOT) Crash Book, lebih dari 4.000 kecelekaan melibatkan hewan liar terjadi dalam satu tahun di Colorado, dengan 150 korban terluka ringan dan 1 korban jiwa. Di seluruh Amerika Serikat, angka ini naik hinga 1.500.000 kecelakaan dengan 200 korban jiwa, berdasarkan Defenders of Wildlife facts sheet.

Car after hitting an elk near Durango Colorado

Jadi bagaimana kita bisa menggunakan machine learning untuk menyelesaikan masalah ini? Dengan pengenalan gambar, kita bisa membuat perangkat motion-triggered yang bisa mengambil gambar dengan Raspberry Pi lalu menginisialisasinya untuk mendeteksi seekor binatang liar berbahaya.

Menggunakan contoh Google, kita bisa membuat perangkat Android Things yang mengambil gambar dengan Raspberry Pi dan mengklasifikasikan kontennya dengan ribuan label yang mungkin, Tapi label ini tidak persis dengan yang kita perlu gunakan.

Dengan melatih TensorFlow untuk menggunakan gambar dan labell sendiri, kita bisa membuat sebuah perangkat yang bisa mengidentifikasi rusa besar, rusa amerika maupun berunag hitam lalu melakukan aksi jika terdeteksi. Ini mengizinkan kita untuk membuat sebuah perangkat yang bisa menyelamatkan nyawa yang mudah untuk dibuat.

Membuat sebuah Custom TensorFlow Image Classifier

Setelah kamu memasang dan menjalankan contoh Google Tensor untuk Android Things, ini waktunya untuk mulai memodifikasinya. Hal pertama yang perlu kamu lakukan adalah memastikan bahwa TensorFlow ada dan bekerja di komputermu. Ini bisa menjadi rumit, cara termudah yang saya temukan untuk membuatnya berjalan dengan benar melalui seluruh proses menggenerasi trained files adalah dengan memasang dan menggunakan Docker. Program ini mengizinkan kamu untuk menjalankan mesin virtual di komputermu yang telah diatur untuk TensorFlow.

Setelah kamu telah memasang Docker dan menjalankannya di komputermu, kamu harus membuka pengaturannya dan mengatur penggunaan memori dari mesin virtual. Saya mengatur 7 GB dari memory yang bisa jadi lebih dari yang kamu butuhkan. Tapi, saya menghabiskan berhari-hari mencoba membuat TensorFlow bekerja dengan benar untuk membuat trained graph yang dibutuhkan tanpa crash sebelum saya menyadari bahwa mesin virtual saya kekurangan memori.

Apa yang akan kita lakukan di contoh ini melatih ulang contoh machine learning yang tersedia untuk menggunakan data kita sendiri karena ini lebih cepat daripada melatih sebuah data set baru dari awal. Untuk penjelasan lebih lanjut tentang apa yang kita lakukan kamu bisa melihat Dokumentasi Tensor Flow Resmi.

Docker advanced settings screen

Setelah kamu memasang Docker dan memulainya di mesinmu. Kamu harus menjalankannya dari terminal dan mendorong gambar. Contohnya saya menjalankannya di macOS, jadi perintahnya bisa jadi sedikit berbeda di platform-mu.

Ketika semua telah selesai diatur, kamu harus memeiliki perintah yang mirip dengan ini:

Pada titik ini kamu perlu seperangkan gambar untuk melatih TensorFlow saya menggunakan Fatkun Batch Download Image Chrome plugin untuk mengunduh gambar dari Google Search. Ketika plugin telah terpasan, kamu bisa mencari apapun yang ingin kamu klasifikasikan dan mulai memilih gambar yang ingin kamu simpan.

Chrome plugin screen for downloading bulk images

Untuk membuat penamaan jadi lebih mudah kamu juga bisa pergi ke bagian More Options dan membiarkan plugin mengganti nama gambar saat mengunduhnya.

Bulk image download rename setting

Sekarang kamu perlu memindahkan gambar yang kamu gunakan ke folder tf_files di bawah direktori awal yang merupakan folder yang kita buat saat menginisialisasi mesin docker kita. Untuk contoh ini, direktori gambar saya disebut TensorFlowTrainingImages.. Tiap benda yang bisa diklasifikasikan memiliki foldernya sendiri seperti yang di bawah ini.

TensorFlow training images folder structure

Ketika direktori siap, kamu bisa mulai melatih kembali perintah berikut dari Docker terminal.

Perintah di atas akan menggenerasi bottlenecks yang secara esensial adalah data yang digunakan oleh klasifikasi akhir untuk membagikan data dan sebuah berkas grafik dan label yang digunakan untuk klasifikasi.

Dari poin ini keepannya, operasi yang kita jalankan dengan Tensorflow bisa berlangsung mulai dari beberapa menit hingga berjam-jam, tergantung dari kecepatan komputermu. Ini bisa jadi bagus untuk membuat kopi dan sedikit berjalan-jalan.

Sementara perintah latihan berjalan kamu harusnya melihat banyak output di terminal seperti ini:

Ketika bottleneck telah digenerasi kamu akan memili berkas graph.pb dan labels.txt yang mewakili datamu. Sementara format ini bekerja baik saat mengklasifikasikan di koomputermu, mereka cenderung tidak bekerja ketika diletakkan di aplikasi Android. Kamu harus mengoptimasinya.

Mulai dengen menjalankan perintah berikut. Terima semua nilai awal.

Ketika konfigurasi telah selesai, jalankan perintah berikut untuk mengatur alat optimasi. Tahap ini memakan sejam di mesinku, sabar adalah kuncinya!

Ketika optimasi telah dibuat, kamu bisa menggunakannya untuk mengoptimasi berkas graph-mu.

Sekarang kamu telah mengoptimasi graph yang digenerasi, kamu bisa mencarinya dengan labelmu di folder tf_files di direktori awal.

Contents of TensorFlow directory after generating machine learning data

Menambahkan Custom Classifier ke Contoh Android Things

Selamat! Menggenerasi graph dan label TensorFlow adalah bagian sulitnya dan butuh kecerdikkan untuk membuatnya secara benar. Sekarang kamu memilikinya, ini waktunya untuk mengubah contoh Android Things untuk menggunakan data kita. Pertama, pergi ke berkas build.grandle dan hapus bagian berikut beserta deklarasi plugin-nya.

Kode di atas mengunduh contoh graph dan label dari Google dan menambahkannya ke folder assets. Semenjak kita menggenari milik kita sendiri, kita tidak perlu khawatir mengenainya dan bisa menghapusnya.

Selanjutnya buka berkas TensorFlowImageClassifier.java. Kamu harusnya melihat beberapa variabel terdeklarasi di bagian atas berkas dengan sebuah komentar panjang mengenai apa yang perlu diubah jika kamu menggunakan graph-mu sendiri yang digenerasi dari sebuah lab kode (yang dekat dengan apa yang telah kita lakukan)

Ubah bagian akhir dari MODEL_FILE dan LABEL_FILE agar memiliki nama yang sama dengan graph dan label teroptimasimu.

Kembali ke komentar panjang di berkas asli, mari melangkah dan mengubah berkasnya agar cocok dengan rekomendasi Google.

Kamu akan menyadari kita mengatur NUM_CLASSES ke 4. Ini adalah angka dari item tersedia untuk algoritma machine learning kita untuk diklasifikasikan. Kamu bisa menggantinya dengan kategori yang telah kamu latih.

Untuk mempersingkatnya, pindahkan graph dan label teroptimasimu ke direktori app/src/main/assets. Setelah selesai, kamu bisa memasang contoh aplikasi ke sebuah Raspberry Pi dengan modul kamera dan mengambil gambar. Di bawah ini adalah gambar yang saya ambil dengan perangkatnya.

Picture of a bear taken with Android Things device

Dan hasil yang dikirim ke Firebase (dengan sedikit modifikasi ke berkas contoh).

Output data from machine learning classification of image
Seperti yang dapat kamu lihat, perangkat secara sukses mengidentifikasi beruang hitam di gambar!

Kesimpulan

Di tutorial ini kamu mendapat pengantar singkat menggunakan TensorFlow untuk machine learning dan mengintegrasikannya dengan aplikasi Android Things. Seperti yang telah kamu lihat, machine learning adalah sebuah alat yang kuat yang bisa digunakan untuk menyelesaikan banyak masalah yang aplikasi konvensional sulit untuk melakukannya. Ketika mengabungkan machine learning dengan Internet of Things kamu bisa membuat beberapa perangkat keren dan ebrguna yang berinteraksi dengan dunia di sekitarnya.

Menggunakan apa yang telah kamu pelajari dari artikel ini, dan lainnya dari Seri Android Things, kamu bisa membuat aplikasi dan perangkat yang keren!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.