Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengenalan Digit AI dengan PiCamera

Kenali digit dengan Raspberry Pi, Pi Kamera, OpenCV, dan TensorFlow.

Cerita

Dalam proyek ini, kita akan melatih jaringan saraf konvolusi dalam untuk mentranskripsikan angka. Kemudian kita akan menggunakan data dari tahap pembelajaran untuk memungkinkan Kamera Pi membaca dan mengenali angka. Pipeline AI akan diimplementasikan menggunakan Scikit dan OpenCV 3.3 untuk manipulasi gambar dan Keras yang menggunakan Tensorflow sebagai back-end untuk bagian deep learning.


Untuk mempermudah ini, tidak ada tahap pelokalan fitur yang dilakukan. Anda harus mendorong gambar ke depan lensa kamera sehingga hanya itu fitur yang dilihatnya.

Set data MNIST akan digunakan. Ini terdiri dari 60.000 contoh pelatihan dan 10.000 contoh uji dari angka tulisan tangan 0–9 yang diformat sebagai gambar monokrom 28x28-piksel. Pada dasarnya kami mengubah semua gambar yang diperoleh dari kamera menjadi gambar yang terlihat seperti ini:

Topologi jaringan utama dapat dijelaskan dengan gambar di bawah ini:

Lapisan terakhir adalah lapisan yang terhubung penuh yang memetakan ke 10 kategori yang mewakili 10 digit.

Kami akan melakukan dua hal. Pertama kami melatih jaringan untuk mengenali angka. Kemudian kami menggunakan bobot jaringan yang kami latih untuk mengenali digit umpan kamera langsung yang diambil dari kamera Raspberry Pi.

Saya menggunakan tangan ketiga untuk memegang Kamera Raspberry Pi karena hanya itu yang saya miliki. Pengaturan mekanis dapat dijelaskan dengan gambar di bawah ini:

Namun, sebelum kita memulai semua ini, mari kita instal semua yang kita butuhkan terlebih dahulu. Saya menggunakan lingkungan virtual Python untuk mengatur program. Jadi dengan asumsi Anda memiliki semua program yang tercantum di bawah ini, Anda dapat mengeluarkan:

source ~/.profile workon cvpython PiCameraApp.py --picamera 1

Jadi, mari kita lihat detailnya. Pertama, mari kita instal banyak program.

Instal Tensorflow

pip install tensorflow

Instal Keras

pip install keras 

Instal Open-CV 3.3

Instalasi OpenCV sedikit terlibat jika Anda memerlukan semua pengoptimalan. Ini berarti kita harus mengompilasinya dari awal karena yang dari pengelola paket pip tidak memiliki semua pengoptimalan.

Tutorial terbaik yang saya temukan adalah dari tautan ini:

https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/ 

Akhirnya instal picamera dengan pengoptimalan Numpy.

pip install "picamera[array]" 

Sekarang setelah semua tumpukan perangkat lunak terinstal di RPI, kita harus melakukan beberapa pelatihan. Jaringan harus dilatih pada laptop lebih disukai dengan GPU, kecuali Anda adalah pahlawan yang nyaman dengan kinerja lambat gletser dan Anda memutuskan untuk melakukannya pada RPI.

Melatih Jaringan

Untuk melatih jaringan, jalankan file python di laptop dengan mengeluarkan :

python Train_MNIST.py

Ini mengasumsikan bahwa Anda telah menginstal Cuda (jika menggunakan versi gpu), Tensorflow, Keras, dan matplotlib di laptop Anda.

Program pada file ini menggunakan Keras untuk mendefinisikan model jaringan saraf dalam, mengompilasinya, dan setelah fase pelatihan dan validasi selesai, bobot jaringan akan disimpan.

Pada akhirnya program menyimpan bobot jaringan sebagai file a.h5. Ini adalah file dengan bobot jaringan yang akan kita muat pada skrip pengenalan yang berjalan di RPI untuk mengenali gambar digit langsung.

Salin file bobot ke RPI Anda menggunakan scp atau WinSCP.

Jika Anda memiliki GPU NVIDIA, pelatihan akan memakan waktu beberapa menit tergantung pada kemampuan komputasi kartu Anda. Namun, untuk memanfaatkan GPU, Anda harus menginstal versi GPU Tensorflow serta CUDA yang dapat dieksekusi dari situs web NVIDIA. Jika tidak, mungkin perlu waktu lebih lama jika Anda hanya menggunakan CPU.

Mengenali Gambar Langsung dari Digit

Saya akhirnya menguji angka tulisan tangan dan angka cetak. Akurasi prediksi sebagian besar bergantung pada pencahayaan dan sudut gambar dan betapa ambigu (baca jelek) tulisan Anda sebenarnya. Setelah Anda memulai aplikasi, tekan t untuk membaca angka dan q untuk berhenti.

Mengenali angka 4. Saya harus menggunakan banyak tinta untuk menggambar 4.

Terkadang jaringan mencetak probabilitas yang sangat rendah untuk angka lainnya. Jadi ada kemungkinan 0,0001% bahwa itu mungkin tujuh.

Alat perdagangan.

Penjelasan Program

Program mengambil snapshot dari kamera dengan menekan tombol 't' dan menerapkan sejumlah langkah transformasi ke gambar sebelum meneruskannya ke DNN.

Hal pertama yang perlu diingat adalah bahwa gambar berwarna diperoleh sebagai array besar angka floating point Pertama, gambar diubah dari format RGB ke gambar skala abu-abu sehingga kita secara efektif membuang dua saluran.

Langkah selanjutnya adalah mengubah format floating point gambar menjadi angka 8 bit dengan rentang 0-255.

Selanjutnya kita menggunakan OpenCV, untuk melakukan thresholding. Metode Otsu digunakan untuk membatasi gambar secara otomatis sehingga fitur dari nomor tersebut terlihat jelas. Langkah selanjutnya adalah mengubah ukuran gambar ke format 28x28 piksel. Ini adalah format yang sama yang diterima oleh MNIST DNN.

Seseorang dapat menggunakan gambar scikit, open-cv atau Keras untuk melakukan penskalaan ulang.

Setelah gambar diskalakan ulang, langkah selanjutnya adalah membalikkan warna karena MNIST mengharapkan bahwa angka akan berada di latar belakang hitam, bukan garis hitam di latar belakang putih.

Setelah pasca-pemrosesan, gambar dikirim ke DNN yang membuat prediksi digit yang diamati.

Array keluaran mewakili probabilitas bahwa gambar yang diamati adalah angka tersebut. Jadi 1 di posisi 2 menunjukkan kepastian 100% karena ini adalah 1. Perlu diingat bahwa posisi 1 dicadangkan untuk 0.

Langkah Algoritma

1. Baca gambar

Langkah pertama adalah dengan jelas menempatkan gambar di depan kamera. Ini akan diskalakan nanti karena CNN (jaringan saraf convolutional) mengharapkan gambar dengan ukuran tertentu.

2.Konversi ke skala abu-abu

Gambar yang diperoleh kemudian diubah menjadi skala abu-abu dengan menggunakan pemanggilan fungsi scipy. Secara kebetulan Anda hanya dapat menggunakan opencv untuk manipulasi gambar tetapi Anda harus mengingat semua nama fungsi. Juga poin lain , ada beberapa perbedaan yang sangat halus antara scipy dan open-cv dalam hal fungsi tertentu.

3. Skala rentang gambar

Di sini gambar dikonversi dari format floating point ke rentang uint8 [0, 255]

4. Ambang Batas

Untuk mendapatkan gambar hitam putih yang bagus, thresholding dilakukan melalui metode Otsu. Ini adalah langkah saus ajaib karena melakukan ambang batas secara manual akan membuat satu orang memasukkan nilai satu per satu.

5. Ubah ukuran gambar

Gambar diubah ukurannya menjadi larik 28 kali 28 piksel. Ini kemudian diratakan menjadi ukuran array linier (28×28)

6. Balikkan gambar

MNIST DNN menerima gambar sebagai 28×28 piksel, digambar putih dengan latar belakang hitam. Jadi kita harus membalik gambarnya.

7. Masuk ke jaringan saraf terlatih

Ini adalah langkah terakhir. Di sini kita memuat bobot jaringan saraf dalam dan memasukkan gambar ke jaringan. Dibutuhkan 2-3 detik untuk menghasilkan prediksi.

8. Cetak jawaban

Akhirnya kita berakhir dengan larik keluaran dengan 10 kelas yang menampilkan semua digit dari 0-9. Posisi array mewakili probabilitas inferensi yang dibuat oleh jaringan. Menerjemahkan ini ke dalam ucapan manusia berarti memilih posisi dengan probabilitas tertinggi.

Pengaturan utama terlihat seperti perangkat medis.

Sirip!

Itu saja. Ini menunjukkan cara menerapkan jaringan saraf yang dapat mengenali angka.

Kode yang diunggah di GitHub seperti biasa.

Sumber:  Pengenalan Digit AI dengan PiCamera


Proses manufaktur

  1. Acceed:12 port gigabit switch dengan 4 port SFP
  2. AAEON berkolaborasi dengan Intel untuk memberikan solusi jaringan yang kuat
  3. Lanner untuk meningkatkan peralatan jaringan dengan Intel Xeon generasi ke-2
  4. Baca suhu dengan DS18B20 | Raspberry Pi 2
  5. Mengukur suhu dengan RASPBERRY PI
  6. Memantau Suhu Dengan Raspberry Pi
  7. Postur Pal dengan Walabot
  8. Memulai TJBot
  9. Membangun segway dengan Raspberry Pi
  10. GoPiGo v2 dengan Windows IoT