Daftar Isi:

Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4: 6 Langkah
Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4: 6 Langkah

Video: Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4: 6 Langkah

Video: Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4: 6 Langkah
Video: Pengenalan Robot Operating System | Muhammad Auzan S.Si.,M.Cs. 2024, November
Anonim
Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4
Robot Pengenalan Rambu Lalu Lintas Raspberry Pi 4

Instruksi ini didasarkan pada proyek universitas saya. Tujuannya adalah untuk membuat sistem di mana jaringan saraf menganalisis gambar dan kemudian berdasarkan pengenalan akan memberitahu robot arduino untuk bergerak melalui Ros.

Misalnya jika rambu belok kanan dikenali maka robot akan belok kanan, jika rambu belok kiri dikenali maka robot akan belok kiri, jika tidak dikenali maka robot akan terus maju. Dataset yang akan digunakan adalah pengenalan rambu lalu lintas resmi dari INI (2019) (Institut Fur Neuroinformatik), dataset ini memiliki 43 kelas namun yang dibutuhkan hanya dua; Folder 00033 dan 00034 dalam dataset adalah tanda belok kiri dan kanan.

Langkah 1: Persyaratan

Persyaratan
Persyaratan
Persyaratan
Persyaratan
Persyaratan
Persyaratan

Persyaratan untuk proyek ini adalah sebagai berikut:

Sebuah robot arduino. (pada dasarnya arduino uno, driver motor dan motor) (tidak diperlukan jika Anda tidak menggunakan robot)

Sebuah raspberry pi 4.

Sebuah kamera pi.

Perangkat lunak yang diperlukan:

Python 3.

OpenCV4.

Tensorflow.

arduino IDE (tidak diperlukan jika Anda tidak menggunakan robot)

Ros (tidak diperlukan jika Anda tidak menggunakan robot)

Apa pun ide python favorit Anda (Di raspberry pi, saya menggunakan Thonny).

Untuk menyiapkan OpenCV dan Tensorflow, ikuti instruksi dari Adrian. Tautan:

Saya sarankan untuk melihat sebanyak mungkin tutorialnya, tutorialnya sangat menarik dan berguna untuk pemula maupun menengah.

Langkah 2: Pelatihan Data

Skrip kereta dirancang untuk mengakses dataset yang mengkompilasi sekitar 50.000 gambar dari 43 kelas. Skrip ditulis dalam python, menggunakan berbagai pustaka: os – ini untuk menautkan skrip python ke direktori yang benar di mana kumpulan data berada. Matplotlib – ini untuk menampilkan data dari model pelatihan. Tensorflow dan keras – ini adalah library yang digunakan untuk membuat model jaringan syaraf tiruan, mereka digunakan untuk mendesain model. Numpy – library ini untuk mengubah gambar menjadi array yang kemudian dapat dimasukkan melalui model untuk mengambil prediksi.

Script terlampir adalah kode python untuk membuat model dari dataset. Ini terdiri dari 2D convolutional dengan input (5, 5) dan aktivasi relu kemudian pooling, setelah ini dilakukan input melewati konvolusi lain dengan input (3, 3) dengan aktivasi dan pooling yang sama. Ini terjadi untuk terakhir kalinya sebelum diratakan dan kemudian kepadatan diterapkan pada jumlah kelas yang ada, dalam hal ini 43.

Langkah selanjutnya adalah menyusun model. Ini adalah bagian yang mengatur pengoptimal, sgd adalah yang paling pas karena ini mirip dengan pengoptimal yang digunakan dalam tugas 1. Sgd adalah singkatan dari Stochastic gradient descent. Juga di dalam kompiler, kerugian perlu diatur, memilih kerugian sparse_categorical_crossentropy adalah yang terbaik karena kategorinya adalah bilangan bulat dan model akan menampilkan prediksi untuk setiap kelas sebagai float antara 0 dan 1. 1 dengan akurasi 100%.

Setelah kompiler selesai, generator perlu diterapkan agar model dapat mulai memproses input gambar. Generator terdiri dari beberapa bagian: training_set – ini adalah tautan ke dataset yang digunakan untuk pelatihan, steps_per_Epoch – ini adalah jumlah langkah per epoch yang diperlukan, epochs – ini adalah berapa kali program akan melakukan iterasi melalui set data lengkap, validasi_data – ini adalah tautan ke kumpulan data yang digunakan untuk validasi, validasi_langkah – jumlah langkah yang digunakan untuk validasi, validasi terjadi di akhir setiap epoch.

Umumnya, penghapusan lengkap seluruh dataset harus selesai per zaman. Oleh karena itu misalnya kumpulan data 1024 gambar akan membutuhkan: Ukuran batch = 32, Langkah per epoch = 32, epoch = 1. Setiap langkah mencakup ukuran batch keseluruhan, jadi dengan ukuran batch 32 langkahnya akan menjadi 32. Di sisi lain Di sisi lain, yang terbaik adalah memiliki ukuran batch yang lebih besar daripada jumlah kelas, ini karena jika ukuran batch lebih kecil maka setiap langkah tidak dapat menyertakan gambar dari setiap kelas.

Setelah model selesai pelatihan, menggunakan matplotlib program akan membuat grafik output, ini menunjukkan sejarah pelatihan dari awal sampai akhir. Grafik terdiri dari akurasi, akurasi validasi, kehilangan dan kehilangan validasi, ini dibagi per epoch untuk menunjukkan bagaimana pelatihan berkembang. Tahap terakhir adalah menyimpan model sebagai file.h5 yang nantinya dapat diakses untuk proses prediksi. Menyimpan model berarti setiap kali program prediksi dijalankan, program pelatihan tidak perlu dijalankan lagi. Program pelatihan dapat memakan waktu hingga 10 menit per epoch pada raspberry pi.

Terlampir adalah skrip Pelatihan:

Langkah 3: Menerapkan Prediksi Kamera Pi

Program selanjutnya adalah prediksi dan script publisher.

Tahap pertama adalah memuat model menggunakan model.load(). Tahap kedua adalah melakukan iterasi melalui frame dari kamera pi menggunakan opencv dan kemudian mengubah ukuran frame menjadi ukuran yang sama dengan ukuran input yang digunakan pada tahap pelatihan, 32 x 32 piksel. Setelah ini selesai, bingkai yang diubah ukurannya dimasukkan melalui model menggunakan model.predict () yang mengeluarkan matriks, setiap elemen matriks adalah float dari 0 hingga 1, indeks elemen sama dengan kelas yang diwakilinya, oleh karena itu elemen pertama adalah kelas satu dan angka adalah prediksi kepastian gambar yang berasal dari kelas itu. Misalnya.

CATATAN: Jika Anda tidak menggunakan sisi robot. Hapus saja baris:

"impor rospy"

pembicara def (arah):

pesan = String()

pub = rospy. Publisher('robot', String, queue_size=10)

rospy.init_node('pembicara', anonim=Benar)

pesan = arah

rospy.loginfo(pesan)

pub.publish(pesan)"

"pembicara (arah)"

Terlampir adalah skrip kamera Pi.

Langkah 4: Robot Arduino

Langkah terakhir adalah script program robot.

Ini ditulis dalam C++ dan merupakan file.ino untuk arduino uno. Program ini membutuhkan perpustakaan ros yang dapat ditemukan di manajer perpustakaan di dalam ide. Setelah ini diimpor ada file contoh, saya memilih untuk memperluas file led blink karena ini akan melakukan tujuan yang sama dengan yang saya butuhkan. Program terus berulang sampai daya terputus, pertama-tama ia mendengarkan robot topik, ketika menangkap perintah dari topik itu, ia akan memiliki pernyataan if untuk melihat apa yang dikatakan perintah itu. Jika perintah dibiarkan maka skrip menjalankan metode belok kiri, jika perintahnya benar maka akan menjalankan metode belok kanan dan selain itu akan menjalankan metode maju. Ketiga metode ini sangat mirip satu sama lain, mereka memberi tahu pin digital menjadi LOW (ground) atau 100 (PWM) ini untuk agar robot tidak terlalu cepat dengan memberi tahu pengemudi motor untuk hanya membiarkan sedikit tegangan keluar. Urutan keluaran inilah yang membuat robot belok kiri kanan atau maju kedepan, hal ini dikarenakan orientasi tegangan yang menuju ke motor.

Terlampir adalah skrip.ino untuk arduino.

Langkah 5: Pengujian

Pengujian
Pengujian
Pengujian
Pengujian
Pengujian
Pengujian

Gambar terlampir sehingga proyek dari awal sampai akhir. Gambar pertama menunjukkan pelatihan dalam proses. Setelah itu selesai, cetakan dari model yang dibuat ditampilkan. Gambar ketiga menunjukkan prediksi dari skrip pelatihan. ini adalah tahap terakhir dari skrip pelatihan. Jika Anda melihat di folder skrip pelatihan, grafik dan model telah dibuat. Grafiknya akan terlihat seperti gambar 4 di sini, ini menunjukkan sejarah pelatihan dari awal hingga akhir.

Gambar terakhir adalah saat menjalankan skrip kamera pi, ini adalah streaming langsung dari kamera pi. prediksi dibuat pada setiap frame dan prediksi dicetak di terminal. Bingkai menunjukkan apa yang dilihat kamera.

Terlampir adalah laporan Universitas saya untuk proyek ini. Silakan baca untuk detail lebih lanjut dari proyek ini.

Langkah 6: Semua File Tambahan

Semua File Tambahan
Semua File Tambahan

Beberapa di antaranya adalah file pengujian yang saya buat di sepanjang jalan.

Direkomendasikan: