Tutorial ini berisi bagaimana cara installasi Raspberry Pi Object Detection agar dapat mendeteksi object menggunakan raspberry pi 4 dengan camera.
Tutorial instalasi Tensorflow pada Raspberry Pi4 ini berdasarkan Edje Electronics.
Sepanjang saya mencari tutorial mengenai tensorflow, tutorial dari Edje Electronics adalah yang paling mudah diikuti dan di mengerti. Maka dari itu alangkah lebih baik untuk melihat tutorial yang disajikan oleh Edje Electonics dan subscribe channel nya untuk mengetahui project-project selanjutnya yang ia buat.
Sebelum memulai tutorial, alat-alat yang saya gunakan, yaitu:
Tutorial ini di tulis pada tanggal 14/10/2019
Tutorial ini berisi bagaimana cara installasi Tensorflow Object Detection API pada Raspberry Pi 4 agar dapat mendeteksi objek. Dengan mengikuti alur selangkah-demi selangkah, diharapkan anda dapat menggunakan Raspberry Pi untuk mendeteksi suatu object dari camera secara langsung dengan menggunakan kamera USB ataupun Picamera. Anda dapat menyesuaikan tutorial ini kepada object yang ingin anda deteksi secara spesifik.
Buka command terminal, lalu eksekusi perintah:
sudo apt-get update
sudo apt-get dist-upgrade
pip3 install tensorflow
Tensorflow membutuhkan paket tambahan “LibAtlas” agar berfungsi dengan baik
sudo apt-get install libatlas-base-dev
Install beberapa dependencies yang dibutuhkan untuk menjalankan tensor flow seperti tertera dalam repositories Tensorflow instruksi installasi. Diantaranya:
sudo pip3 install pillow lxml jupyter matplotlib cython
sudo apt-get install python-tk
Selesai untuk instalasi Tensorflow, selanjutnya adalah OpenCV
OpenCV digunakan untuk mendeteksi object yang relative mudah dan sedikit error.
Agar OpenCV dapat bekerja dengan baik pada Raspberry Po. Ada beberapa dependencies yang harus di install menggunakan “apt-get”, yaitu:
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install qt4-dev-tools libatlas-base-dev
Tensorflow object detection menggunakan Protobuff, yaitu Google Protocol Buffer data format.
sudo apt-get install protobuf-compiler
Untuk memastikan terinstall dengan benar, maka perlu di cek dengan cara protoc –-version
Sehingga akan muncul tulisan libprotoc 3.6.1 atau versi yang terbaru.
Kita telah menginstall semua packages yang dibutuhkan untuk menjalankan Tensorflow, selanjutnya kita membutuhkan setup direktori Tensorflow. Kita akan membuat direktori tensorflow1:
mkdir tensorflow1
cd tensorflow1
Lalu, download repository tensorflow dari Github:
git clone --recurse-submodules https://github.com/tensorflow/models.git
Selanjutnya adalah memodifikasi PYTHONPATH environment. Hal ini berguna agar PYTHONPATH selalu ter-setup setiap kali terminal window terbuka.
sudo nano ~/.bashrc
Arahkan kursor ke bagian akhir file, dan pada baris terakhir tambahkan baris:
export PYTHONPATH=$PYTHONPATH:/home/pi/tensorflow1/models/research:/home/pi/tensorflow1/models/research/slim
Setelah itu, simpan dan keluar dari file tersebut. Keluar command terminal dan buka kembali.
Selanjutnya, kita membutuhkan Protoc untuk mengkompilasikan file Protocol Buffer (.proto) yang digunakan oleh Object Detection API. File tersebut ada dalam direktori “/research/object_detection/protos”, namun kita harus mengesekusi perintahnya dari direktori /research:
cd /home/pi/tensorflow1/models/research
protoc object_detection/protos/*.proto --python_out=.
Perintah di atas mengkonversikan seluruh file yang memiliki ekstensi “.proto” menjadi “_pb2.py”.
Selanjutnya, pergi ke direktori “object_detection”
cd /home/pi/tensorflow1/models/research/object_detection
Sekarang, kita akan download object detection model dari TensorFlow detection model zoo. Model zoo ini adalah koleksi dari Google untuk model yang telah di training dan memiliki kecepatan komputasi dan akurasi yang berbeda. Raspberry Pi memiliki processor yang relative lemah, oleh karena itu kita membutuhkan model yang menggunakan kekuatan processing yang kecil. Walaupun model berjalan dengan cepat, namun, memiliki tingkat akurasi yang rendah. Untuk tutorial kali ini kita akan menggunakan SSDLite-MobileNet, dimana model tersebut adalah yang paling cepat.
Google selalu mengeluarkan model terbaru dengan kecepatan dan performa yang lebih baik seiring waktu. Oleh sebab itu, dapat mengunjungi nya secara berkala.
Download SSDLite-MobileNet dengan cara:
wget http://download.tensorflow.org/models/object_detection/ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
tar -xzvf ssdlite_mobilenet_v2_coco_2018_05_09.tar.gz
Ok, sekarang model di dalam direktori “object_detection” telah siap untuk digunakan. Selanjutnya adalah tahap terakhir, yaitu mendeteksi objek
Akhirnya kita sampai pada bagian yang sangat menyenangkan yaitu mendeteksi object menggunakan kamera pada Raspberry Pi. Skrip Python pada tutorial ini adalah “Object_detection_picamera.py”. Secara umum, script ini memerintahkan untuk mengarahkan path kepada model dan labelmap, lalu memasukan model ke dalam memori, initialisasi Picamera dan memulai deteksi objek pada video frame dari Picamera.
Pastikan kita telah mengaktifasikan Camera pada Raspberry Pi Configuration.
Download “Object_detection_picamera.py” ke dalam direktori object_detection dari github EdjeElectronics dengan cara:
wget https://raw.githubusercontent.com/EdjeElectronics/TensorFlow-Object-Detection-on-the-Raspberry-Pi/master/Object_detection_picamera.py
Jalankan Script:
python3 Object_detection_picamera.py
Secara default, script akan mengesekusi perintah menggunakan Picamera, jika kita menggunakan USB camera, maka commandnya menjadi:
python3 Object_detection_picamera.py --usbcam
Voila!!! Sekarang anda dapat mendeteksi object.
Untuk mendeteksi objek sesuai dengan yang diinginkan anda dapat lihat pada link ini.
Kita dapat menggunakan kustom model yang telah di training sesuai dengan object yang hendak kita deteksi. Dengan cara memasukkan frozen inference graph ke dalam direktori object_detection dan mengubah path model tersebut di dalam script. Setelah kita memiliki model tertentu, simpan file tersebut di dalam directory object_detection dan label_map.pbtxt di dalam direktori object_detection/data. Tutorial untuk ini dapat di lihat dari video Edje Electronic yang lain di link youtube.
Terima kasih telah membaca tutorial singkat ini.
Semoga bermanfaat untuk anda.