Daftar Isi:

Membuat Pi Trash Classifier Dengan ML!: 8 Langkah (dengan Gambar)
Membuat Pi Trash Classifier Dengan ML!: 8 Langkah (dengan Gambar)

Video: Membuat Pi Trash Classifier Dengan ML!: 8 Langkah (dengan Gambar)

Video: Membuat Pi Trash Classifier Dengan ML!: 8 Langkah (dengan Gambar)
Video: Recyclable Waste Classifier using Opencv Python | Computer Vision 2024, November
Anonim
Buat Pengklasifikasi Sampah Pi Dengan ML!
Buat Pengklasifikasi Sampah Pi Dengan ML!
Buat Pengklasifikasi Sampah Pi Dengan ML!
Buat Pengklasifikasi Sampah Pi Dengan ML!

Proyek Pengklasifikasi Sampah, yang dikenal sebagai "Ke mana perginya?!", dirancang untuk membuat membuang barang lebih cepat dan lebih dapat diandalkan.

Proyek ini menggunakan model Machine Learning (ML) yang dilatih di Lobe, pembuat model ML yang ramah pemula (tanpa kode!), untuk mengidentifikasi apakah suatu objek masuk ke tempat sampah, daur ulang, kompos, atau limbah berbahaya. Model tersebut kemudian dimuat ke komputer Raspberry Pi 4 agar dapat digunakan di mana pun Anda mungkin menemukan tempat sampah!

Tutorial ini memandu Anda cara membuat proyek Pengklasifikasi Sampah Anda sendiri pada Raspberry Pi dari model Lobe TensorFlow di Python3.

Kesulitan: Pemula ++ (beberapa pengetahuan dengan sirkuit dan pengkodean sangat membantu)

Waktu Baca: 5 menit

Waktu Pembuatan: 60 - 90 menit

Biaya: ~$70 (termasuk Pi 4)

Perlengkapan:

Perangkat Lunak (sisi PC)

  • Cuping
  • WinSCP (atau metode transfer file SSH lainnya, dapat menggunakan CyberDuck untuk Mac)
  • Terminal
  • Koneksi Desktop Jarak Jauh atau RealVNC

Perangkat keras

  • Raspberry Pi, Kartu SD, dan catu daya USB-C (5V, 2.5A)
  • Kamera Pi
  • Tekan tombol
  • 5 LED (4 LED indikator dan 1 LED status)

    • LED kuning: sampah
    • LED biru: daur ulang
    • LED hijau: kompos
    • LED merah: limbah berbahaya
    • LED putih: status
  • 6 220 Ohm resistor
  • 10 kabel jumper M-ke-M
  • Papan tempat memotong roti, setengah ukuran

Jika Anda memilih untuk menyolder:

  • 1 konektor JST, ujung perempuan saja
  • 2 kabel jumper M-ke-F
  • 10 kabel jumper F-ke-F
  • PCB

Lampiran

  • Kotak proyek (mis. kardus, kayu, atau kotak plastik, kira-kira 6" x 5" x 4")
  • 0,5 "x 0,5" (2cm x 2cm) kotak plastik bening

    Misalnya. dari tutup wadah makanan plastik

  • Velcro

Peralatan

  • Pemotong kawat
  • Pisau presisi (misalnya pisau eksak) dan alas potong
  • Besi solder (opsional)
  • Alat lelehan panas (atau lem non-konduktif lainnya - epoksi berfungsi dengan baik tetapi permanen)

Langkah 1: Sebelum Kita Mulai

Sebelum kita mulai
Sebelum kita mulai

Proyek ini mengasumsikan Anda memulai dengan Raspberry Pi yang sepenuhnya diatur dalam konfigurasi tanpa kepala. Berikut panduan ramah pemula tentang cara melakukan ini.

Ini juga membantu untuk memiliki beberapa pengetahuan tentang hal-hal berikut:

  1. Keakraban dengan Raspberry Pi

    • Berikut panduan memulai yang praktis!
    • Juga membantu: Memulai dengan kamera Pi
  2. Membaca dan mengedit kode Python (Anda tidak perlu menulis program, cukup edit)

    Pengenalan Python dengan Raspberry Pi

  3. Membaca diagram pengkabelan Fritzing
  4. Menggunakan papan tempat memotong roti

    Cara menggunakan tutorial papan tempat memotong roti

Cari tahu ke mana sampah Anda pergi

Setiap kota di seluruh AS (dan saya akan menganggap dunia) memiliki sampah/daur ulang/kompos/dll sendiri. sistem pengumpulan. Ini berarti bahwa untuk membuat pengklasifikasi sampah yang akurat, kita harus 1) membangun model ML khusus (kita akan membahas ini di langkah berikutnya -- tanpa kode!) dan 2) tahu ke mana setiap sampah pergi.

Karena saya tidak selalu tahu tempat sampah yang tepat untuk setiap item yang saya gunakan untuk melatih model saya, saya menggunakan selebaran Seattle Utilities (Foto 1), dan juga "Ke mana perginya?" alat pencarian untuk kota Seattle! Lihat sumber daya apa yang tersedia di kota Anda dengan mencari utilitas pengumpulan sampah kota Anda dan membaca situs webnya dengan teliti.

Langkah 2: Buat Model ML Kustom di Lobe

Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe
Buat Model ML Kustom di Lobe

Lobe adalah alat yang mudah digunakan yang memiliki semua yang Anda butuhkan untuk mewujudkan ide pembelajaran mesin Anda. Tunjukkan contoh apa yang Anda inginkan, dan secara otomatis melatih model pembelajaran mesin kustom yang dapat diekspor untuk perangkat dan aplikasi edge. Itu tidak memerlukan pengalaman apa pun untuk memulai. Anda dapat berlatih di komputer Anda sendiri secara gratis!

Berikut adalah ikhtisar singkat tentang cara menggunakan Lobe:

1. Buka program Lobe dan buat proyek baru.

2. Ambil atau impor foto dan beri label ke dalam kategori yang sesuai. (Foto 1) Kami akan membutuhkan label ini nanti di bagian perangkat lunak proyek.

Ada dua cara untuk mengimpor foto:

  1. Ambil foto item langsung dari webcam komputer Anda, atau
  2. Impor foto dari folder yang ada di komputer Anda.

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

Selain: Saya akhirnya menggunakan kedua metode, karena semakin banyak foto yang Anda miliki, semakin akurat model Anda.

3. Gunakan fitur "Mainkan" untuk menguji akurasi model. Ubah jarak, pencahayaan, posisi tangan, dll. untuk mengidentifikasi di mana model berada dan tidak akurat. Tambahkan lebih banyak foto jika perlu. (Foto 3 - 4)

4. Jika sudah siap, ekspor model Lobe ML Anda dalam format TensorFlow (TF) Lite.

Kiat:

  • Sebelum mengimpor foto, buatlah daftar semua kategori yang Anda perlukan dan bagaimana Anda ingin melabelinya (mis. "sampah, " "daur ulang, " "kompos, " dll.)

    Catatan: Gunakan label yang sama seperti yang ditunjukkan pada foto "Label Model Lobe" di atas untuk mengurangi jumlah kode yang perlu Anda ubah

  • Sertakan kategori untuk "bukan sampah" yang memiliki foto apa pun yang mungkin ada di foto tersebut (mis. tangan dan lengan Anda, latar belakang, dll.)
  • Jika memungkinkan, ambil foto dari Pi Camera dan impor ke Lobe. Ini akan sangat meningkatkan akurasi model Anda!
  • Butuh lebih banyak foto? Lihat kumpulan data sumber terbuka di Kaggle, termasuk kumpulan gambar klasifikasi sampah ini!
  • butuh lebih banyak bantuan? Terhubung dengan Komunitas Lobe di Reddit!

Langkah 3: Bangun: Perangkat Keras

Bangun Ini: Perangkat Keras!
Bangun Ini: Perangkat Keras!
Bangun Ini: Perangkat Keras!
Bangun Ini: Perangkat Keras!
Bangun Ini: Perangkat Keras!
Bangun Ini: Perangkat Keras!

1. Hubungkan Pi Camera ke Pi dengan hati-hati (kunjungi panduan memulai Pi Foundation untuk informasi lebih lanjut). (Foto 1)

2. Ikuti diagram pengkabelan untuk menghubungkan tombol dan LED ke pin Pi GPIO.

  • Tombol Tekan: Hubungkan satu kaki tombol ke pin GPIO 2. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.
  • LED Kuning: Hubungkan kaki positif (lebih panjang) ke pin GPIO 17. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.
  • LED Biru: Hubungkan kaki positif ke pin GPIO 27. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.
  • LED Hijau: Hubungkan kaki positif ke pin GPIO 22. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.
  • LED Merah: Hubungkan kaki positif ke pin GPIO 23. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.
  • LED Putih: Hubungkan kaki positif ke pin GPIO 24. Hubungkan kaki lainnya, melalui resistor, ke pin GPIO GND.

3. Direkomendasikan untuk menguji sirkuit Anda pada papan tempat memotong roti dan menjalankan program sebelum menyolder atau membuat sambungan permanen. Untuk melakukan ini, kita perlu menulis dan mengunggah program perangkat lunak kita, jadi mari kita lanjutkan ke langkah berikutnya!

Langkah 4: Kode Ini: Perangkat Lunak

Kode Itu: Perangkat Lunak!
Kode Itu: Perangkat Lunak!
Kode Itu: Perangkat Lunak!
Kode Itu: Perangkat Lunak!

1. Di PC Anda, buka WinSCP dan sambungkan ke Pi Anda. Buat folder Lobe di direktori home Pi Anda dan buat folder model di direktori itu.

2. Seret konten folder TF Lobe yang dihasilkan ke Pi. Catat jalur file: /home/pi/Lobe/model

3. Di Pi, buka terminal dan unduh pustaka lobe-python untuk Python3 dengan menjalankan perintah bash berikut:

instal pip3

lobus instal pip3

4. Unduh kode Trash Classifier (rpi_trash_classifier.py) dari repo ini ke Pi (klik tombol "Kode" seperti yang ditunjukkan pada Foto 1).

  • Lebih suka menyalin/menempel? Dapatkan kode mentahnya di sini.
  • Lebih suka mengunduh ke komputer Anda? Unduh repo/kode ke komputer Anda kemudian transfer kode Python ke Pi melalui WinSCP (atau program transfer file jarak jauh pilihan Anda).

5. Setelah Anda menghubungkan perangkat keras ke pin GPIO Pi, baca kode contoh dan perbarui jalur file apa pun yang diperlukan:

  • Baris 29: filepath ke model Lobe TF
  • Baris 47 dan 83: jalur file ke gambar yang diambil melalui Pi Camera

6. Jika perlu, perbarui label model dalam kode agar sama persis dengan label di model Lobe Anda (termasuk kapitalisasi, tanda baca, dll.):

  • Baris 57: "sampah"
  • Baris 60: "daur ulang"
  • Baris 63: "kompos"
  • Baris 66: "fasilitas limbah berbahaya"
  • Baris 69: "bukan sampah!"

7. Jalankan program menggunakan Python3 di jendela terminal:

python3 rpi_trash_classifier.py

Langkah 5: Uji Ini: Jalankan Programnya

Uji Ini: Jalankan Programnya!
Uji Ini: Jalankan Programnya!
Uji Ini: Jalankan Programnya!
Uji Ini: Jalankan Programnya!
Uji Ini: Jalankan Programnya!
Uji Ini: Jalankan Programnya!

Tinjauan Program

Saat pertama kali menjalankan program, perlu beberapa saat untuk memuat library TensorFlow dan model Lobe ML. Saat program siap untuk mengambil gambar, lampu status (LED putih) akan berkedip.

Setelah Anda mengambil gambar, program akan membandingkan gambar dengan model Lobe ML dan menampilkan prediksi yang dihasilkan (baris 83). Output menentukan lampu mana yang menyala: kuning (sampah), biru (daur ulang), hijau (kompos), atau merah (sampah berbahaya).

Jika tidak ada LED indikator yang menyala dan LED status kembali ke mode pulsa, berarti gambar yang diambil “bukan sampah”, dengan kata lain, foto ulang!

Menangkap Gambar

Tekan tombol untuk mengambil gambar. Perhatikan bahwa Anda mungkin perlu menahan tombol tekan setidaknya selama 1 detik agar program dapat mendaftarkan pers. Disarankan untuk mengambil beberapa gambar uji, lalu membukanya di Desktop untuk lebih memahami tampilan dan bingkai kamera.

Untuk memberikan waktu kepada pengguna untuk memposisikan objek dan untuk menyesuaikan tingkat cahaya kamera, dibutuhkan sekitar 5 detik untuk menangkap gambar sepenuhnya. Anda dapat mengubah pengaturan ini dalam kode (baris 35 dan 41), tetapi perlu diingat bahwa Pi Foundation merekomendasikan minimal 2 detik untuk penyesuaian tingkat cahaya.

Penyelesaian masalah

Tantangan terbesar adalah memastikan bahwa gambar yang diambil sesuai dengan yang kami harapkan, jadi luangkan waktu untuk meninjau gambar dan membandingkan hasil yang diharapkan dengan output LED indikator. Jika perlu, Anda dapat meneruskan gambar ke model Lobe ML untuk inferensi langsung dan perbandingan yang lebih cepat.

Beberapa hal yang perlu diperhatikan:

  • Pustaka TensorFlow kemungkinan akan memberikan beberapa pesan peringatan -- ini adalah tipikal untuk versi yang digunakan dalam kode contoh ini.
  • Label prediksi harus persis seperti yang tertulis di fungsi led_select(), termasuk kapitalisasi, tanda baca, dan spasi. Pastikan untuk mengubah ini jika Anda memiliki model Lobe yang berbeda.
  • Pi membutuhkan catu daya yang stabil. Lampu daya Pi harus terang, merah pekat.
  • Jika satu atau lebih LED tidak menyala saat diharapkan, periksa dengan memaksanya menyala dengan perintah:

red_led.on()

Langkah 6: (Opsional) Bangun: Selesaikan Sirkuit Anda

(Opsional) Bangun: Selesaikan Sirkuit Anda!
(Opsional) Bangun: Selesaikan Sirkuit Anda!
(Opsional) Bangun: Selesaikan Sirkuit Anda!
(Opsional) Bangun: Selesaikan Sirkuit Anda!
(Opsional) Bangun: Selesaikan Sirkuit Anda!
(Opsional) Bangun: Selesaikan Sirkuit Anda!

Sekarang kami telah menguji dan, jika perlu, men-debug, proyek kami sehingga berfungsi seperti yang diharapkan, kami siap untuk menyolder sirkuit kami!

Catatan: Jika Anda tidak memiliki besi solder, Anda dapat melewati langkah ini. Salah satu alternatifnya adalah melapisi sambungan kawat dengan lem panas (pilihan ini akan memungkinkan Anda untuk memperbaiki/menambahkan/menggunakan sesuatu nanti, tetapi kemungkinan besar akan rusak), atau menggunakan epoksi atau lem permanen serupa (opsi ini akan jauh lebih tahan lama). tetapi Anda tidak akan dapat menggunakan sirkuit atau berpotensi Pi setelah melakukan ini)

Komentar singkat tentang pilihan desain saya (Foto 1):

  • Saya memilih kabel jumper perempuan untuk LED dan Pi GPIO karena mereka memungkinkan saya untuk menghapus LED dan menukar warna atau memindahkannya jika diperlukan. Anda dapat melewati ini jika Anda ingin membuat koneksi permanen.
  • Demikian pula, saya memilih konektor JST untuk tombol tekan.

Maju ke gedung

1. Potong masing-masing kabel jumper wanita menjadi dua (ya, semuanya!). Dengan menggunakan penari telanjang kawat, lepaskan sekitar 1/4 (1/2cm) dari insulasi kawat.

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

3. Potong sepotong kecil, sekitar 1 (2cm) tabung heat shrink dan dorong LED dan persimpangan resistor. Pastikan kaki resistor lainnya dapat diakses, lalu panaskan tabung shrink sampai mengamankan sambungan. (Foto 3)

4. Masukkan setiap LED ke dalam sepasang kabel jumper wanita. (Foto 4)

5. Beri label pada kabel jumper (misalnya dengan selotip), lalu solder kabel jumper ke papan sirkuit tercetak (PCB). (Foto 5)

6. Selanjutnya, gunakan kabel jumper perempuan (potong) untuk menghubungkan setiap LED ke pin Pi GPIO masing-masing. Solder dan beri label pada kabel jumper sehingga logam telanjang terhubung ke kaki LED positif melalui PCB. (Foto 5)

Catatan: Di mana Anda menyolder kawat ini akan tergantung pada tata letak PCB Anda. Anda juga dapat menyolder kabel ini langsung ke kabel jumper LED positif.

7. Solder resistor 220Ω ke ujung negatif (hitam) konektor JST. (Foto 6)

8. Solder konektor JST dan resistor ke tombol tekan. (Foto 6)

9. Hubungkan kabel jumper M-to-F antara konektor tombol dan pin GPIO (pengingat: hitam adalah GND).

10. Lapisi sambungan PCB dengan lem panas atau epoxy agar sambungan lebih aman.

Catatan: jika Anda memilih untuk menggunakan epoksi, Anda mungkin tidak dapat menggunakan pin GPIO Pi untuk proyek lain di masa mendatang. Jika Anda mengkhawatirkan hal ini, tambahkan kabel pita GPIO dan sambungkan kabel jumper ke sana.

Langkah 7: (Opsional) Build It: Case

(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!
(Opsional) Bangun: Casing!

Buat penutup untuk Pi Anda yang akan menahan kamera, tombol tekan, dan LED di tempatnya sekaligus melindungi Pi. Rancang enklosur Anda sendiri atau ikuti instruksi pembuatan kami di bawah ini untuk membuat prototipe enklosur kardus dengan cepat!

  1. Di bagian atas kotak kardus kecil, telusuri lokasi tombol tekan, lampu status, lampu pengenal, dan jendela kamera pi (Foto 1).

    Catatan: Jendela kamera Pi harus sekitar 3/4" x 1/2"

  2. Menggunakan pisau presisi Anda, potong jejaknya.

    Catatan: Anda mungkin ingin menguji ukuran saat Anda pergi (Foto 1)

  3. Opsional: Cat casingnya! Saya memilih cat semprot:)
  4. Potong penutup "jendela" persegi panjang untuk Kamera Pi (Foto 4) dan rekatkan di bagian dalam kotak
  5. Terakhir, potong slot untuk kabel daya Pi.

    Disarankan untuk menginstal semua elektronik terlebih dahulu untuk menemukan tempat terbaik untuk slot kabel daya pi

Langkah 8: Instal dan Terapkan

Instal dan Terapkan!
Instal dan Terapkan!

Itu dia! Anda siap untuk menginstal dan menerapkan proyek Anda! Tempatkan enklosur di atas tempat sampah Anda, colokkan Pi, dan jalankan program untuk mendapatkan cara yang lebih cepat dan andal dalam mengurangi limbah kita. Ya!

Maju

  • Bagikan proyek dan ide Anda dengan orang lain melalui komunitas Lobe Reddit!
  • Lihat repo Lobe Python GitHub untuk ikhtisar umum tentang cara menggunakan Python untuk menyebarkan berbagai proyek Lobe yang lebih luas
  • Pertanyaan atau permintaan proyek? Tinggalkan komentar tentang proyek ini atau hubungi kami secara langsung: [email protected]

Direkomendasikan: