Mündəricat:

ML ilə Pi zibil təsnifatçısı olun!: 8 addım (şəkillərlə)
ML ilə Pi zibil təsnifatçısı olun!: 8 addım (şəkillərlə)

Video: ML ilə Pi zibil təsnifatçısı olun!: 8 addım (şəkillərlə)

Video: ML ilə Pi zibil təsnifatçısı olun!: 8 addım (şəkillərlə)
Video: Праздник. Новогодняя комедия 2024, Noyabr
Anonim
ML ilə Pi zibil təsnifatçısı olun!
ML ilə Pi zibil təsnifatçısı olun!
ML ilə Pi zibil təsnifatçısı olun!
ML ilə Pi zibil təsnifatçısı olun!

"Hara gedir?!" Kimi məhəbbətlə tanınan Zibil Sınıflandırıcısı layihəsi, hər şeyi daha sürətli və daha etibarlı şəkildə atmağı nəzərdə tutur.

Bu layihə, bir obyektin zibilliyə, geri çevrilməyə, komposta və ya təhlükəli tullantılara girib-getmədiyini müəyyən etmək üçün yeni başlayanlar üçün dost (heç bir kod yoxdur!) ML model qurucusu Lobe-də təhsil almış Maşın Öyrənmə (ML) modelindən istifadə edir. Model daha sonra zibil qutularını harada tapa bilsəniz istifadə etmək üçün bir Raspberry Pi 4 kompüterinə yüklənir!

Bu dərslik, Python3 -dəki Lobe TensorFlow modelindən bir Moruq Pi üzərində öz Zibil Sınıflandırıcısı layihənizi necə quracağınızı izah edir.

Çətinlik: Başlanğıc ++ (dövrə və kodlaşdırma ilə bağlı bəzi məlumatlar faydalıdır)

Oxuma müddəti: 5 dəq

Yaradılma müddəti: 60-90 dəq

Qiymət: ~ 70 dollar (Pi 4 daxil olmaqla)

Təchizat:

Proqram təminatı (PC tərəfi)

  • Lob
  • WinSCP (və ya digər SSH fayl ötürmə üsulu, Mac üçün CyberDuck istifadə edə bilər)
  • Terminal
  • Uzaq Masaüstü Əlaqəsi və ya RealVNC

Avadanlıq

  • Raspberry Pi, SD Kart və USB-C enerji təchizatı (5V, 2.5A)
  • Pi Kamera
  • Düymə
  • 5 LED (4 göstərici LED və 1 status LED)

    • Sarı LED: zibil
    • Mavi LED: təkrar emal
    • Yaşıl LED: kompost
    • Qırmızı LED: təhlükəli tullantılar
    • Ağ LED: vəziyyət
  • 6 220 Ohm müqavimət
  • 10 M-dən M-ə keçid teli
  • Çörək paneli, yarı ölçülü

Lehimləməyi seçsəniz:

  • 1 JST konnektoru, yalnız qadın ucu
  • 2 ədəd M-to-F keçid teli
  • 10 F-dən F-yə keçid telləri
  • PCB

Mühafizə

  • Layihə qutusu (məsələn, karton, ağac və ya plastik qutu, təxminən 6 "x 5" x 4 ")
  • 0.5 "x 0.5" (2cm x 2cm) şəffaf plastik kvadrat

    Məsələn, plastik bir qida qabının qapağından

  • Velcro

Alətlər

  • Tel kəsicilər
  • Həssas bıçaq (məsələn, dəqiq bıçaq) və kəsici mat
  • Lehimləmə dəmiri (isteğe bağlı)
  • İsti ərimə vasitəsi (və ya digər keçirici olmayan yapışqan-epoksi əla işləyir, lakin qalıcıdır)

Addım 1: Başlamazdan əvvəl

Başlamazdan əvvəl
Başlamazdan əvvəl

Bu layihə, başsız bir konfiqurasiyada tam qurulmuş bir Raspberry Pi ilə başladığınızı güman edir. Bunun necə ediləcəyinə dair yeni başlayanlar üçün bir bələdçi var.

Aşağıdakılar haqqında bəzi məlumatlara da kömək edir:

  1. Raspberry Pi ilə tanışlıq

    • İşdə lazımlı bir başlanğıc bələdçisi!
    • Həm də faydalıdır: Pi kamera ilə işə başlayın
  2. Python kodunu oxumaq və redaktə etmək (proqram yazmağa ehtiyac yoxdur, sadəcə redaktə edin)

    Raspberry Pi ilə Pythona giriş

  3. Fritzing tellərinin diaqramlarını oxumaq
  4. Çörək taxtasından istifadə

    Çörək taxtası təlimatından necə istifadə etmək olar

Çöplərinizin hara getdiyini öyrənin

ABŞ -ın hər bir şəhərinin (və dünyanın ehtimal edim) öz zibil/geri dönüşüm/kompost/və s. toplama sistemi. Bu o deməkdir ki, dəqiq bir zibil təsnifatçısı olmaq üçün 1) xüsusi bir ML modeli qurmalıyıq (bunu növbəti addımda əhatə edəcəyik - kod yoxdur!) Və 2) hər bir zibil parçasının hara getdiyini bilmək.

Modelimi öyrətmək üçün istifadə etdiyim hər bir əşya üçün uyğun zibil qutusunu həmişə bilmədiyim üçün Seattle Utilities broşurasını (Şəkil 1) və bu lazımlı "Hara gedir?" Seattle şəhəri üçün axtarış vasitəsi! Şəhərinizin zibil toplama proqramına baxaraq və veb saytına baxaraq şəhərinizdə hansı mənbələrin mövcud olduğunu yoxlayın.

Addım 2: Lobedə Xüsusi ML Modeli yaradın

Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın
Lobədə Xüsusi ML Modeli yaradın

Lobe, maşın öyrənmə fikirlərinizi həyata keçirmək üçün lazım olan hər şeyə sahib olan istifadəsi asan bir vasitədir. Nə etmək istədiyinizə dair nümunələr göstərin və avtomatik olaraq kənar qurğular və tətbiqlər üçün ixrac edilə bilən xüsusi bir maşın öyrənmə modeli hazırlayır. Başlamaq üçün heç bir təcrübə tələb olunmur. Öz kompüterinizdə pulsuz məşq edə bilərsiniz!

Lobenin necə istifadə olunacağına qısa bir baxış:

1. Lobe proqramını açın və yeni bir layihə yaradın.

2. Foto çəkin və ya idxal edin və onları uyğun kateqoriyalara etiketləyin. (Şəkil 1) Bu etiketlərə daha sonra layihənin proqram hissəsində ehtiyacımız olacaq.

Fotoşəkilləri idxal etməyin iki yolu var:

  1. Elementlərin fotoşəkillərini birbaşa kompüterinizin veb kamerasından çəkin və ya
  2. Kompüterinizdəki mövcud qovluqlardan fotoşəkilləri idxal edin.

    Foto qovluq adının kateqoriya etiketi adı olaraq istifadə ediləcəyini unutmayın, buna görə də mövcud etiketlərə uyğun olduğundan əmin olun

Bir kənara: Hər iki üsuldan da istifadə etdim, çünki nə qədər çox fotoşəkiliniz varsa, modeliniz bir o qədər dəqiqdir.

3. Modelin düzgünlüyünü yoxlamaq üçün "Play" xüsusiyyətindən istifadə edin. Modelin harada olduğunu və dəqiq olmadığını müəyyən etmək üçün məsafələri, işıqlandırmanı, əl mövqelərini və s. Gerekirse daha çox şəkil əlavə edin. (Şəkillər 3 - 4)

4. Hazır olduğunuzda, Lobe ML modelinizi TensorFlow (TF) Lite formatında ixrac edin.

Məsləhətlər:

  • Fotoşəkilləri idxal etməzdən əvvəl, ehtiyacınız olan bütün kateqoriyaların siyahısını yaradın və onları necə etiketləmək istədiyinizi (məsələn, "zibil", "geri dönüşüm", "kompost" və s.)

    Qeyd: Dəyişdirməyiniz lazım olan kod miqdarını azaltmaq üçün yuxarıdakı "Lobe Model Etiketləri" fotoşəkilində göstərilən etiketləri istifadə edin

  • Fotoşəkildə ola biləcək hər şeyin fotoşəkilləri olan (məsələn, əlləriniz, qollarınız, arxa planınız və s.) "Çöp deyil" kateqoriyasına daxil edin.
  • Mümkünsə, Pi Kameradan fotoşəkil çəkin və Lobeyə idxal edin. Bu, modelinizin dəqiqliyini çox yaxşılaşdıracaq!
  • Daha çox fotoya ehtiyacınız varmı? Bu zibil təsnifatı şəkil dəsti daxil olmaqla Kaggle-də açıq mənbəli məlumat dəstlərinə baxın!
  • Daha çox kömək lazımdır? Redditdəki Lobe Birliyi ilə əlaqə qurun!

Addım 3: Qurun: Avadanlıq

Qurun: Avadanlıq!
Qurun: Avadanlıq!
Qurun: Avadanlıq!
Qurun: Avadanlıq!
Qurun: Avadanlıq!
Qurun: Avadanlıq!

1. Diqqətlə Pi Kamerasını Pi -yə qoşun (daha çox məlumat üçün Pi Vəqfinə başlama bələdçisini ziyarət edin). (Şəkil 1)

2. Düyməni və LED -ləri Pi GPIO sancaqlarına bağlamaq üçün kabel sxeminə əməl edin.

  • Pushbutton: Düymənin bir ayağını GPIO pin 2 -ə qoşun. Digərini direnç vasitəsilə GPIO GND pininə bağlayın.
  • Sarı LED: Müsbət (daha uzun) ayağı GPIO pin 17 -yə bağlayın. Digər ayağı müqavimət vasitəsi ilə GPIO GND pininə bağlayın.
  • Mavi LED: Müsbət ayağı GPIO pin 27 -yə bağlayın. Digər ayağı müqavimət vasitəsi ilə GPIO GND pininə bağlayın.
  • Yaşıl LED: Müsbət ayağı GPIO pin 22 -yə bağlayın. Digər ayağı müqavimət vasitəsi ilə GPIO GND pininə bağlayın.
  • Qırmızı LED: Müsbət ayağı GPIO pin 23 -ə qoşun. Digər ayağı müqavimət vasitəsi ilə GPIO GND pininə bağlayın.
  • Ağ LED: Müsbət ayağı GPIO pin 24 -ə bağlayın. Digər ayağı müqavimət vasitəsi ilə GPIO GND pininə bağlayın.

3. Lehimdən və ya hər hansı bir əlaqəni daimi etməzdən əvvəl dövrəinizi çörək taxtasında sınamaq və proqramı işə salmaq məsləhətdir. Bunu etmək üçün proqram proqramımızı yazmalı və yükləməli olacağıq, buna görə də növbəti mərhələyə keçək!

Addım 4: Kodlaşdırın: Proqram təminatı

Kodlayın: Proqram təminatı!
Kodlayın: Proqram təminatı!
Kodlayın: Proqram təminatı!
Kodlayın: Proqram təminatı!

1. PC -də WinSCP -ni açın və Pi -yə qoşulun. Pi evinizin qovluğunda bir Lobe qovluğu yaradın və həmin qovluqda bir model qovluğu yaradın.

2. Yaranan Lobe TF qovluğunun məzmununu Pi üzərinə sürükləyin. Fayl yolunu qeyd edin:/home/pi/Lobe/model

3. Pi-də bir terminal açın və aşağıdakı bash əmrlərini yerinə yetirərək Python3 üçün lobe-python kitabxanasını yükləyin:

pip3 quraşdırın

pip3 lobunu quraşdırın

4. Bu depodan Çöp Sınıflandırıcı kodunu (rpi_trash_classifier.py) Pi üzərinə endirin (Şəkil 1 -də göstərildiyi kimi "Kod" düyməsini basın).

  • Kopyala/yapışdırmağa üstünlük verirsiniz? Ham kodu buradan alın.
  • Kompüterinizə yükləməyi üstün tutursunuz? Repo/kodu kompüterinizə yükləyin, sonra Python kodunu WinSCP (və ya istədiyiniz uzaqdan fayl köçürmə proqramı) vasitəsilə Pi -yə köçürün.

5. Donanımı Pi -nin GPIO sancaqlarına bağladıqdan sonra nümunə kodu oxuyun və lazım olduqda hər hansı bir fayl yolunu yeniləyin:

  • Satır 29: Lobe TF modelinə gedən yol
  • 47 və 83 -cü sətirlər: Pi Kamera vasitəsilə çəkilmiş şəkillərə gedən yol

6. Gerekirse, koddakı model etiketlərini Lobe modelinizdəki etiketlərə tam uyğun gəlmək üçün yeniləyin (böyük hərf, durğu işarəsi və s. Daxil olmaqla):

  • Satır 57: "zibil"
  • Satır 60: "geri dönüş"
  • Satır 63: "kompost"
  • Sətir 66: "təhlükəli tullantı obyekti"
  • Satır 69: "zibil deyil!"

7. Proqramı terminal pəncərəsində Python3 istifadə edərək işə salın:

python3 rpi_trash_classifier.py

Addım 5: Test edin: Proqramı işə salın

Test edin: Proqramı işə salın!
Test edin: Proqramı işə salın!
Test edin: Proqramı işə salın!
Test edin: Proqramı işə salın!
Test edin: Proqramı işə salın!
Test edin: Proqramı işə salın!

Proqrama Baxış

Proqramı ilk işə saldığınız zaman, TensorFlow kitabxanasını və Lobe ML modelini yükləmək bir az vaxt aparacaq. Proqram şəkil çəkməyə hazır olduqda, vəziyyət işığı (ağ LED) nəbz atacaq.

Bir şəkil çəkdikdən sonra, proqram görüntüyü Lobe ML modeli ilə müqayisə edəcək və nəticədə ortaya çıxan proqnozu çıxaracaq (sətir 83). Çıxış hansı işığın yandırıldığını müəyyənləşdirir: sarı (zibil), mavi (geri çevrilmə), yaşıl (kompost) və ya qırmızı (təhlükəli tullantılar).

Göstərici LED -lərdən heç biri yanmırsa və vəziyyət LED -i nəbz rejiminə qayıdırsa, bu, çəkilən şəklin "zibil olmadığı", başqa sözlə fotoşəkili yenidən çəkməsi deməkdir!

Şəkil çəkmək

Şəkil çəkmək üçün düyməni basın. Proqramın mətbuata qeydiyyatdan keçməsi üçün düyməni ən az 1 saniyə basıb saxlamağınız lazım ola bilər. Kamera görünüşünü və çərçivəsini daha yaxşı başa düşmək üçün bəzi test şəkilləri çəkmək, sonra Masaüstündə açmaq məsləhətdir.

İstifadəçiyə obyekti yerləşdirmək və kameranın işıq səviyyəsini tənzimləmək üçün vaxt ayırmaq üçün bir görüntünün tam çəkilməsi təxminən 5 saniyə çəkir. Bu parametrləri kodda dəyişə bilərsiniz (35 və 41 -ci sətirlər), ancaq unutmayın ki, Pi Fondu işıq səviyyəsinin tənzimlənməsi üçün minimum 2 saniyə tövsiyə edir.

Giderme

Ən böyük çətinlik, çəkilən görüntünün gözlədiyimiz şəkildə olmasını təmin etməkdir, buna görə də görüntüləri nəzərdən keçirmək və gözlənilən nəticələri göstərici LED çıxışı ilə müqayisə etmək üçün bir az vaxt ayırın. Gerekirse, birbaşa nəticə çıxarmaq və daha sürətli müqayisə etmək üçün şəkilləri Lobe ML modelinə ötürə bilərsiniz.

Qeyd etmək üçün bir neçə şey:

  • TensorFlow kitabxanası, ehtimal ki, bəzi xəbərdarlıq mesajları atacaq - bu nümunə kodda istifadə olunan versiya üçün tipikdir.
  • Proqnoz etiketləri, böyük hərf, durğu işarəsi və aralıq daxil olmaqla, led_select () funksiyasında yazıldığı kimi olmalıdır. Fərqli bir Lobe modeliniz varsa bunları dəyişdirdiyinizə əmin olun.
  • Pi sabit bir enerji təchizatı tələb edir. Pi -nin güc işığı parlaq, möhkəm qırmızı olmalıdır.
  • Bir və ya daha çox LED gözlədikdə açılmırsa, onları əmrlə məcbur edərək yoxlayın:

red_led.on ()

Addım 6: (İsteğe bağlı) Qurun: Dövrənizi tamamlayın

(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!
(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!
(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!
(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!
(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!
(İsteğe bağlı) Qurun: Dövrənizi tamamlayın!

Layihəmizi gözlədiyimiz kimi işlədiyini sınadıqdan və lazım gələrsə ayıkladıqdan sonra dövrəmizi lehimləməyə hazırıq!

Qeyd: Bir lehimləmə dəmiriniz yoxdursa, bu addımı atlaya bilərsiniz. Alternativlərdən biri, tel əlaqələrini isti yapışqan ilə örtməkdir (bu seçim sonradan hər şeyi düzəltməyə/əlavə etməyə/istifadə etməyə imkan verəcək, lakin qırılma ehtimalı daha yüksəkdir) və ya epoksi və ya bənzər daimi yapışqan istifadə etməkdir (bu seçim daha davamlı olacaq) ancaq bunu etdikdən sonra dövrə və ya potensial olaraq Pi istifadə edə bilməyəcəksiniz)

Dizayn seçimlərim haqqında qısa şərh (Şəkil 1):

  • LEDlər və Pi GPIO üçün qadın tullanan telləri seçdim, çünki LEDləri silməyə və rəngləri dəyişdirməyə və ya lazım olduqda onları hərəkət etdirməyə imkan verir. Bağlantıları daimi etmək istəyirsinizsə bunları atlaya bilərsiniz.
  • Eynilə, düymə üçün bir JST konnektoru seçdim.

Binaya doğru

1. Dişi tullanan tellərin hər birini yarıya bölün (bəli, hamısı!). Tel çıxarıcılardan istifadə edərək tel izolyasiyasının təxminən 1/4 (1/2 sm) hissəsini çıxarın.

2. LED -lərin hər biri üçün mənfi (daha qısa) ayağa 220Ω rezistoru lehimləyin. (Şəkil 2)

3. Kiçik bir parça, təxminən 1 (2 sm) istilik büzmə borusu kəsin və LED və rezistor qovşağının üzərinə itələyin. Digər müqavimət ayağının əlçatan olduğundan əmin olun, sonra büzülmə borusunu birləşməni təmin edənə qədər qızdırın. (Şəkil 3)

4. Hər LED -i bir cüt dişi tullanan telə daxil edin. (Şəkil 4)

5. Keçid tellərini (məsələn, lentlə) etiketləyin, sonra çap lövhəsini çap lövhənizə (PCB) lehimləyin. (Şəkil 5)

6. Sonra, hər bir LED -i müvafiq Pi GPIO pininə bağlamaq üçün (kəsilmiş) qadın tullanan tel istifadə edin. Çılpaq metalın PCB vasitəsilə pozitiv LED ayağına bağlanması üçün bir keçid telini lehimləyin və etiketləyin. (Şəkil 5)

Qeyd: Bu teli lehimlədiyiniz yer PCB düzülüşündən asılı olacaq. Bu teli birbaşa müsbət LED keçid telinə də lehimləyə bilərsiniz.

7. JST konnektorunun mənfi (qara) ucuna 220Ω rezistoru lehimləyin. (Şəkil 6)

8. JST konnektoru və rezistoru düyməyə lehimləyin. (Şəkil 6)

9. M-to-F keçid tellərini düymə konnektoru ilə GPIO pinləri arasına bağlayın (xatırlatma: qara GND-dir).

10. Daha etibarlı bir əlaqə üçün PCB -ni isti yapışqan və ya epoksi ilə örtün.

Qeyd: Epoksi istifadə etməyi seçsəniz, gələcəkdə Pi'nin GPIO sancaqlarını digər layihələr üçün istifadə edə bilməyəcəksiniz. Bu barədə narahat olsanız, bir GPIO lent kabelini əlavə edin və bunun əvəzinə keçid tellərini bağlayın.

Addım 7: (İsteğe bağlı) Qurun: Case

(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!
(İsteğe bağlı) Qurun: Case!

Pi -nizi qorumaqla yanaşı, kameranı, düymələri və LED -ləri yerində saxlayacaq bir korpus yaradın. Öz korpusunuzu dizayn edin və ya karton qutunun prototipini hazırlamaq üçün aşağıdakı təlimatlarımıza əməl edin!

  1. Kiçik karton qutunun üstündəki düyməni, vəziyyət işığını, identifikator işıqlarını və pi kamera pəncərəsinin yerini izləyin (Şəkil 1).

    Qeyd: Pi kamera pəncərəsi təxminən 3/4 "x 1/2" olmalıdır

  2. Həssas bıçağınızla izləri kəsin.

    Qeyd: gedərkən ölçüləri sınamaq istəyə bilərsiniz (Şəkil 1)

  3. İsteğe bağlı: Kassanı rəngləyin! Sprey boya seçdim:)
  4. Pi Kamera üçün düzbucaqlı "pəncərə" örtüyü kəsin (Şəkil 4) və qutunun içərisinə yapışdırın
  5. Nəhayət, Pi elektrik kabelinin yuvasını kəsin.

    Pi elektrik kabel yuvası üçün ən yaxşı yeri tapmaq üçün əvvəlcə bütün elektronikaları quraşdırmaq tövsiyə olunur

Addım 8: Qurun və Dağıtın

Qurun və Dağıtın!
Qurun və Dağıtın!

Bu belədir! Layihənizi quraşdırmağa və yerləşdirməyə hazırsınız! Zibil qutularınızın üstünə qoyun, Pi -ni bağlayın və tullantılarınızı azaltmağın daha sürətli və daha etibarlı bir yolu əldə etmək üçün proqramı işə salın. Vay!

İrəli gedir

  • Layihələrinizi və fikirlərinizi Lobe Reddit icması vasitəsi ilə digər insanlarla paylaşın!
  • Daha geniş çeşidli Lobe layihələrini yerləşdirmək üçün Python -dan necə istifadə olunacağına dair ümumi bir baxış üçün Lobe Python GitHub reposuna baxın.
  • Suallar və ya layihə tələbləri? Bu layihə haqqında bir şərh yazın və ya birbaşa bizimlə əlaqə saxlayın: [email protected]

Tövsiyə: