Isi kandungan:
- Langkah 1: Video
- Langkah 2: Perkakasan
- Langkah 3: Sepotong Kod
- Langkah 4: Mendapatkan Imej
- Langkah 5: Alat dan Bahasa Yang Digunakan
- Langkah 6: Menyiapkan Set Data untuk Latihan
- Langkah 7: Rangkaian Neural
- Langkah 8: Latihan Rangkaian Neural
- Langkah 9: Menguji Rangkaian Neural
- Langkah 10: Hasil dan Bahagian Seterusnya…
- Langkah 11: Pengesanan Objek
- Langkah 12: Video
- Langkah 13: Pelabelan
- Langkah 14: Melabel GUI
- Langkah 15: Perpustakaan Diperlukan
- Langkah 16: Sel yang Tinggal
Video: Adakah Itu Tangan? (Kamera Raspberry Pi + Rangkaian Neural) Bahagian 1/2: 16 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Beberapa hari yang lalu, saya mencederakan pergelangan tangan kanan di gim. Selepas itu setiap kali saya menggunakan tetikus komputer, ia menyebabkan banyak kesakitan kerana sudut pergelangan tangan yang curam.
Ketika itulah saya memukul "tidakkah lebih baik jika kita dapat menukar permukaan apa pun menjadi trackpad" dan saya tidak tahu mengapa tetapi atas sebab tertentu saya memikirkannya, filemnya DI SINI, saya akan membiarkan kalian memikirkannya keluar. Itu adalah pemikiran yang menarik tetapi saya tidak tahu jika saya dapat melakukannya, saya memutuskan untuk mencubanya.
Artikel ini menangkap apa yang keluar daripadanya.
Sebelum kita memulakan, saya mempunyai penafian-
'Pada akhir artikel ini, saya tidak dapat mengubah permukaan apa pun menjadi trackpad tetapi saya tidak banyak belajar dan menambahkan alat besar ke gudang senjata saya. Saya harap itu berlaku juga kepada anda '
Mari kita mulakan.
Langkah 1: Video
Berikut adalah video kecil 5 minit yang merangkumi semua langkah. Tengoklah.
Langkah 2: Perkakasan
Saya menyediakan pi raspberry bersama dengan kamera raspberry pi pada ketinggian kira-kira 45 cm. Ini memberi kita kawasan pemantauan sekitar 25x25 cm di bawah kamera.
Kamera Raspberry pi dan raspberry pi mudah didapati, hanya google dan anda semestinya dapat mencari kedai tempatan.
Lihat Pautan ini atau salah satu senarai main Raspberry pi saya untuk menjadikan pi tanpa kepala anda berfungsi dan berjalan.
Mengikuti penyediaan ini, kami memerlukan sekeping kod yang memutuskan apakah ada tangan di kawasan yang dipantau oleh kamera dan jika ya di mana ia berada.
Langkah 3: Sepotong Kod
Sepotong kod yang membolehkan kita memutuskan sama ada terdapat kawasan menarik yang menggunakan sesuatu yang disebut Neural Network. Mereka tergolong dalam kategori pengaturcaraan di mana kita tidak menentukan peraturan untuk membuat keputusan tetapi kita menunjukkan cukup banyak data rangkaian saraf sehingga dapat menentukan peraturan sendiri.
Dalam kes kami, bukannya membuat kod seperti mana tangan kami menunjukkan gambar rangkaian neural yang diambil dari raspberry pi yang berisi tangan dan yang tidak mengandungi tangan. Fasa ini disebut latihan rangkaian saraf dan gambar yang digunakan disebut set data latihan.
Langkah 4: Mendapatkan Imej
Saya jauh-jauh log masuk ke raspberry pi saya dan menangkap banyak gambar menggunakan arahan berikut.
sudo raspistill -w 640 -h 480 -rot 90 -t 250000 -t1 5000 -o frame% 04d.jpg
Saya menangkap 80 gambar dengan tangan dan 80 gambar yang tidak mengandungi tangan. 160 gambar tidak cukup untuk melatih rangkaian saraf dengan betul tetapi harus cukup untuk bukti konsep.
Selain 160 gambar, saya menangkap 20 gambar lagi untuk menguji rangkaian kami setelah dilatih.
Setelah set data siap saya mula menulis kod untuk rangkaian neural.
Langkah 5: Alat dan Bahasa Yang Digunakan
Saya menulis rangkaian neural saya di pustaka pembelajaran mendalam python yang disebut Keras dan kod ditulis pada notebook jupyter dari navigator anaconda.
Langkah 6: Menyiapkan Set Data untuk Latihan
Pertama (Gambar # 1) Saya memasukkan semua perpustakaan yang diperlukan untuk projek ini, yang merangkumi PIL, matplotlib, numpy, os dan Keras. Di sel kedua notebook python (Gambar # 2) saya menentukan jalan ke set data dan mencetak jumlah sampel. Sekarang kita perlu memuatkan semua gambar ke dalam susunan numpy, oleh itu di sel ketiga (Gambar # 2) Saya membuat susunan numpy 82 (bilangan sampel tangan) +75 (bilangan sampel bukan tangan) iaitu 157x100x100x3. 157 adalah jumlah gambar yang saya miliki, 100x100 adalah ukuran gambar ukuran kami dan 3 untuk lapisan warna merah, hijau dan biru dalam gambar.
Di sel keempat dan kelima, kami memuatkan gambar yang berisi tangan diikuti oleh gambar yang tidak mengandungi tangan dalam susunan numpy. Di sel keenam, kita membahagikan setiap nilai dengan 255 sehingga mengehadkan julat nilai dari 0 hingga 1. (Gambar # 3)
Saya minta maaf sekiranya gambar yang dilampirkan tidak cukup bagus. Berikut adalah pautan ke repositori GITHUB untuk anda melihat kodnya. Jangan lupa ganti nama laluan direktori dengan jalan anda:).
Bergerak bersama.
Seterusnya kita perlu melabel setiap gambar, jadi, kita membuat susunan numpy satu dimensi dengan panjang 157. 82 entri pertama diatur ke 1 dan selebihnya 75 entri diatur ke 0 menyampaikan rangkaian saraf yang 82 gambar pertama adalah dari satu kelas dan selebihnya dari yang lain. (Gambar # 4)
Sekarang mari kita buat rangkaian saraf.
Langkah 7: Rangkaian Neural
Di sel kesembilan, kita menentukan rangkaian saraf kita. Ia mengandungi tiga pengulangan lapisan konvolusi diikuti oleh lapisan maxpool dengan 8, 12 dan 16 penapis konvolusi masing-masing. Berikutan itu, kita mempunyai dua jaring saraf yang padat. Melampirkan dua gambar untuk langkah ini. Pertama adalah snap kod yang membuat rangkaian neural dan yang kedua adalah perwakilan bergambar dari rangkaian neural dengan dimensi output dan operasi yang dijelaskan.
Langkah 8: Latihan Rangkaian Neural
Di sel kesepuluh, kami mengkonfigurasi pengoptimal rangkaian neural untuk 'adam' dan fungsi kerugian menjadi 'binary_crossentropy'. Mereka memainkan peranan utama dalam bagaimana bobot rangkaian dikemas kini. Akhirnya ketika kita menjalankan sel kesebelas, rangkaian saraf mula melatih. Semasa rangkaian sedang melihat fungsi kehilangan dan pastikan ia menurun.
Langkah 9: Menguji Rangkaian Neural
Setelah rangkaian saraf dilatih, kita perlu menyediakan set data ujian. Kami mengulangi prosedur yang dilakukan untuk menyediakan set latihan pada sel ke-3, ke-4, ke-5 dan ke-6 pada data ujian untuk membuat set ujian. Kami juga menyediakan label untuk set ujian tetapi kali ini kami menjalankan model pada set data ini untuk mendapatkan ramalan dan tidak melatih.
Langkah 10: Hasil dan Bahagian Seterusnya…
Saya mendapat ketepatan ujian sebanyak 88% tetapi ambil ini dengan sedikit garam kerana dataset yang digunakan untuk melatih dan menguji model ini sangat kecil dan tidak mencukupi untuk melatih model ini dengan betul.
Bagaimanapun saya harap anda menikmati artikel ini. Niat saya di sebalik latihan ini belum selesai dan berjaga-jaga untuk bahagian ke-2. Saya akan memuat naiknya secepat mungkin.
Di bahagian seterusnya, kami akan melatih rangkaian saraf lain yang akan memberitahu kami lokasi tangan dalam gambar yang dikesan tangan.
Semua pertanyaan dialu-alukan.
Sekiranya ada yang berminat untuk menggunakan set data kecil saya, beritahu saya dalam komen. Saya akan menyediakannya.
Terima kasih untuk membaca. Saya akan berjumpa dengan anda dengan bahagian kedua sehingga kemudian mengapa anda tidak membuat dan melatih rangkaian saraf.
Edit: - Langkah seterusnya adalah untuk bahagian kedua.
Langkah 11: Pengesanan Objek
Pada langkah sebelumnya kami membuat NN yang memberitahu kami sama ada gambar ujian mengandungi tangan atau tidak. Nah apa seterusnya? Sekiranya NN mengelaskan gambar sebagai tangan yang ada, kami ingin mengetahui lokasi tangan. Ini disebut pengesanan objek dalam literatur penglihatan komputer. Oleh itu, mari kita latih NN yang sama.
Langkah 12: Video
Video 3 minit yang menerangkan semua langkah yang tinggal. Tengoklah.
Langkah 13: Pelabelan
Sekiranya anda mahukan rangkaian saraf untuk mengeluarkan lokasi tangan, kita perlu melatihnya sedemikian rupa, tidak seperti rangkaian neural sebelumnya di mana setiap gambar dilabel sama ada dengan tangan dan tanpa tangan. Kali ini semua gambar dengan tangan akan mempunyai empat label yang sesuai dengan koordinat pepenjuru dari kotak pengikat di sebelah tangan dalam gambar itu.
Gambar fail csv yang dilampirkan mengandungi label untuk setiap gambar. Harap maklum bahawa koordinat dinormalisasi dengan dimensi gambar iaitu jika koordinat X atas berada pada 320 piksel dalam gambar dengan lebar 640 piksel, kami akan melabelkannya sebagai 0,5.
Langkah 14: Melabel GUI
Anda mungkin tertanya-tanya bagaimana saya berjaya melabelkan semua 82 gambar, baik saya menulis GUI di python yang membantu saya menjalankan tugas ini. Setelah gambar dimuat dalam GUI. Saya klik kiri pada koordinat atas dan klik kanan pada koordinat bawah kemungkinan kotak pengikat di sekitar tangan. Koordinat ini kemudian ditulis ke fail berikut yang saya klik butang seterusnya untuk memuatkan gambar seterusnya. Saya mengulangi prosedur ini untuk semua 82 gambar kereta api dan 4 ujian. Setelah label siap, sudah tiba masanya latihan.
Langkah 15: Perpustakaan Diperlukan
Mula-mula kita perlu memuatkan semua perpustakaan yang diperlukan. Yang merangkumi
- PIL untuk manipulasi gambar,
- matplotlib untuk merancang,
- numpy untuk operasi matriks,
- os untuk fungsi yang bergantung pada sistem operasi dan
- keras untuk rangkaian saraf.
Langkah 16: Sel yang Tinggal
Pada sel ke-2, ke-3, ke-4 dan ke-5 kita memuatkan gambar ke dalam susunan numpy dan membuat susunan empat dimensi dari fail csv untuk bertindak sebagai label. Dalam nombor sel 6 kita membuat rangkaian saraf kita. Senibina identik dengan rangkaian saraf yang digunakan untuk klasifikasi kecuali dimensi lapisan keluaran yang 4 dan bukan 1. Perbezaan lain datang dari fungsi kerugian yang digunakan iaitu ralat kuasa dua. Dalam nombor sel 8, kami memulakan latihan rangkaian neural kami setelah dilatih, saya menjalankan model ini pada set ujian untuk mendapatkan ramalan untuk kotak pembatas pada koordinat overlay dari kotak pengikat yang kelihatannya cukup tepat.
Terima kasih untuk membaca.
Disyorkan:
Cara Membuat PCB Profesional (Adakah Itu Berharga?): 5 Langkah
Cara Membuat PCB Profesional (Adakah Itu Layak?): Saya ingin berkongsi " pengalaman PCB " dengan anda
ESP32: Adakah Anda Tahu Apa itu DAC ?: 7 Langkah
ESP32: Adakah Anda Tahu Apa itu DAC?: Hari ini, kita akan membincangkan dua masalah. Yang pertama ialah DAC (Digital-to-Analog Converter). Saya menganggapnya penting, kerana melaluinya, misalnya, kita membuat output audio dalam ESP32. Isu kedua yang akan kita bahas hari ini adalah osil
Bahagian Terperinci Casting: Jari Prostetik (Itu Bersinar, Tukar Warna Dengan Panas, dan Banyak Lagi ): 10 Langkah (dengan Gambar)
Bahagian Terperinci Casting: Jari Prostetik (Itu Cahaya, Tukar Warna Dengan Panas, dan Banyak Lagi …): Ini adalah panduan untuk membuang bahagian kecil dan kompleks - dengan murah. Harus dikatakan saya bukan pakar lakonan, tetapi kerana keperluan sering kali menjadi ibu ciptaan - beberapa proses di sini berjalan dengan baik. Saya bertemu Nigel Ackland di Future Fest di London, dan
Robot Rangkaian Neural Arduino: 21 Langkah (dengan Gambar)
Arduino Neural Network Robot: Instruksional ini didasarkan pada siri 3 Bahagian yang saya buat untuk Saluran YouTube Make yang menunjukkan kepada anda bagaimana cara membuat prototaip, reka bentuk, pemasangan, dan program, robot rangkaian saraf Arduino anda sendiri. Setelah menonton siri penuh, anda semestinya mempunyai pertaruhan
Buat Pemacu Kilat Tanpa Kes yang Hebat, Adakah Saya Menyebutkan Itu Bukti Air? 13 Langkah
Buat Pemacu Kilat Tanpa Casing yang Hebat, Adakah Saya Menyebutkan Itu Bukti Air ?: Ketahui cara menggunakan beberapa bahan yang biasa ada yang mungkin anda miliki di sekitar rumah untuk membuat pemacu kilat tanpa casing yang hebat