Low-cost Deep Learning Project with Jetson Nano

Source: Deep Learning on Medium

Dealing with Storage

Jetson Nano hanya dibekali dengan slot micro SD yang digunakan sebagai tempat untuk menempatkan OS yang diinstal atau yang bisa disebut dengan NVIDIA Jetpack (ubuntu based). Sehingga main storage dari device ini hanya terletak pada micro SD dengan minimal kapasitas sebesar 16GB, Sehingga, ketika pertama kali flashing OS kedalam micro SD, pastikan micro SD yang digunakan cukup untuk menyimpan OS serta file-file proyek yang dibutuhkan. Bagaimana jika file-file proyek terlalu besar dan micro SD tidak mencukupi? Solusinya ada di port USB yang disediakan pada device. Device ini memiliki 4 port USB 3.0 yang sangat memadai untuk menambah kapasitas storage kita dengan memasukkan USB Flash Drive kedalamnya. Oiya, saya juga pernah mencoba untuk menginstall Jetpack pada USB Flash Drive atau External Hard Drive, tetapi semua itu gagal karena Jetpack hanya mau diinstall menggunakan micro SD pada Jetson Nano. Sebenarnya bisa sih, tetapi caranya agak lama dan sedikit tricky hehe 😊.

Only Wired Network Connection

Tantangan berikutnya adalah masalah koneksi internet. Jetson Nano hanya mempunyai satu port ethernet (LAN) tanpa ada module wireless 😲, sehingga koneksi internet hanya bisa didapat menggunakan kabel LAN saja. Oleh karena itu hal ini bisa disiasati dengan cara menambahkan module wireless receiver atau menggunakan wifi receiver usb dongle. Pilih mana? kalau saya pilih usb dongle, karena tidak ribet instalasinya hehe😂.

Optimized Deep Learning Model

Yup, sekarang adalah yang paling menantang yaitu mengoptimasi model deep learning yang telah dibuat. Karena device ini sangat kecil tentunya komputasinya tidak bisa dibandingkan dengan Server yang menggunakan GPU NVIDIA lainnya. Sehingga optimasi model sangatlah diperlukan agar runtime ketika melakukan inferencing model tidak terlalu lama. Saya tidak merekomendasikan melakukan training model deep learning menggunakan Jetson Nano karena akan membutuhkan waktu yang sangat lama, jadi Jetson Nano hanya digunakan untuk mengimplementasikan (inferencing) model yang telah dihasilkan dari proses training di server. Untuk optimasi model NVIDIA sudah menyediakan library TensorRT yang mana sangat membantu dalam mengubah model yang telah di training dengan framework populer seperti Tensorflow, Pytorch, Keras dll menjadi format yang lebih teroptimasi.

Pengalaman lain yang saya dapatkan adalah ketika saya berusaha mengubah model Yolo yang di training menggunakan Darknet menjadi TensorRT. Karena saya ingin mencoba Realtime Object Detection, harapannya dengan diubah menjadi bentuk TensorRT maka FPS akan meningkat dan membuat processing videonya semakin cepat, tapi… ternyata tidak semudah itu 😅. Sebenanya memang arsitektur model Yolo cukuplah kompleks sehingga itulah yang membuat menjadi berat dan lama, sehingga cara satu-satunya adalah membuat model yang lebih ringan dan tetap diubah menjadi bentuk TensorRT. Akhirnya saya menemukan referensi yang bagus sekali untuk pemula seperti saya yang haus akan pretrained model 😂 [Jetson Inference]. Referensi tersebut menyediakan pretrained model yang sangat ringan untuk task-task deep learning yang umum dilakukan seperti Image Classification, Object Detection, dan Image Processing Task lainnya. Apabila kalian merupakan master dibidang permodelan, silakan saja membuat model yang seringan mungkin untuk diimplementasikan di Jetson Nano 😎.