Isi kandungan:

Buat Pengelas Sampah Pi Dengan ML !: 8 Langkah (dengan Gambar)
Buat Pengelas Sampah Pi Dengan ML !: 8 Langkah (dengan Gambar)

Video: Buat Pengelas Sampah Pi Dengan ML !: 8 Langkah (dengan Gambar)

Video: Buat Pengelas Sampah Pi Dengan ML !: 8 Langkah (dengan Gambar)
Video: Teknik las vertikal #viral #belajarlas #belajarlaslistrik #welder #hermancoy 2024, Disember
Anonim
Buat Pengelas Sampah Pi Dengan ML!
Buat Pengelas Sampah Pi Dengan ML!
Buat Pengelas Sampah Pi Dengan ML!
Buat Pengelas Sampah Pi Dengan ML!

Projek Pengelas Sampah, yang dikenali sebagai "Kemana perginya ?!", direka untuk menjadikan barang-barang yang dibuang lebih cepat dan lebih dipercayai.

Projek ini menggunakan model Machine Learning (ML) yang dilatih di Lobe, pembangun model ML yang mesra pemula (tanpa kod!), Untuk mengenal pasti sama ada objek masuk sampah, kitar semula, kompos, atau sisa berbahaya. Model ini kemudian dimuat ke komputer Raspberry Pi 4 untuk menjadikannya boleh digunakan di mana sahaja anda mungkin menjumpai tong sampah!

Tutorial ini membimbing anda bagaimana membuat projek Trash Classifier anda sendiri pada Raspberry Pi dari model Lobe TensorFlow di Python3.

Kesukaran: Pemula ++ (beberapa pengetahuan dengan litar dan pengekodan sangat membantu)

Masa Baca: 5 min

Masa Binaan: 60 - 90 min

Kos: ~ $ 70 (termasuk Pi 4)

Bekalan:

Perisian (sisi PC)

  • Lobe
  • WinSCP (atau kaedah pemindahan fail SSH lain, boleh menggunakan CyberDuck untuk Mac)
  • Terminal
  • Sambungan Desktop Jauh atau RealVNC

Perkakasan

  • Raspberry Pi, Kad SD, dan bekalan kuasa USB-C (5V, 2.5A)
  • Kamera Pi
  • Tekan butang
  • 5 LED (4 LED penunjuk dan 1 LED status)

    • LED kuning: sampah
    • LED biru: kitar semula
    • LED hijau: kompos
    • LED merah: sisa berbahaya
    • LED putih: status
  • 6 220 perintang Ohm
  • 10 wayar pelompat M-to-M
  • Papan roti, separuh saiz

Sekiranya anda memilih untuk menyolder:

  • 1 penyambung JST, hujung wanita sahaja
  • 2 wayar pelompat M-to-F
  • 10 wayar pelompat F-to-F
  • PCB

Pagar

  • Sarung projek (mis. Kotak kadbod, kayu, atau plastik, kira-kira 6 "x 5" x 4 ")
  • Kotak plastik jernih 0.5 "x 0.5" (2cm x 2cm)

    Cth. dari penutup bekas makanan plastik

  • Velcro

Alat

  • Pemotong wayar
  • Pisau ketepatan (mis. Pisau tepat) dan tikar pemotong
  • Besi pematerian (pilihan)
  • Alat lebur panas (atau gam bukan konduktif lain - epoksi berfungsi hebat tetapi kekal)

Langkah 1: Sebelum Kita Mula

Sebelum Kita Bermula
Sebelum Kita Bermula

Projek ini menganggap anda memulakan dengan Raspberry Pi yang lengkap dalam konfigurasi tanpa kepala. Berikut adalah panduan mesra pemula mengenai cara melakukannya.

Ia juga berguna untuk mengetahui beberapa perkara berikut:

  1. Keakraban dengan Raspberry Pi

    • Inilah panduan memulakan yang berguna!
    • Juga berguna: Bermula dengan kamera Pi
  2. Membaca dan menyunting kod Python (anda tidak perlu menulis program, hanya edit)

    Pengenalan Python dengan Raspberry Pi

  3. Membaca gambar rajah pendawaian Fritzing
  4. Menggunakan papan roti

    Cara menggunakan tutorial papan roti

Ketahui tempat sampah anda pergi

Setiap bandar di seluruh AS (dan saya menganggap dunia) mempunyai sampah / kitar semula / kompos / dll. sistem pengumpulan. Ini bermaksud bahawa untuk membuat pengelasan sampah yang tepat, kita perlu 1) membina model ML khusus (kita akan membahasnya pada langkah seterusnya - tanpa kod!) Dan 2) mengetahui ke mana setiap tong sampah pergi.

Oleh kerana saya tidak selalu mengetahui tong sampah yang sesuai untuk setiap item yang saya gunakan untuk melatih model saya, saya menggunakan selebaran Seattle Utilities (Foto 1), dan juga "Ke mana ia pergi?" alat carian untuk bandar Seattle! Lihat sumber apa yang ada di bandar anda dengan mencari utiliti pengumpulan sampah bandar anda dan membaca laman webnya.

Langkah 2: Buat Model ML Khusus di Lobe

Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe
Buat Model ML Khusus di Lobe

Lobe adalah alat yang mudah digunakan yang mempunyai semua yang anda perlukan untuk menghidupkan idea pembelajaran mesin anda. Tunjukkan kepadanya contoh perkara yang anda mahu lakukan, dan secara automatik melatih model pembelajaran mesin khusus yang dapat dieksport untuk peranti dan aplikasi canggih. Tidak memerlukan pengalaman untuk memulakan. Anda boleh melatih komputer sendiri secara percuma!

Berikut adalah gambaran ringkas mengenai cara menggunakan Lobe:

1. Buka program Lobe dan buat projek baru.

2. Ambil atau import gambar dan labelkan ke dalam kategori yang sesuai. (Foto 1) Kami akan memerlukan label ini di bahagian perisian projek ini.

Terdapat dua cara untuk mengimport foto:

  1. Ambil gambar item terus dari kamera web komputer anda, atau
  2. Import foto dari folder yang ada di komputer anda.

    Perlu diingat bahawa nama folder foto akan digunakan sebagai nama label kategori, jadi pastikan ia sesuai dengan label yang ada

Selain itu, saya akhirnya menggunakan kedua-dua kaedah, kerana semakin banyak foto yang anda miliki, semakin tepat model anda.

3. Gunakan ciri "Main" untuk menguji ketepatan model. Ubah jarak, pencahayaan, kedudukan tangan, dan lain-lain untuk mengenal pasti di mana model itu dan tidak tepat. Tambahkan lebih banyak gambar jika perlu. (Foto 3 - 4)

4. Apabila anda sudah bersedia, eksport model Lobe ML anda dalam format TensorFlow (TF) Lite.

Petua:

  • Sebelum mengimport foto, buat senarai semua kategori yang anda perlukan dan bagaimana anda mahu melabelnya (mis. "Sampah," "kitar semula," "kompos," dll.)

    Catatan: Gunakan label yang sama seperti yang ditunjukkan dalam foto "Lobe Model Label" di atas untuk mengurangkan jumlah kod yang perlu anda ubah

  • Sertakan kategori untuk "bukan sampah" yang mempunyai foto apa sahaja yang terdapat dalam foto (mis. Tangan dan lengan, latar belakang, dll.)
  • Sekiranya boleh, ambil gambar dari Kamera Pi dan import ke Lobe. Ini akan meningkatkan ketepatan model anda!
  • Perlukan lebih banyak gambar? Lihat set data sumber terbuka di Kaggle, termasuk set gambar klasifikasi sampah ini!
  • Perlukan lebih banyak pertolongan? Sambung dengan Lobe Coommunity di Reddit!

Langkah 3: Bangunkan: Perkakasan

Bangunkan: Perkakasan!
Bangunkan: Perkakasan!
Bangunkan: Perkakasan!
Bangunkan: Perkakasan!
Bangunkan: Perkakasan!
Bangunkan: Perkakasan!

1. Sambungkan Pi Camera ke Pi dengan berhati-hati (kunjungi panduan memulakan Pi Foundation untuk maklumat lebih lanjut). (Foto 1)

2. Ikuti rajah pendawaian untuk menyambungkan butang tekan dan LED ke pin Pi GPIO.

  • Butang tekan: Sambungkan satu kaki butang tekan ke pin GPIO 2. Sambungkan yang lain, melalui perintang, ke pin GPIO GND.
  • LED Kuning: Sambungkan kaki positif (lebih panjang) ke pin GPIO 17. Sambungkan kaki yang lain, melalui perintang, ke pin GPIO GND.
  • LED Biru: Sambungkan kaki positif ke pin GPIO 27. Sambungkan kaki yang lain, melalui perintang, ke pin GPIO GND.
  • LED Hijau: Sambungkan kaki positif ke pin GPIO 22. Sambungkan kaki yang lain, melalui perintang, ke pin GPIO GND.
  • LED Merah: Sambungkan kaki positif ke pin GPIO 23. Sambungkan kaki yang lain, melalui perintang, ke pin GPIO GND.
  • LED Putih: Sambungkan kaki positif ke pin GPIO 24. Sambungkan kaki yang lain, melalui perintang, ke pin GPIO GND.

3. Sebaiknya uji litar anda di papan roti dan jalankan program sebelum menyolder atau menjadikan sambungannya kekal. Untuk melakukan ini, kita perlu menulis dan memuat naik program perisian kita, jadi mari kita pergi ke langkah seterusnya!

Langkah 4: Kodkannya: Perisian

Kodkannya: Perisian!
Kodkannya: Perisian!
Kodkannya: Perisian!
Kodkannya: Perisian!

1. Pada PC anda, buka WinSCP dan sambungkan ke Pi anda. Buat folder Lobe di direktori utama Pi anda dan buat folder model di direktori itu.

2. Seret kandungan folder Lobe TF yang dihasilkan ke Pi. Catat jalan fail: / home / pi / Lobe / model

3. Pada Pi, buka terminal dan muat turun perpustakaan lobe-python untuk Python3 dengan menjalankan perintah bash berikut:

memasang pip3

pip3 memasang lobe

4. Muat turun kod Trash Classifier (rpi_trash_classifier.py) dari repo ini ke Pi (klik butang "Code" seperti yang ditunjukkan dalam Foto 1).

  • Lebih suka menyalin / menampal? Dapatkan kod mentah di sini.
  • Lebih suka memuat turun ke komputer anda? Muat turun repo / kod ke komputer anda kemudian pindahkan kod Python ke Pi melalui WinSCP (atau program pemindahan fail jauh pilihan anda).

5. Setelah anda menyambungkan perkakasan ke pin GPIO Pi, baca kod contoh dan kemas kini laluan fail yang diperlukan:

  • Baris 29: jalan masuk ke model Lobe TF
  • Garis 47 dan 83: jalan masuk ke gambar yang dirakam melalui Kamera Pi

6. Sekiranya perlu, kemas kini label model dalam kod agar sesuai dengan label model Lobe anda (termasuk penggunaan huruf besar, tanda baca, dll.):

  • Baris 57: "sampah"
  • Baris 60: "kitar semula"
  • Baris 63: "kompos"
  • Baris 66: "kemudahan sisa berbahaya"
  • Baris 69: "bukan sampah!"

7. Jalankan program menggunakan Python3 di tetingkap terminal:

python3 rpi_trash_classifier.py

Langkah 5: Uji Ia: Jalankan Program

Uji Ia: Jalankan Program!
Uji Ia: Jalankan Program!
Uji Ia: Jalankan Program!
Uji Ia: Jalankan Program!
Uji Ia: Jalankan Program!
Uji Ia: Jalankan Program!

Gambaran Keseluruhan Program

Semasa anda pertama kali menjalankan program ini, akan memakan masa untuk memuatkan perpustakaan TensorFlow dan model Lobe ML. Apabila program siap menangkap gambar, lampu status (LED putih) akan berdenyut.

Setelah anda mengambil gambar, program akan membandingkan gambar dengan model Lobe ML dan menghasilkan ramalan yang dihasilkan (baris 83). Output menentukan cahaya yang dihidupkan: kuning (sampah), biru (kitar semula), hijau (kompos), atau merah (sisa berbahaya).

Sekiranya tidak ada LED penunjuk yang menyala dan LED status kembali ke modus nadi, ini bermaksud bahawa gambar yang diambil adalah "bukan sampah", dengan kata lain, ambil semula foto!

Menangkap Imej

Tekan butang tekan untuk menangkap gambar. Perhatikan bahawa anda mungkin perlu menahan butang tekan sekurang-kurangnya 1 saat agar program mendaftarkan akhbar. Dianjurkan untuk mengambil beberapa gambar ujian, kemudian membukanya di Desktop untuk lebih memahami pandangan dan bingkai kamera.

Untuk memberi masa pengguna untuk meletakkan objek dan tahap cahaya kamera disesuaikan, diperlukan sekitar 5 saat untuk menangkap gambar sepenuhnya. Anda mungkin mengubah tetapan ini dalam kod (baris 35 dan 41), tetapi perlu diingat Pi Foundation mencadangkan minimum 2s untuk penyesuaian tahap cahaya.

Penyelesaian masalah

Cabaran terbesar adalah memastikan bahawa gambar yang diambil adalah yang kita harapkan, jadi luangkan sedikit masa untuk meninjau gambar dan membandingkan hasil yang diharapkan dengan output LED indikator. Sekiranya perlu, anda boleh menghantar gambar ke model Lobe ML untuk inferensi langsung dan perbandingan yang lebih pantas.

Beberapa perkara yang perlu diperhatikan:

  • Perpustakaan TensorFlow kemungkinan akan membuang beberapa mesej amaran - ini khas untuk versi yang digunakan dalam contoh kod ini.
  • Label ramalan mestilah sama seperti yang ditulis dalam fungsi led_select (), termasuk penggunaan huruf besar, tanda baca, dan jarak. Pastikan anda mengubahnya jika anda mempunyai model Lobe yang berbeza.
  • Pi memerlukan bekalan kuasa yang stabil. Lampu kuasa Pi mestilah terang, merah padat.
  • Sekiranya satu atau lebih LED tidak menyala ketika diharapkan, periksa dengan memaksanya menyala dengan arahan:

red_led.on ()

Langkah 6: (Pilihan) Bina: Selesaikan Litar Anda

(Pilihan) Bangunnya: Selesaikan Litar Anda!
(Pilihan) Bangunnya: Selesaikan Litar Anda!
(Pilihan) Bangunnya: Selesaikan Litar Anda!
(Pilihan) Bangunnya: Selesaikan Litar Anda!
(Pilihan) Bangunnya: Selesaikan Litar Anda!
(Pilihan) Bangunnya: Selesaikan Litar Anda!

Sekarang kita telah menguji dan, jika perlu, melakukan debug, projek kita sehingga berfungsi seperti yang diharapkan, kita sudah bersedia untuk menyelesaikan litar kita!

Catatan: Sekiranya anda tidak mempunyai solder, anda boleh melangkau langkah ini. Salah satu alternatif adalah melapisi sambungan wayar dalam gam panas (pilihan ini akan membolehkan anda memperbaiki / menambah / menggunakan sesuatu kemudian, tetapi lebih cenderung pecah), atau menggunakan epoksi atau gam kekal yang serupa (pilihan ini akan jauh lebih tahan lama tetapi anda tidak akan dapat menggunakan litar atau berpotensi Pi setelah melakukan ini)

Komen pantas mengenai pilihan reka bentuk saya (Foto 1):

  • Saya memilih wayar jumper wanita untuk LED dan Pi GPIO kerana mereka membenarkan saya mengeluarkan LED dan menukar warna atau memindahkannya jika diperlukan. Anda boleh melupakannya sekiranya anda ingin membuat sambungan kekal.
  • Begitu juga, saya memilih penyambung JST untuk butang tekan.

Maju ke bangunan

1. Potong setiap wayar pelompat wanita menjadi separuh (ya, semuanya!). Dengan menggunakan pelucut wayar, keluarkan kira-kira 1/4 (1 / 2cm) penebat wayar.

2. Untuk setiap LED, pateri perintang 220Ω ke kaki negatif (lebih pendek). (Foto 2)

3. Potong sekeping kecil, kira-kira 1 (2cm) tiub penyusutan haba dan tekan persimpangan LED dan perintang. Pastikan kaki perintang yang lain dapat diakses, kemudian panaskan tiub pengecutan sehingga ia menahan sendi. (Foto 3)

4. Masukkan setiap LED ke dalam sepasang wayar pelompat wanita. (Foto 4)

5. Labelkan wayar pelompat (mis. Dengan pita), kemudian pateri kabel pelompat ke papan litar bercetak (PCB) anda. (Foto 5)

6. Seterusnya, gunakan wayar pelompat wanita (potong) untuk menyambungkan setiap LED ke pin Pi GPIO masing-masing. Pateri dan labelkan wayar pelompat supaya logam telanjang menyambung ke kaki LED positif melalui PCB. (Foto 5)

Catatan: Di mana anda menyolder wayar ini akan bergantung pada susun atur PCB anda. Anda juga boleh menyolder wayar ini terus ke wayar LED positif.

7. Pateri perintang 220Ω ke hujung negatif (hitam) penyambung JST. (Foto 6)

8. Pateri penyambung JST dan perintang ke butang tekan. (Foto 6)

9. Sambungkan wayar pelompat M-ke-F antara penyambung butang tekan dan pin GPIO (peringatan: hitam adalah GND).

10. Lapisan PCB sambungan dalam gam panas atau epoksi untuk sambungan yang lebih selamat.

Catatan: jika anda memilih untuk menggunakan epoksi, anda mungkin tidak dapat menggunakan pin GPIO Pi untuk projek lain pada masa akan datang. Sekiranya anda bimbang tentang ini, tambahkan kabel pita GPIO dan sambungkan kabel pelompat ke kabel itu.

Langkah 7: (Pilihan) Bina: Kes

(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!
(Pilihan) Bina: Kes!

Buat penutup untuk Pi anda yang akan menahan kamera, butang tekan, dan LED di tempat sambil melindungi Pi. Reka bentuk kandang anda sendiri atau ikuti arahan membina kami di bawah ini untuk membuat prototaip kepingan kadbod dengan cepat!

  1. Di bahagian atas kotak kadbod kecil, lacak lokasi tombol tekan, lampu status, lampu pengenal, dan tetingkap kamera pi (Foto 1).

    Catatan: Tetingkap kamera Pi mestilah sekitar 3/4 "x 1/2"

  2. Dengan menggunakan pisau ketepatan anda, potong jejaknya.

    Catatan: anda mungkin ingin menguji ukurannya semasa anda (Foto 1)

  3. Pilihan: Cat kes! Saya memilih cat semburan:)
  4. Potong penutup "tingkap" segi empat tepat untuk Kamera Pi (Foto 4) dan lekatkan di bahagian dalam kotak
  5. Akhirnya, potong slot untuk kabel kuasa Pi.

    Disarankan untuk memasang semua elektronik terlebih dahulu untuk mencari tempat terbaik untuk slot kabel kuasa pi

Langkah 8: Pasang dan Terapkan

Pasang dan Sebarkan!
Pasang dan Sebarkan!

Itu sahaja! Anda sudah bersedia untuk memasang dan menggunakan projek anda! Letakkan kandang di atas tong sampah anda, pasangkan Pi, dan jalankan program untuk mendapatkan kaedah mengurangkan sisa kami yang lebih pantas dan lebih dipercayai. Yay!

Maju kehadapan

  • Kongsi projek dan idea anda dengan orang lain melalui komuniti Lobe Reddit!
  • Lihat repo Lobe Python GitHub untuk gambaran umum mengenai cara menggunakan Python untuk menyebarkan pelbagai jenis projek Lobe
  • Soalan atau permintaan projek? Tinggalkan komen mengenai projek ini atau hubungi kami terus: [email protected]

Disyorkan: