Isi kandungan:
- Langkah 1: Keperluan
- Langkah 2: Latihan Data
- Langkah 3: Melaksanakan Ramalan Kamera Pi
- Langkah 4: Robot Arduino
- Langkah 5: Menguji
- Langkah 6: Semua Fail Tambahan
Video: Robp Pengecam Tanda Lalu Lintas Raspberry Pi 4: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Pengajaran ini berdasarkan projek universiti saya. Tujuannya adalah untuk membuat sistem di mana jaringan saraf menganalisis gambar dan kemudian berdasarkan pengakuan akan memberitahu robot arduino untuk bergerak melalui Ros.
Contohnya jika tanda belok kanan dikenali maka robot akan membelok ke kanan, jika tanda belok kiri diiktiraf maka robot akan membelok ke kiri, jika tidak ada yang dikenali maka robot akan terus maju. Set data yang akan digunakan adalah pengenalan tanda lalu lintas rasmi dari INI (2019) (Institut Fur Neuroinformatik), set data ini mempunyai 43 kelas namun hanya dua yang diperlukan; 00033 dan 00034 folder dalam set data adalah tanda belok kiri dan kanan.
Langkah 1: Keperluan
Keperluan untuk projek ini adalah seperti berikut:
Robot arduino. (pada dasarnya arduino uno, pemandu motor dan motor) (tidak diperlukan jika anda tidak menggunakan robot)
A raspberry pi 4.
Kamera pi.
Perisian yang diperlukan:
Python 3.
OpenCV 4.
Aliran Tensor.
arduino IDE (tidak diperlukan jika anda tidak menggunakan robot)
Ros (tidak diperlukan jika anda tidak menggunakan robot)
Apa sahaja idea python kegemaran anda (Pada pi raspberry, saya menggunakan Thonny).
Untuk menyediakan OpenCV dan Tensorflow, ikuti arahan oleh Adrian. Pautan:
Saya cadangkan untuk melihat seberapa banyak tutorialnya, ia sangat menarik dan berguna untuk pemula dan juga perantaraan.
Langkah 2: Latihan Data
Skrip kereta api dirancang untuk mengakses set data yang menyusun sekitar 50, 000 gambar dari 43 kelas. Skrip ditulis dalam python, menggunakan pelbagai perpustakaan: os - ini untuk menghubungkan skrip python ke direktori yang betul di mana set data berada. Matplotlib - ini untuk memaparkan data dari model latihan. Tensorflow dan keras - ini adalah perpustakaan yang digunakan untuk membuat model rangkaian neural buatan, mereka digunakan untuk merancang model. Numpy - perpustakaan ini untuk mengubah gambar menjadi array yang kemudian dapat dimasukkan melalui model untuk mendapatkan ramalan.
Skrip yang dilampirkan adalah kod python untuk membuat model dari set data. Ini terdiri dari konvolusional 2D dengan input (5, 5) dan pengaktifan relu kemudian penyatuan, setelah ini dilakukan input akan melalui konvolusi lain dengan input (3, 3) dengan pengaktifan dan penyatuan yang sama. Ini berlaku buat kali terakhir sebelum diratakan dan kemudian ketumpatan digunakan untuk jumlah kelas yang ada, dalam kes ini 43.
Langkah seterusnya adalah menyusun model. Ini adalah bahagian yang menetapkan pengoptimum, sgd paling sesuai kerana ini serupa dengan pengoptimum yang digunakan dalam tugasan 1. Sgd adalah singkatan dari Stochastic gradient keturunan. Juga dalam penyusun kerugian perlu ditentukan, memilih kerugian_kategorik_krossentropi adalah yang paling sesuai kerana kategori adalah sebagai bilangan bulat dan model akan menghasilkan ramalan untuk setiap kelas sebagai pelampung antara 0 dan 1. 1 menjadi ketepatan 100%.
Setelah penyusun selesai, penjana perlu digunakan untuk model untuk memulakan pemprosesan input gambar. Penjana terdiri daripada pelbagai bahagian: training_set - ini adalah pautan ke dataset yang digunakan untuk latihan, step_per_epoch - ini adalah jumlah bilangan setiap zaman yang diperlukan, zaman - ini adalah berapa kali program akan berulang melalui satu set data yang lengkap, validation_data - ini adalah pautan ke set data yang digunakan untuk pengesahan, validation_steps - bilangan langkah yang digunakan untuk pengesahan, pengesahan berlaku pada akhir setiap zaman.
Secara amnya, penghapusan keseluruhan set data perlu lengkap setiap zaman. Oleh itu, sebagai contoh, set data 1024 gambar akan memerlukan: Ukuran kumpulan = 32, Langkah per zaman = 32, zaman = 1. Setiap langkah merangkumi keseluruhan ukuran kumpulan, jadi dengan ukuran kumpulan 32 langkah akan menjadi 32. Sebaliknya tangan, yang terbaik adalah mempunyai ukuran kumpulan yang lebih besar daripada jumlah kelas, ini kerana jika ukuran kumpulan lebih kecil maka setiap langkah tidak dapat menyertakan gambar dari setiap kelas.
Setelah model selesai latihan, menggunakan matplotlib program akan membuat grafik output, ini menunjukkan sejarah latihan dari awal hingga akhir. Grafik terdiri daripada ketepatan, ketepatan pengesahan, kehilangan dan kehilangan pengesahan, ini dibahagi setiap zaman untuk menunjukkan bagaimana latihan itu berlangsung. Peringkat terakhir adalah menyimpan model sebagai fail.h5 yang dapat diakses kemudian untuk proses ramalan. Menyimpan model bermaksud bahawa setiap kali program ramalan dijalankan, program latihan tidak perlu dijalankan lagi. Program latihan boleh memakan masa hingga 10 minit setiap zaman untuk mendapatkan raspberry pi.
Dilampirkan skrip Latihan:
Langkah 3: Melaksanakan Ramalan Kamera Pi
Program seterusnya adalah ramalan dan skrip penerbit.
Tahap pertama adalah memuatkan model menggunakan model.load (). Tahap kedua adalah melakukan iterasi melalui bingkai dari kamera pi menggunakan opencv dan kemudian mengubah ukuran bingkai ke ukuran yang sama dengan ukuran input yang digunakan dalam tahap latihan, 32 x 32 piksel. Setelah ini dilakukan, bingkai ukuran baru dimasukkan melalui model menggunakan model.predict () yang menghasilkan matriks, setiap elemen matriks adalah float dari 0 hingga 1, indeks elemen adalah sama dengan kelas yang diwakilinya, oleh itu elemen pertama adalah kelas satu dan nombornya adalah ramalan kepastian gambar yang berasal dari kelas itu. Cth.
CATATAN: Sekiranya anda tidak menggunakan sisi robot. Keluarkan baris:
"import rospy"
pembicara def (arah):
mesej = Rentetan ()
pub = rospy. Penerbit ('robot', String, queue_size = 10)
rospy.init_node ('pembicara', anonim = Benar)
mesej = arah
rospy.loginfo (mesej)
pub.publish (mesej)"
"pembicara (arah)"
Terlampir adalah skrip kamera Pi.
Langkah 4: Robot Arduino
Langkah terakhir adalah skrip program robot.
Ini ditulis dalam C ++ dan merupakan fail.ino untuk arduino uno. Program ini memerlukan perpustakaan ros yang boleh didapati di pengurus perpustakaan dalam idea. Setelah ini diimport terdapat fail contoh, saya memilih untuk memperluas fail berkedip led kerana ini akan melakukan objektif yang serupa dengan yang saya perlukan. Program ini terus berjalan sehingga daya terputus, pertama ia mendengar robot topik, ketika menangkap perintah dari topik itu, ia akan mempunyai pernyataan if untuk melihat apa yang diperintahkan oleh perintah itu. Sekiranya arahan dibiarkan maka skrip menjalankan kaedah belok kiri, jika perintah itu betul maka ia akan menjalankan kaedah belok kanan dan yang lain akan menjalankan kaedah maju. Ketiga-tiga kaedah ini sangat serupa antara satu sama lain, mereka mengatakan pin digital sama ada RENDAH (tanah) atau 100 (PWM) ini agar robot tidak terlalu pantas dengan memberitahu pemandu motor hanya membiarkan sedikit voltan keluar. Urutan output inilah yang membuat robot berpusing ke kiri dan kanan atau maju, ini disebabkan oleh arah voltan yang menuju ke motor.
Terlampir adalah skrip.ino untuk arduino.
Langkah 5: Menguji
Gambar dilampirkan sehingga projek dari awal hingga akhir. Gambar pertama menunjukkan latihan dalam proses. Setelah selesai, cetakan dari model yang dibuat ditunjukkan. Gambar ketiga menunjukkan ramalan dari skrip latihan. ini adalah peringkat terakhir skrip latihan. Sekiranya anda melihat dalam folder skrip latihan, grafik dan model telah dibuat. Grafiknya seperti gambar 4 di sini, ini menunjukkan sejarah latihan dari awal hingga akhir.
Gambar terakhir adalah semasa menjalankan skrip kamera pi, adalah aliran langsung dari kamera pi. ramalan dibuat pada setiap bingkai dan ramalan dicetak di terminal. Bingkai menunjukkan apa yang dilihat oleh kamera.
Terlampir adalah laporan Universiti saya untuk projek ini. Sila baca untuk maklumat lebih terperinci mengenai projek ini.
Langkah 6: Semua Fail Tambahan
Sebilangannya adalah fail pengujian yang saya buat sepanjang perjalanan.
Disyorkan:
Mengawal Lampu Lalu Lintas: 4 Langkah
Mengawal Lampu Lalu Lintas: Dalam tutorial ini kita belajar bagaimana membuat lampu isyarat dan cara mengawalnya diuruskan oleh kad Drivemall. Kita akan melihat cara membuat lampu isyarat untuk kereta dan pejalan kaki dengan butang tempahan. Sekiranya kita tidak mempunyai drivermall kita boleh menggunakan ardui
Cara Membuat Lampu Lalu Lintas Bertenaga Arduino: 4 Langkah
Cara Membuat Lampu Lalu Lintas Bertenaga Arduino: Dalam posting ini, kita akan membincangkan mengenai projek Arduino iaitu Sistem Lampu Pedestrians Arduino Traffic. Projek ini sangat menarik untuk dicuba dan dengan bantuan beberapa seni dan kraf, anda dapat membuat keseluruhan pemandangan lampu isyarat dan
Pindahkan Pembelajaran Dengan NVIDIA JetBot - Keseronokan Dengan Lalu Lintas: 6 Langkah
Transfer Learning With NVIDIA JetBot - Fun With Traffic Cones: Ajarkan robot anda untuk mencari jalan di labirin kon lalu lintas menggunakan kamera dan model pembelajaran mendalam yang canggih
Keselamatan Siber-Fizikal Tempat Letak Kereta Pintar dan Kawalan Lalu Lintas: 6 Langkah
Keselamatan Fizikal Siber Tempat Letak Kereta Pintar dan Kawalan Lalu Lintas: Internet berkembang dengan berbilion peranti termasuk kereta, sensor, komputer, pelayan, peti sejuk, peranti mudah alih dan banyak lagi dengan kadar yang belum pernah terjadi sebelumnya. Ini memperkenalkan pelbagai risiko dan kerentanan dalam infrastruktur, operasi dan
Permainan Pembelajaran Lampu Lalu Lintas: 5 Langkah
Game Belajar Lampu Lalu Lintas: Dalam tutorial ini, anda akan belajar bagaimana membuat permainan pembelajaran lampu isyarat Arduino. Dengan bermain permainan, kanak-kanak dapat memeriksa sama ada mereka mempunyai pengetahuan mengenai lampu isyarat. Permainan ini dipisahkan menjadi dua bahagian, jika pemain mengikuti