Isi kandungan:

Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: 6 Langkah (dengan Gambar)
Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: 6 Langkah (dengan Gambar)

Video: Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: 6 Langkah (dengan Gambar)

Video: Pengecaman Imej Dengan Papan K210 dan Arduino IDE / Micropython: 6 Langkah (dengan Gambar)
Video: Топ 5 скрытых полезных программ Windows 10 2024, Jun
Anonim
Image
Image

Saya sudah menulis satu artikel mengenai cara menjalankan demo OpenMV di Sipeed Maix Bit dan juga membuat video demo pengesanan objek dengan papan ini. Salah satu daripada banyak pertanyaan yang diajukan orang adalah - bagaimana saya dapat mengenali objek yang tidak dilatih oleh rangkaian saraf? Dengan kata lain bagaimana membuat pengkelasan gambar anda sendiri dan menjalankannya dengan pecutan perkakasan.

Ini adalah soalan yang dapat difahami, kerana untuk projek anda, anda mungkin tidak perlu mengenali beberapa objek generik, seperti kucing dan anjing dan kapal terbang. Anda ingin mengenali sesuatu yang spesifik, misalnya, jenis anjing untuk pintu haiwan peliharaan automatik itu, atau spesies tumbuhan untuk disusun, atau aplikasi keluar lain yang boleh anda fikirkan!

Saya faham! Dalam artikel ini saya akan mengajar anda cara membuat pengkelasan gambar tersuai anda sendiri dengan pembelajaran transfer di Keras, menukar model terlatih ke format.kmodel dan menjalankannya di papan Sipeed (boleh ada papan apa pun, Bit / Dock atau Go) menggunakan Micropython atau Arduino IDE. Dan hanya imaginasi anda yang akan menjadi batas tugas yang dapat anda lakukan dengan pengetahuan ini.

KEMASKINI MEI 2020: Melihat bagaimana artikel dan video saya mengenai Pengecaman Gambar dengan papan K210 masih sangat popular dan antara hasil teratas di YouTube dan Google, saya memutuskan untuk mengemas kini artikel tersebut untuk memasukkan maklumat mengenai aXeleRate, kerangka berasaskan Keras untuk AI di Tepi yang saya bangunkan.

aXeleRate, pada dasarnya, didasarkan pada koleksi skrip yang saya gunakan untuk melatih model pengecaman gambar / pengesanan objek - digabungkan menjadi satu kerangka kerja dan dioptimumkan untuk aliran kerja di Google Colab. Ia lebih senang digunakan dan lebih terkini.

Untuk versi lama artikel, anda masih boleh melihatnya di steemit.com.

Langkah 1: CNN dan Transfer Pembelajaran: Beberapa Teori

Pembelajaran CNN dan Transfer: Beberapa Teori
Pembelajaran CNN dan Transfer: Beberapa Teori

Rangkaian Neural Konvolusional atau CNN adalah kelas rangkaian neural dalam, yang paling sering digunakan untuk menganalisis citra visual. Terdapat banyak literatur di internet mengenai topik ini dan saya akan memberikan beberapa pautan di bahagian terakhir artikel. Ringkasnya, anda boleh menganggap CNN sebagai rangkaian penapis, diterapkan pada gambar, setiap penapis mencari ciri tertentu dalam gambar - pada lapisan konvolusional yang lebih rendah, ciri-ciri biasanya adalah garis dan bentuk sederhana dan pada lapisan yang lebih tinggi, ciri boleh menjadi lebih spesifik, misalnya bahagian badan, tekstur tertentu, bahagian haiwan atau tumbuhan, dan lain-lain. Kehadiran sekumpulan ciri tertentu dapat memberi kita petunjuk tentang apa yang mungkin terdapat pada gambar tersebut. Misai, dua mata dan hidung hitam? Mesti kucing! Daun hijau, batang pokok? Nampak seperti pokok!

Saya harap anda mendapat idea mengenai prinsip kerja CNN sekarang. Biasanya rangkaian neural yang mendalam memerlukan ribuan gambar dan waktu latihan (bergantung pada perkakasan yang anda gunakan untuk latihan) untuk "mengembangkan" penapis yang berguna untuk mengenali jenis objek yang anda mahukan. Tetapi ada jalan pintas.

Model yang dilatih untuk mengenali banyak objek umum yang berbeza (kucing, anjing, perkakas rumah, pengangkutan, dan lain-lain) sudah mempunyai banyak penapis berguna "dikembangkan", jadi kami tidak memerlukannya untuk belajar mengenali bentuk dan bahagian asasnya objek lagi. Kami hanya dapat melatih beberapa lapisan terakhir rangkaian untuk mengenali kelas objek tertentu, yang penting bagi kami. Ini dipanggil "transfer learning". Anda memerlukan lebih banyak data latihan dan menghitung waktu dengan pembelajaran pemindahan, kerana anda hanya melatih beberapa lapisan terakhir rangkaian, yang terdiri daripada beberapa ratus neuron.

Kedengarannya hebat, bukan? Mari lihat bagaimana melaksanakannya.

Langkah 2: Siapkan Persekitaran Anda

Siapkan Persekitaran Anda
Siapkan Persekitaran Anda

Terdapat dua cara untuk menggunakan aXeleRate: berjalan secara tempatan pada mesin Ubuntu atau di Google Colab. Untuk berjalan di Google Colab, lihat contoh ini:

Klasifikasi gambar Notebook Colab

Melatih model anda secara tempatan dan mengeksportnya untuk digunakan dengan pecutan perkakasan juga jauh lebih mudah sekarang.

Persekitaran kerja saya adalah Ubuntu 16.04, 64bit. Anda boleh menggunakan mesin Virtual untuk menjalankan gambar Ubuntu kerana kami tidak akan menggunakan GPU untuk latihan. Dengan beberapa modifikasi, anda juga dapat menjalankan skrip latihan di Windows, tetapi untuk penukaran model, anda perlu menggunakan sistem Linux. Oleh itu, persekitaran yang lebih baik untuk anda melaksanakan tutorial ini ialah Ubuntu 16.04, berjalan secara asli atau dalam mesin maya.

Mari mulakan dengan memasang Miniconda, yang merupakan pengurus persekitaran untuk Python. Kami akan mewujudkan persekitaran terpencil, jadi kami tidak akan mengubah apa-apa secara tidak sengaja dalam persekitaran Python sistem anda.

Muat turun pemasang di sini

Setelah pemasangan selesai, buat persekitaran baru:

conda create -n ml python = 3.7

Mari aktifkan persekitaran baru

conda aktifkan ml

Awalan sebelum shell bash anda akan muncul dengan nama persekitaran, menunjukkan bahawa anda bekerja sekarang di persekitaran tersebut.

Langkah 3: Pasang Ujian AXeleRate dan Jalankan

Pasang Ujian AXeleRate dan Jalankan
Pasang Ujian AXeleRate dan Jalankan

Pasang aXeleRate pada mesin tempatan anda dengan

pasang pip git +

Untuk memuat turun contoh jalankan:

git klon

Anda boleh menjalankan ujian pantas dengan test_training.py dalam folder aXeleRate. Ia akan menjalankan latihan dan kesimpulan untuk setiap jenis model, menyimpan dan menukar model terlatih. Oleh kerana hanya latihan untuk 5 zaman dan set data sangat kecil, anda tidak akan dapat model yang berguna, tetapi skrip ini hanya bertujuan untuk memeriksa tidak adanya kesalahan.

Langkah 4: Latih kembali Model, Tukarkan Model Keras ke.kmodel

Latih kembali Model, Tukar Model Keras menjadi.kmodel
Latih kembali Model, Tukar Model Keras menjadi.kmodel

Untuk contoh mainan ini, kami akan melatih model untuk mengenali Santa Claus dan Arduino Uno. Jelas anda boleh memilih kelas lain. Muat turun set data dari sini. Buat salinan fail classifier.json dalam folder konfigurasi, kemudian ubahnya, seperti fail konfigurasi di tangkapan skrin - pastikan jalan ke folder latihan dan pengesahan betul!

Jalankan arahan berikut dari folder aXeleRate:

python axelerate / train.py - c configs / santa_uno.json

Latihan akan dimulakan. Sekiranya ketepatan pengesahan (metrik pengesahan kami) tidak bertambah selama 20 zaman, latihan akan berhenti sebelum waktunya. Setiap kali ketepatan pengesahan bertambah baik, model disimpan dalam folder projek. Setelah latihan selesai, aXeleRate secara automatik menukar model terbaik ke format yang ditentukan - anda boleh memilih, "tflite", "k210" atau "edgetpu" seperti sekarang.

Langkah 5: Jalankan Model pada Sipeed Maix Bit

Jalankan Model di Sipeed Maix Bit
Jalankan Model di Sipeed Maix Bit
Jalankan Model di Sipeed Maix Bit
Jalankan Model di Sipeed Maix Bit
Jalankan Model di Sipeed Maix Bit
Jalankan Model di Sipeed Maix Bit

Terdapat dua cara untuk menjalankan model yang anda ada pada perkakasan Sipeed Maix: firmware micropython dan Arduino IDE. Perkakasan Micropython lebih mudah digunakan, tetapi ia menggunakan sebahagian besar memori yang ada, jadi masih ada sedikit ruang untuk model. Arduino IDE pada dasarnya adalah kod C, yang jauh lebih efisien dan mempunyai jejak memori yang lebih kecil. Model saya hanya 1.9Mb, jadi kedua-dua pilihan berfungsi untuknya. Anda boleh menggunakan model seluas 2.9 Mb dengan Micropython, untuk apa-apa yang lebih besar, anda perlu mempertimbangkan untuk menggunakan Arduino IDE.

Muat turun OpenMV IDE dari sini dan firmware micropython minimum dari sini.

Bakar firmware dengan alat kflash_gui. Anda juga dapat memilih untuk membakar model terlatih untuk berkedip juga, seperti yang ditunjukkan pada tangkapan layar. Atau salin ke kad SD (dalam hal ini salin.kmodel ke akar kad SD dan masukkan kad SD ke dalam Sipeed Maix Bit)

Buka OpenMV IDE dan tekan butang sambung. Buka skrip santa_uno.py dari folder example_scripts dan tekan butang Mula. Anda semestinya melihat siaran langsung dari kamera dan jika anda membuka Serial Terminal, anda akan mendapat hasil pengecaman gambar teratas dengan skor keyakinan!

Untuk menggunakan dengan Arduino IDE, pertama anda perlu mengikuti prosedur untuk menambahkan papan Sipeed ke Arduino IDE, yang didokumentasikan di sini. Versi Arduino IDE anda mestilah sekurang-kurangnya 1.8.12. Setelah anda menambah papan, buka lakaran mobilenet_v1_transfer_learning.ino dan muat naik ke Sipeed Maix Bit. Tukar nama model pada kad SD menjadi "model" (atau buat salinan dengan nama ini). Anda boleh menukar nama label di names.cpp. Ia akan menunjukkan aliran kamera langsung di skrin Sipeed Maix bersama dengan hasil pengecaman gambar teratas.

Langkah 6: Kesimpulan

Berikut adalah beberapa lagi bahan untuk dibaca mengenai topik CNN dan memindahkan pembelajaran:

Transfer Learning menggunakan Mobilenet dan Keras Penjelasan hebat mengenai pembelajaran Transfer, tutorial ini menggunakan versi kod yang diubah suai dari artikel itu.

Kucing dan anjing dan rangkaian saraf konvolusioner Menjelaskan asas-asas di sebalik CNN dan menggambarkan beberapa penapis. Dengan kucing!

Latih, Tukar, Jalankan MobileNet di Sipeed MaixPy dan MaixDuino! Tutorial dari pasukan Sipeed tentang bagaimana melatih kelas Mobilenet 1000 dari awal (tiada pembelajaran pemindahan). Anda boleh memuat turun model mereka yang sudah dilatih dan mencubanya!

Harap anda dapat menggunakan pengetahuan yang anda miliki sekarang untuk membina beberapa projek hebat dengan penglihatan mesin! Anda boleh membeli papan Sipeed di sini, mereka adalah antara pilihan termurah yang tersedia untuk ML pada sistem tertanam.

Disyorkan: