tensorflow lite pada perangkat bergerak guna …
TRANSCRIPT
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
1
TENSORFLOW LITE PADA PERANGKAT BERGERAK GUNA PREDIKSI
WAKTU PANEN PADA OPERASI PERTANIAN VERTIKAL
Suryo Bramasto Program Studi Informatika Institut Teknologi Indonesia
e-mail: [email protected]
Abstrak
Salah satu penerapan Internet of Things (IoT) pada bidang pertanian, adalah dimana perangkat IoT
digunakan untuk melakukan prediksi waktu panen berdasar pertumbuhan lettuce pada sistem
pertanian vertikal. Pada kasus prediksi pertumbuhan lettuce pada sistem pertanian vertikal, terdapat
kebutuhan pengolahan data yang harus dekat dengan parangkat IoT dan dataset yang berasal dari
sensor-sensor yang digunakan pada sistem pertanian vertikal. Dengan demikian model regresi bobot
lettuce yang memprediksi pertumbuhan lettuce, harus mengimplementasikan pustaka yang secara
spesifik untuk perangkat bergarak yakni TensorFlow Lite. Sistem pertanian vertikal memiliki struktur
kabinet dan dilengkapi dengan berbagai sensor, aktuator, dan sistem irigasi. Sistem pertanian
vertikal memiliki motherboard berupa perangkat bergerak berbasis Raspberry Pi dan terhubung
dengan custom cloud server melalui jaringan internet. Raspberry Pi menjalankan TensorFlow Lite
runtime guna eksekusi algoritma deep learning untuk prediksi pertumbuhan lettuce secara real time.
Semua data tersimpan sementara secara lokal (cached) sebelum dikirim ke cloud Application
Programming Interface (API). Hasil prediksi pertumbuhan lettuce menentukan waktu panen berdasar
kombinasi sistem irigasi yang dibangun pada sistem pertanian vertikal. Guna menguji akurasi dari
prediksi maka dilakukan pengujian regresi pada model teroptimasi untuk perangkat bergerak (model
pada TensorFlow Lite runtime) dengan metric evaluasi yakni mean absolute percentage error
(MAPE), yang mengukur seberapa jauh penyimpangan data hasil prediksi terhadap data hasil
pengamatan. Untuk data uji yang digunakan dalam artikel ini diperoleh MAPE sebesar 9,44%.
Dilakukan juga pengujian perbandingan performa antara model yang berjalan pada distribusi penuh
TensorFlow dan model teroptimasi untuk perangkat bergerak yang berjalan pada TensorFlow Lite
runtime. Uji perbandingan dilakukan pada perangkat bergerak Raspberry Pi yang berfungsi sebagai
motherboard dari sistem pertanian vertikal. Berdasarkan uji performa tersebut diperoleh bahwa
model teroptimasi yang berjalan pada TensorFlow Lite runtime berjalan sepuluh kali lebih cepat
dibandingkan model yang berjalan pada instalasi penuh TensorFlow dalam melakukan prediksi
waktu panen berdasar pertumbuhan lettuce, dengan hanya membutuhkan koneksi internet intermitten. Kata kunci: internet of things, prediksi, sistem pertanian vertikal, TensorFlow Lite
Pendahuluan Evolusi dari IoT telah mengubah keseluruhan paradigma teknologi konvensional menjadi
data driven dari ekosistem cerdas dan terkoneksi [1]. Data yang dihasilkan dari ekosistem cerdas
dan terkoneksi tersebut harus ditransmisikan dengan kecepatan tinggi dan kemudian diolah atau
dianalisis secara real time di data center atau infrastruktur cloud secara remote. Namun demikian
dengan meningkatnya kebutuhan pengolahan data yang harus semakin dekat dengan perangkat IoT
dan atau semakin dekat dengan datasets, sebagai contohnya untuk penerapan IoT di bidang
pertanian, maka solusi big data juga harus tersedia pada perangkat bergerak [2].
Dewasa ini, Machine Learning (ML) telah mengubah paradigma komputasi. Bahkan
dewasa ini banyak produk yang dikembangkan dengan Kecerdasan Buatan/Artificial Intelligence
(AI) sebagai atribut utama dimana pengguna mengharapkan otomasi dan interaksi manusiawi
dengan perangkat yang digunakan. Saat ini revolusi deep learning keberadaannya masih terbatas
pada ranah cloud, namun dengan peningkatan performa pada microcontroller, perangkat tertanam,
dan perangkat-perangkat IoT maka beberapa pustaka (libraries) ML telah dikembangkan ke
perangkat-perangkat tersebut guna komputasi AI. Salah satu dari pustaka yang dimaksud adalah
TensorFlow Lite [3], dimana pada artikel ini diimplementasikan pada operasi pertanian vertikal.
Pada implementasi TensorFlow Lite untuk perangkat-perangkat IoT pada domain penerapan berupa
pertanian vertikal, ML dan AI akan membantu optimasi hasil pertanian sekaligus melakukan
prediksi terhadap kapan waktu panen.
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
2
Studi Pustaka Pertanian vertikal adalah metode baru pembudidayaan tanaman dalam lapisan-lapisan yang
bertumpuk secara vertikal dalam lingkungan yang terkendali secara penuh. Pertanian vertikal
bertujuan meminimalisir penggunaan air sekaligus memaksimalkan produktivitas dengan
membudidayakan tanaman secara bertumpuk di dalam kabinet dengan iklim terkendali, tanpa
tanah, melainkan menggunakan sedikit air bernutrisi. Sistem pertanian vertikal dapat menggunakan
bermacam-macam struktur seperti peti kemas, bangunan, lorong, maupun kabinet. Sistem pertanian
vertikal menggunakan kombinasi dari dua teknik irigasi yakni hydroponics dan aeroponics. Sistem
irigasi pada pertanian vertikal merupakan faktor utama pertumbuhan dan kesehatan tanaman
sehingga menjadi parameter kunci pada AI yang diterapkan. Sistem pertanian vertikal pada artikel
ini memiliki struktur kabinet yang mengimplementasikan kombinasi 4 cara irigasi yakni
hydroponic nutrient film technique (NFT), hydroponic ebb and flow system, high-pressure
aeroponic (HPA), dan nebulization aeroponic. Sistem pertanian vertikal pada artikel ini
ditunjukkan pada gambar 1. Pada sistem pertanian vertikal pada gambar 1 yang memiliki struktur
kabinet, terdapat berbagai sensor guna monitoring produksi selada dan lettuce. Sistem pertanian
vertikal pada artikel ini merupakan prototype dalam arti belum diperuntukkan guna produksi
massal.
Gambar 1. Sistem Pertanian Vertikal
TensorFlow adalah merupakan end-to-end machine learning platform yang dikembangkan
oleh tim Google Brain guna penggunaan internal Google. Pustaka free and open source dari
TensorFlow yang berada dibawah lisensi Apache 2.0 memungkinkan berbagai tugas ML seperti
desain dan pelatihan jaringan syaraf tiruan (JST) pada berbagai platform baik Central Processing
Units (CPUs), Graphics Processing Units (GPUs), serta Tensor Processing Units (TPUs). Pada
artikel ini digunakan TensorFlow 2.0 dan Python Application Programming Interface (API).
Metodologi Penelitian Kabinet guna pertanian vertikal indoor yang ditunjukkan pada gambar 1 terdiri atas 4 rak
yang mampu mendukung 12 tanaman yang disebar pada grid. Arsitektur sistem pertanian vertikal
pada artikel ini ditunjukkan pada gambar 2.
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
3
Gambar 2. Arsitektur Sistem Pertanian Vertikal
Sistem pertanian vertikal yang ditunjukkan pada gambar 2, terdiri atas beberapa bagian
yakni:
Kabinet dengan sensor, aktuator, dan
sistem irigasi
Raspberry Pi 3B+ sebagai
motherboard
Custom cloud server
Sebuah personal computer (PC) guna
rancang bangun
Pada kabinet tersebut terdapat 8 sensor dan 2 kamera per lapisan (tingkat/rak). 8 sensor tersebut
berfungsi untuk:
Karbondioksida (CO2 (ppm))
Oksigen terlarut/dissolved (O2
(ppm))
Konduktivitas elektrik (µS/cm)
Potensi reduksi oksidasi (mV)
Kepadatan photon flux fotosintesis
(PPFD (µmol/sq m/sec))
pH air
Kelembapan (%)
Suhu (oC)
Prototype sistem pertanian vertikal yang dibangun memiliki struktur 4 tingkat dengan tujuan
mengakomodir setiap sistem irigasi yang telah disebutkan sebelumnya (1 sistem irigasi untuk setiap
tingkat), guna mempelajari pengaruh masing-masing sistem irigasi terhadap pertumbuhan dan
kualitas tanaman. Aktuator membantu mengendalikan suhu, kadar CO2, dan pencahayaan.
Raspberry Pi merupakan otak dari sistem yang melakukan agregasi data dari sensor-sensor,
mengendalikan sistem irigasi dan aktuator-aktuator, serta mengukur area daun dengan bantuan
kamera dan beberapa algoritma pengolahan citra yang diimplementasikan dengan OpenCV [4].
Secara bersamaan Raspberry Pi juga menjalankan TensorFlow Lite runtime guna eksekusi
algoritma deep learning guna prediksi pertumbuhan tanaman secara real time. Semua data
tersimpan sementara secara lokal (cached) sebelum dikirim ke cloud API saat koneksi internet
tersedia. Piranti lunak yang berjalan pada Raspberry Pi ditulis dengan bahasa Python. Pemantauan
pertumbuhan tanaman dengan mengukur besar dari kepala tanaman lettuce dengan bantuan
OpenCV ditunjukkan pada gambar 3. Hasil pemantuan ini akan menjadi fitur guna prediksi kapan
waktu panen oleh TensorFlow.
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
4
Gambar 3. Pemantauan Pertumbuhan Tanaman dengan Bantuan OpenCV
Terdapat 3 hal di dalam custom cloud server yakni:
Sebuah API yang ditulis dengan bahasa pemrograman Go. API ini mengumpulkan data
dari Raspberry Pi.
Sebuah basis data yang dibangun dengan PostgreSQL guna menyimpan data dari
Raspberry Pi dan informasi detail tentang percobaan-percobaan serta fitur-fitur dari
tanaman (varietas, tanggal penanaman, dan sebagainya) guna penelitian agronomis.
Sebuah antarmuka berbasis web guna visualisasi data yang dikembangkan dengan
Elasticsearch-Logstash-Kibana (ELK) stack [5].
Model yang dibangun pada penelitian ini adalah regresi atau secara spesifik yakni regresi
bobot lettuce. Guna membangun model digunakan tf.keras API pada TensorFlow 2.0. Tujuan dari
model ini yakni memprediksi berat lettuce segar pada tanggal tertentu setelah penanaman.
Lingkungan yang digunakan untuk pembangunan model yakni Python 3.7, lingkungan virtual
dengan virtualenv [6], serta instalasi distribusi TensorFlow dengan pip. Instalasi TensorFlow
ditunjukkan pada gambar 4.
Gambar 4. Instalasi TensorFlow dengan pip
Contoh (sample) dataset pada penelitian ini ditunjukkan pada tabel 1. Sebagai catatan
dataset ini merupakan dataset yang disederhanakan guna kepentingan penulisan artikel.
Penyederhanaan dataset ini dilakukan karena data yang digunakan adalah data nyata yang berasal
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
5
dari berbagai sensor yang memiliki potensi kegagalan dan harus dikalibrasi ulang secara berkala.
Guna menghindari penyimpangan hasil analisis data, maka digunakan teknik-teknik preprocessing
yakni sampling, filtering, dan normalisasi, sebelum memasukkan data ke jaringan syaraf tiruan/JST
(artificial neural network).
Tabel 1. Contoh (Sample) Dataset
Fitur Deskripsi Nilai hasil sampling
Bobot Bobot kepala lettuce 135 gram
HSP Jumlah hari setelah penanaman 10 hari
PKCO2 Penjumlahan kumulatif dari CO2 4 ppm
PKCahaya Penjumlahan kumulatif dari cahaya 1420 umol/m2/detik
PKSuhu Penjumlahan kumulatif dari suhu 8623oC
LuasDaun Luas daun 156 cm2
Sistem irigasi (one-hot-encoding)
NFT Hydroponic nutrient film 0.0
HPA High-pressure aeroponics 1.0
Ebb&Flood Hydroponic ebb and flood 0.0
Nebu Nebulized aeroponics 0.0
Dataset dipisah menjadi dua yakni data latih dan data uji. Nilai yang akan diprediksi yakni bobot,
sehingga sembilan fitur yang lain akan dipisahkan menjadi masukan dari JST atau dengan kata lain
bobot adalah keluaran dari JST. Pemisahan dataset biasa disebut dengan istilah data splitting,
dimana pada artikel ini data splitting yang dilakukan yakni menghasilkan perbandingan data latih
dan data uji yakni 9:1.
Guna membangun model digunakan model sekuensial seperti ditunjukkan pada gambar 5,
dengan dua lapisan tersembunyi (hidden layer) yang terhubung secara rapat, serta sebuah lapisan
keluaran yang mengembalikan sebuah nilai tunggal yakni bobot lettuce segar. Jumlah lapisan
tersembunyi yang digunakan hanya dua dikarenakan data latih yang tidak banyak serta hanya
terdapat 9 fitur pada data latih. Sehingga pada kasus ini jaringan kecil dengan jumlah lapisan
tersembunyi yang sedikit merupakan pilihan guna menghindari overfitting. Fungsi aktivasi yang
digunakan yakni rectified linear unit (ReLU) dan untuk permasalahan regresi digunakan mean
squared error (MSE) loss function (loss functions lain digunakan untuk permasalahan klasifikasi).
Gambar 5. Kode Pembangun Model Sekuensial
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
6
Model yang dibangun ditunjukkan pada gambar 6, dimana jumlah masukan dari JST berjumlah
sembilan atau sejumlah fitur yang menjadi masukan. Dari gambar 6 ditunjukkan bahwa sembilan
fitur pada tabel 1 (selain bobot) dijadikan masukan model sekuensial, sedangkan bobot (fitur
pertama) menjadi keluaran. Selanjutnya model dapat dilatih menggunakan data latih dengan
perintah:
model.fit(train_features, train_weights, epochs=100, validation_split=0.2,
verbose=0)
Gambar 6. Model Sekuensial yang Dibangun
Setelah pelatihan, model terlatih disimpan dan diekspor seperti ditunjukkan pada gambar 7, dimana
model terlatih tersebut berukuran 86077 bytes. Hingga saat ini model terlatih yang dihasilkan
disebut juga model TensorFlow konvensional.
Gambar 7. Kode Guna Ekspor Model
Proses berikutnya adalah konversi dan penyimpanan model terlatih ke format TensorFlow
Lite dengan optimasi default, yakni dengan perintah berikut:
converter = tf.lite.TFLiteConverter.from_keras_model(model) tflite_model = converter.convert() open('./models/model.tflite', "wb").write(tflite_model)
Perintah tersebut menghasilkan model berukuran 20912 bytes, dimana ukuran ini akan direduksi
lagi menggunakan optimizers dari TensorFlow Lite Converter. Bentuk paling sederhana dari
kuantisasi post-training hanya mengkuantisasi bobot dari floating-point ke presisi 8 bits atau
disebut juga kuantisasi hibrida. Kode reduksi dengan kuantisasi tersebut ditunjukkan pada gambar
8.
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
7
model_size = os.path.getsize('./models/model.tflite')
print("TFLite model is {} bytes".format(model_size))
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_quant_model = converter.convert()
Gambar 8. Reduksi dengan Kuantisasi
Proses reduksi lanjutan dengan kuantisasi menghasilkan model dengan ukuran 8672 bytes atau
kurang lebih sepersepuluh dari ukuran model TensorFlow konvensional. Pada saat ini model yang
diperoleh disebut sebagai model terlatih teroptimasi (model.tflite).
Selanjutnya model terlatih terpotimasi akan diterapkan (deployed) pada Raspberry Pi pada
sistem pertanian vertikal, dimana instalasi yang dilakukan pada Raspberry Pi tersebut hanya untuk
model.tflite saja, sedangkan pada PC rancang bangun digunakan Python 3.7 dan pip guna
instalasi TensorFlow Lite wheel package. Sistem operasi yang digunakan pada Respberry Pi adalah
Raspbian Buster, sehingga untuk instalasi Python wheel digunakan perintah sebagai berikut:
pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0-cp37-
cp37m-linux_armv7l.whl
dimana proses berikutnya adalah eksekusi model dan melakukan prediksi dengan Python API.
Karena data yang digunakan merupakan data nyata dari berbagai sensor, maka teknik-teknik
preprocessing yang tepat menjadi keharusan untuk diimplementasikan guna sampling, penyaringan,
dan normalisasi data, sebelum menjadi masukan dari JST. Sehubungan dengan preprocessing
tersebut, terlebih dahulu harus dialokasikan memori untuk tensors dengan perintah sebagai berikut:
import tflite_runtime.interpreter as tflite interpreter = tflite.Interpreter(model_content=tflite_model_ffile) interpreter.allocate_tensors()
Selanjutnya fitur-fitur yang menjadi masukan diumpankan sebagai tensor masukan, lakukan invoke
terhadap interpreter, dan lakukan prediksi. Kode yang ditunjukkan pada gambar 9 memiliki array
bernama input_tensor yang berisi fitur-fitur masukan (semua fitur pada kolom Fitur dari tabel 1
selain Bobot, dan telah melalui proses preprocessing), dan tensor_index yang berisi nilai
sejumlah fitur yang menjadi masukan.
Gambar 9. Kode Guna Prediksi Bobot Lettuce
Hasil dan Pembahasan Dilakukan evaluasi terhadap akurasi model yang dibangun serta seberapa baik generalisasi
model terhadap set uji, dimana set uji tidak digunakan saat pelatihan model. Hasil evaluasi
menentukan seberapa akurat prediksi dari model untuk digunakan di dunia nyata. Evaluasi akurasi
ditunjukkan dengan grafik pada gambar 10. Tanda silang biru merupakan nilai bobot hasil prediksi
sebagai fungsi dari bobot sesungguhnya terhadap data uji (garis oranye), sedangkan error
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
8
merupakan jarak antara tanda silang biru dengan garis oranye atau dengan kata lain pada gambar
10 menunjukkan ditemukan error dalam data uji. Metric yang digunakan untuk evaluasi regresi
model adalah mean absolute percentage error (MAPE), yang mengukur seberapa jauh
penyimpangan data hasil prediksi terhadap data hasil pengamatan. Untuk data uji yang digunakan
dalam artikel ini diperoleh MAPE sebesar 9,44%. Nilai 9,44% secara statistik tergolong akurat
dimana nilai akurasi prediksi yang secara umum dijadikan acuan oleh para pelaku pertanian
vertikal adalah dinyatakan akurat jika MAPE < 10% dan jumlah outlier kurang dari 5 data [7].
Gambar 10. Grafik Evaluasi Akurasi Prediksi
Selanjutnya dilakukan uji performa yang membandingkan model terlatih pada instalasi
penuh dari distribusi TensorFlow pada Raspberry Pi yakni motherboard pada sistem pertanian
vertikal dengan model terlatih teroptimasi (model.tflite) yang menjalankan TensorFlow Lite
runtime juga pada motherboard dari sistem pertanian vertikal. Perbandingan tersebut ditunjukkan
pada gambar 11 dan gambar 12, dimana hasil yang merupakan running time ditampilkan dalam
ukuran detik.
Gambar 11. Running Time TensorFlow (model.tf) pada Motherboard Sistem Pertanian Vertikal
Gambar 12. Running Time TensorFlow Lite (model.tflite) pada Motherboard Sistem Pertanian
Vertikal
TECHNOPEX-2020 Institut Teknologi Indonesia ISSN: 2654-489X
9
Dari gambar 11 dan 12 ditunjukkan bahwa model.tflite pada TensorFlow Lite berjalan
sepuluh kali lebih cepat dibandingkan model.tf pada instalasi penuh TensorFlow. Koneksi internet
yang menghubungkan antara motherboard dengan custom cloud server saat running model.tflite
berjalan lancar dengan koneksi selular, dimana bandwidth yang dibutuhkan berkisar antara 30Kbps
hingga 750Kbps (intermitten connection).
Kesimpulan Berdasar penelitian yang dilakukan maka diperoleh kesimpulan sebagai bahwa TensorFlow
Lite dapat melakukan prediksi dengan hasil yang relatif akurat terhadap pertumbuhan lettuce pada
sistem pertanian vertikal tanpa membutuhkan perangkat komputer/server yang kuat. Begitupula
untuk koneksi internet yang dibutuhkan hanya sebatas koneksi intermitten, atau tanpa
membutuhkan koneksi internet yang cepat. TensorFlow Lite mereduksi kebutuhan komputasi
sekaligus ukuran dari model deep neural network, sehingga TensorFlow Lite runtime dapat
berjalan pada perangkat bergerak seperti Raspberry Pi. Dengan keberhasilan berjalannya model
deep neural network dengan TensorFlow Lite runtime pada Raspberry Pi maka diharapkan model
teroptimasi (model.tflite) dapat berjalan juga pada perangkat IoT bergerak lain yang juga banyak
digunakan pada sistem pertanian vertikal seperti misalnya microcontroller ARM Cortex-M.
Daftar pustaka [1] A. Singh, G. S. Aujla, S. Garg, G. Kaddoum, and G. Singh, “Deep-Learning-Based SDN
Model for Internet of Things: An Incremental Tensor Train Approach,” IEEE Internet Things
J., vol. 7, no. 7, pp. 6302–6311, Jul. 2020.
[2] G. S. Aujla, N. Kumar, A. Y. Zomaya, and R. Ranjan, “Optimal Decision Making for Big
Data Processing at Edge-Cloud Environment: An SDN Perspective,” IEEE Trans. Ind.
Informatics, vol. 14, no. 2, pp. 778–789, Feb. 2018.
[3] E. B. Martín Abadi, Ashish Agarwal, Paul Barham et al., “TensorFlow For Mobile & IoT.”
2015.
[4] Intel, “OpenCV.” 2020.
[5] Elastic, “What is the ELK Stack?” 2020.
[6] PyPA, “Virtualenv.” 2007.
[7] M. I. H. Bin Ismail and N. M. Thamrin, “IoT implementation for indoor vertical farming
watering system,” in 2017 International Conference on Electrical, Electronics and System
Engineering, ICEESE 2017, 2018.