İçindekiler:
- 1. Adım: Başlamadan Önce
- 2. Adım: Lobe'da Özel bir ML Modeli Oluşturun
- Adım 3: İnşa Edin: Donanım
- Adım 4: Kodlayın: Yazılım
- Adım 5: Test Edin: Programı Çalıştırın
- Adım 6: (Opsiyonel) İnşa Edin: Devrenizi Sonlandırın
- Adım 7: (İsteğe Bağlı) Oluşturun: Case
- Adım 8: Kurun ve Dağıtın
Video: ML ile Pi Çöp Sınıflandırıcısı Yapın!: 8 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Sevgiyle "Nereye gidiyor?!" olarak bilinen Çöp Sınıflandırıcı projesi, şeyleri daha hızlı ve daha güvenilir bir şekilde atmak için tasarlanmıştır.
Bu proje, bir nesnenin çöpe, geri dönüşüme, kompost veya tehlikeli atıklara atılıp atılmadığını belirlemek için, başlangıç seviyesindeki (kodsuz!) bir ML model oluşturucusu olan Lobe'da eğitilmiş bir Makine Öğrenimi (ML) modeli kullanır. Model daha sonra Raspberry Pi 4 bilgisayarına yüklenerek çöp kutularını bulabildiğiniz her yerde kullanılabilir hale getiriyor!
Bu eğitici, Python3'teki Lobe TensorFlow modelinden bir Raspberry Pi üzerinde kendi Çöp Sınıflandırıcı projenizi nasıl oluşturacağınız konusunda size yol gösterir.
Zorluk: Başlangıç++ (devreler ve kodlama ile ilgili bazı bilgiler yardımcı olur)
Okuma Süresi: 5 dk
İnşa Süresi: 60 - 90 dk
Maliyet: ~70$ (Pi 4 dahil)
Gereçler:
Yazılım (PC tarafı)
- lob
- WinSCP (veya başka bir SSH dosya aktarım yöntemi, Mac için CyberDuck'ı kullanabilir)
- terminal
- Uzak Masaüstü Bağlantısı veya RealVNC
Donanım
- Raspberry Pi, SD Kart ve USB-C güç kaynağı (5V, 2.5A)
- Pi Kamera
- Butona basınız
-
5 LED (4 gösterge LED'i ve 1 durum LED'i)
- Sarı LED: çöp
- Mavi LED: geri dönüşüm
- Yeşil LED: kompost
- Kırmızı LED: tehlikeli atık
- Beyaz LED: durum
- 6 220 Ohm direnç
- 10 M-M atlama teli
- Breadboard, yarım boy
Lehimlemeyi seçerseniz:
- 1 JST konnektör, sadece dişi uç
- 2 M-F atlama teli
- 10 F-to-F atlama teli
- PCB
muhafaza
- Proje çantası (örn. karton, ahşap veya plastik kutu, yaklaşık 6" x 5" x 4")
-
0,5" x 0,5" (2cm x 2cm) şeffaf plastik kare
Örneğin. plastik bir gıda kabı kapağından
- cırt cırt
Aletler
- Tel kesiciler
- Hassas bıçak (örneğin, tam bıçak) ve kesme matı
- Havya (isteğe bağlı)
- Sıcakta eriyen alet (veya diğer iletken olmayan yapıştırıcı - epoksi harika çalışır ancak kalıcıdır)
1. Adım: Başlamadan Önce
Bu proje, başsız bir konfigürasyonda tamamen kurulmuş bir Raspberry Pi ile başladığınızı varsayar. İşte bunun nasıl yapılacağına dair yeni başlayanlar için bir rehber.
Ayrıca, aşağıdakiler hakkında biraz bilgi sahibi olmanıza yardımcı olur:
-
Raspberry Pi ile aşinalık
- İşte kullanışlı bir başlangıç kılavuzu!
- Ayrıca yararlı: Pi kamerayı kullanmaya başlama
-
Python kodunu okuma ve düzenleme (bir program yazmanıza gerek kalmayacak, sadece düzenleyin)
Raspberry Pi ile Python'a Giriş
- Fritzing bağlantı şemalarını okuma
- Breadboard kullanma
Bir breadboard öğreticisi nasıl kullanılır
Çöpünüzün nereye gittiğini öğrenin
ABD'deki her şehrin (ve dünyayı varsayalım) kendi çöpü/geri dönüşümü/kompostu/vb. vardır. toplama sistemi. Bu, doğru bir çöp sınıflandırıcısı yapmak için 1) özel bir ML modeli oluşturmamız gerektiği anlamına gelir (bunu bir sonraki adımda ele alacağız - kod yok!) ve 2) her bir çöp parçasının nereye gittiğini bilmemiz gerekir.
Modelimi eğitmek için kullandığım her öğe için uygun çöp kutusunu her zaman bilmediğim için Seattle Utilities broşürünü (Fotoğraf 1) ve ayrıca bu kullanışlı "Nereye gidiyor?" Seattle şehri için arama aracı! Şehrinizin çöp toplama aracına bakarak ve web sitesini inceleyerek şehrinizde hangi kaynakların mevcut olduğunu kontrol edin.
2. Adım: Lobe'da Özel bir ML Modeli Oluşturun
Lobe, makine öğrenimi fikirlerinizi hayata geçirmek için ihtiyacınız olan her şeye sahip, kullanımı kolay bir araçtır. Ne yapmasını istediğinize dair örnekler gösterin ve uç cihazlar ve uygulamalar için dışa aktarılabilen özel bir makine öğrenimi modelini otomatik olarak eğitsin. Başlamak için herhangi bir deneyim gerektirmez. Kendi bilgisayarınızda ücretsiz olarak antrenman yapabilirsiniz!
İşte Lobe'un nasıl kullanılacağına dair hızlı bir genel bakış:
1. Lobe programını açın ve yeni bir proje oluşturun.
2. Fotoğraf çekin veya içe aktarın ve bunları uygun kategoriler halinde etiketleyin. (Fotoğraf 1) Daha sonra projenin yazılım kısmında bu etiketlere ihtiyacımız olacak.
Fotoğrafları içe aktarmanın iki yolu vardır:
- Öğelerin fotoğraflarını doğrudan bilgisayarınızın web kamerasından çekin veya
-
Bilgisayarınızdaki mevcut klasörlerdeki fotoğrafları içe aktarın.
Fotoğraf klasörü adının kategori etiketi adı olarak kullanılacağını unutmayın, bu nedenle mevcut etiketlerle eşleştiğinden emin olun
Bir yana: Her iki yöntemi de kullandım, çünkü ne kadar çok fotoğrafınız varsa, modeliniz o kadar doğru olur.
3. Model doğruluğunu test etmek için "Oynat" özelliğini kullanın. Modelin nerede olduğunu ve doğru olmadığını belirlemek için mesafeleri, aydınlatmayı, el pozisyonlarını vb. değiştirin. Gerekirse daha fazla fotoğraf ekleyin. (Fotoğraf 3 - 4)
4. Hazır olduğunuzda, Lobe ML modelinizi TensorFlow (TF) Lite formatında dışa aktarın.
İpuçları:
-
Fotoğrafları içe aktarmadan önce, ihtiyaç duyacağınız tüm kategorilerin ve bunları nasıl etiketlemek istediğinizin bir listesini yapın (ör. "çöp", "geri dönüşüm," "kompost" vb.)
Not: Değiştirmeniz gereken kod miktarını azaltmak için yukarıdaki "Lob Model Etiketleri" fotoğrafında gösterilenle aynı etiketleri kullanın
- Fotoğrafta olabilecek her şeyin (örneğin elleriniz ve kollarınız, arka plan vb.) fotoğraflarını içeren "çöp olmayanlar" için bir kategori ekleyin.
- Mümkünse, Pi Kameradan fotoğraf çekin ve Lobe'a aktarın. Bu, modelinizin doğruluğunu büyük ölçüde artıracaktır!
- Daha fazla fotoğrafa mı ihtiyacınız var? Bu çöp sınıflandırma görüntü seti de dahil olmak üzere Kaggle'daki açık kaynaklı veri kümelerine göz atın!
- Daha fazla yardıma mı ihtiyacınız var? Reddit'teki Lobe Coommunity ile bağlantı kurun!
Adım 3: İnşa Edin: Donanım
1. Pi Kamerayı Pi'ye dikkatlice bağlayın (daha fazla bilgi için Pi Vakfı başlangıç kılavuzunu ziyaret edin). (Fotoğraf 1)
2. Basmalı düğmeyi ve LED'leri Pi GPIO pinlerine bağlamak için kablo şemasını takip edin.
- Basmalı düğme: Basmalı düğmenin bir bacağını GPIO pin 2'ye bağlayın. Diğerini bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
- Sarı LED: Pozitif (daha uzun) bacağı GPIO pin 17'ye bağlayın. Diğer bacağı bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
- Mavi LED: Pozitif bacağı GPIO pin 27'ye bağlayın. Diğer bacağı bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
- Yeşil LED: Pozitif bacağı GPIO pin 22'ye bağlayın. Diğer bacağı bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
- Kırmızı LED: Pozitif bacağı GPIO pin 23'e bağlayın. Diğer bacağı bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
- Beyaz LED: Pozitif bacağı GPIO pin 24'e bağlayın. Diğer bacağı bir direnç aracılığıyla bir GPIO GND pinine bağlayın.
3. Devrenizi bir breadboard üzerinde test etmeniz ve herhangi bir bağlantıyı kalıcı hale getirmeden veya lehimlemeden önce programı çalıştırmanız önerilir. Bunu yapmak için yazılım programımızı yazıp yüklememiz gerekecek, o halde bir sonraki adıma geçelim!
Adım 4: Kodlayın: Yazılım
1. PC'nizde WinSCP'yi açın ve Pi'nize bağlanın. Pi'nizin ana dizininde bir Lobe klasörü oluşturun ve bu dizinde bir model klasörü oluşturun.
2. Ortaya çıkan Lobe TF klasör içeriğini Pi'ye sürükleyin. Dosya yolunu not edin: /home/pi/Lobe/model
3. Pi'de bir terminal açın ve aşağıdaki bash komutlarını çalıştırarak Python3 için lobe-python kitaplığını indirin:
pip3 kurulumu
pip3 kurulum lobu
4. Çöp Sınıflandırıcı kodunu (rpi_trash_classifier.py) bu depodan Pi'ye indirin (Fotoğraf 1'de gösterildiği gibi "Kod" düğmesini tıklayın).
- Kopyalamayı/yapıştırmayı mı tercih ediyorsunuz? Ham kodu buradan alın.
- Bilgisayarınıza indirmeyi mi tercih ediyorsunuz? Depoyu/kodu bilgisayarınıza indirin, ardından Python kodunu WinSCP (veya tercih ettiğiniz uzak dosya aktarım programı) aracılığıyla Pi'ye aktarın.
5. Donanımı Pi'nin GPIO pinlerine bağladıktan sonra, örnek kodu okuyun ve tüm dosya yollarını gerektiği gibi güncelleyin:
- Satır 29: Lobe TF modelinin dosya yolu
- Hat 47 ve 83: Pi Camera aracılığıyla çekilen görüntülere dosya yolu
6. Gerekirse, koddaki model etiketlerini Lob modelinizdeki etiketlerle tam olarak eşleşecek şekilde güncelleyin (büyük harf kullanımı, noktalama işaretleri vb. dahil):
- 57. satır: "çöp"
- 60. satır: "geri dönüşüm"
- Satır 63: "kompost"
- Hat 66: "tehlikeli atık tesisi"
- Satır 69: "çöp değil!"
7. Terminal penceresinde Python3'ü kullanarak programı çalıştırın:
python3 rpi_trash_classifier.py
Adım 5: Test Edin: Programı Çalıştırın
Programa Genel Bakış
Programı ilk çalıştırdığınızda, TensorFlow kitaplığını ve Lobe ML modelini yüklemek biraz zaman alacaktır. Program bir görüntü yakalamaya hazır olduğunda durum ışığı (beyaz LED) yanıp sönecektir.
Bir görüntü çektiğinizde, program görüntüyü Lobe ML modeliyle karşılaştırır ve ortaya çıkan tahmini verir (satır 83). Çıktı, hangi ışığın açılacağını belirler: sarı (çöp), mavi (geri dönüşüm), yeşil (kompost) veya kırmızı (tehlikeli atık).
Gösterge LED'lerinden hiçbiri yanmazsa ve durum LED'i darbe moduna dönerse, çekilen görüntünün "çöp olmadığı" anlamına gelir, başka bir deyişle fotoğrafı yeniden çekin!
Görüntü Yakalama
Bir görüntü yakalamak için basmalı düğmeye basın. Programın baskı makinesini kaydetmesi için düğmeyi en az 1 saniye basılı tutmanız gerekebileceğini unutmayın. Kamera görüntüsünü ve çerçevesini daha iyi anlamak için bazı test görüntüleri çekmeniz ve ardından bunları Masaüstünde açmanız önerilir.
Kullanıcıya nesneyi konumlandırması ve kamera ışık seviyelerinin ayarlanması için zaman tanımak için bir görüntüyü tam olarak yakalamak yaklaşık 5 saniye sürer. Bu ayarları kodda değiştirebilirsiniz (satır 35 ve 41), ancak Pi Foundation'ın ışık seviyesi ayarı için minimum 2 saniye önerdiğini unutmayın.
Sorun giderme
En büyük zorluk, yakalanan görüntünün beklediğimiz gibi olmasını sağlamaktır, bu nedenle görüntüleri incelemek ve beklenen sonuçları gösterge LED çıkışıyla karşılaştırmak için biraz zaman ayırın. Gerekirse, doğrudan çıkarım ve daha hızlı karşılaştırma için görüntüleri Lobe ML modeline aktarabilirsiniz.
Dikkat edilmesi gereken birkaç şey:
- TensorFlow kitaplığı muhtemelen bazı uyarı mesajları verecektir - bu, bu örnek kodda kullanılan sürüm için tipiktir.
- Tahmin etiketleri, büyük harf kullanımı, noktalama işaretleri ve boşluk dahil, led_select() işlevinde tam olarak yazıldığı gibi olmalıdır. Farklı bir Lobe modeliniz varsa bunları değiştirdiğinizden emin olun.
- Pi, sabit bir güç kaynağı gerektirir. Pi'nin güç ışığı parlak, sürekli kırmızı olmalıdır.
- Beklendiği gibi bir veya daha fazla LED yanmıyorsa, bunları şu komutla zorlayarak kontrol edin:
red_led.on()
Adım 6: (Opsiyonel) İnşa Edin: Devrenizi Sonlandırın
Projemizi beklendiği gibi çalışacak şekilde test ettiğimize ve gerekirse hata ayıkladığımıza göre, devremizi lehimlemeye hazırız!
Not: Havyanız yoksa bu adımı atlayabilirsiniz. Bir alternatif, tel bağlantılarını sıcak tutkalla kaplamaktır (bu seçenek daha sonra bir şeyleri düzeltmenize/eklemenize/kullanmanıza izin verir, ancak kırılma olasılığı daha yüksektir) veya epoksi veya benzeri bir kalıcı yapıştırıcı kullanmaktır (bu seçenek çok daha dayanıklı olacaktır) ancak bunu yaptıktan sonra devreyi veya potansiyel olarak Pi'yi kullanamayacaksınız)
Tasarım seçimlerim hakkında hızlı yorum (Fotoğraf 1):
- LED'ler ve Pi GPIO için dişi jumper kabloları seçtim çünkü LED'leri çıkarmama ve renkleri değiştirmeme veya gerektiğinde onları hareket ettirmeme izin veriyorlar. Bağlantıları kalıcı hale getirmek istiyorsanız bunları atlayabilirsiniz.
- Benzer şekilde, buton için bir JST konektörü seçtim.
Binaya doğru
1. Dişi jumper kablolarının her birini ortadan ikiye kesin (evet, hepsi!). Kablo sıyırıcıları kullanarak kablo yalıtımının yaklaşık 1/4 (1/2 cm) kadarını çıkarın.
2. LED'lerin her biri için, negatif (daha kısa) bacağa 220Ω'luk bir direnç lehimleyin. (Fotoğraf 2)
3. Küçük bir parça, yaklaşık 1 (2 cm) ısıyla daralan makaron kesin ve LED ile direnç bağlantısını üzerine itin. Diğer direnç ayağının erişilebilir olduğundan emin olun, ardından büzülme borusunu eklemi sabitleyene kadar ısıtın. (Fotoğraf 3)
4. Her bir LED'i bir çift dişi aktarma kablosuna takın. (Fotoğraf 4)
5. Atlama kablolarını etiketleyin (örneğin bantla), ardından atlama kablolarını baskılı devre kartınıza (PCB) lehimleyin. (Fotoğraf 5)
6. Ardından, her bir LED'i ilgili Pi GPIO pinine bağlamak için bir (kesilmiş) dişi atlama teli kullanın. Bir atlama telini lehimleyin ve etiketleyin, böylece çıplak metal PCB aracılığıyla pozitif LED bacağına bağlanır. (Fotoğraf 5)
Not: Bu kabloyu nereye lehimlediğiniz, PCB düzeninize bağlı olacaktır. Bu kabloyu doğrudan pozitif LED atlama kablosuna da lehimleyebilirsiniz.
7. JST konektörünün negatif (siyah) ucuna 220Ω'luk bir direnç lehimleyin. (Fotoğraf 6)
8. JST konektörünü ve direnci basmalı düğmeye lehimleyin.(Foto 6)
9. M-to-F atlama tellerini buton konnektörü ile GPIO pinleri arasına bağlayın (hatırlatma: siyah GND'dir).
10. Daha güvenli bir bağlantı için PCB bağlantılarını sıcak tutkal veya epoksi ile kaplayın.
Not: Epoksi kullanmayı seçerseniz, gelecekte Pi'nin GPIO pinlerini başka projeler için kullanamayabilirsiniz. Bu konuda endişeleriniz varsa, bir GPIO şerit kablosu ekleyin ve bunun yerine atlama tellerini buna bağlayın.
Adım 7: (İsteğe Bağlı) Oluşturun: Case
Pi'niz için kamerayı, düğmeyi ve LED'leri yerinde tutacak ve aynı zamanda Pi'yi koruyacak bir muhafaza oluşturun. Bir karton muhafazayı hızlı bir şekilde prototiplemek için kendi muhafazanızı tasarlayın veya aşağıdaki yapım talimatlarımızı izleyin!
-
Küçük karton kutunun üstünde, basmalı düğmenin, durum ışığının, tanımlayıcı ışıkların ve pi kamera penceresinin konumlarını izleyin (Fotoğraf 1).
Not: Pi kamera penceresi yaklaşık 3/4" x 1/2" olmalıdır
-
Hassas bıçağınızı kullanarak izleri kesin.
Not: Gittikçe boyutları test etmek isteyebilirsiniz (Foto 1)
- İsteğe bağlı: Kasayı boyayın! Sprey boyayı seçtim:)
- Pi Kamera için dikdörtgen bir "pencere" kapağı kesin (Fotoğraf 4) ve kutunun içini yapıştırın
-
Son olarak, Pi güç kablosu için yuvayı kesin.
Pi güç kablosu yuvası için en iyi yeri bulmak için önce tüm elektronik aksamların takılması önerilir
Adım 8: Kurun ve Dağıtın
Bu kadar! Projenizi kurmaya ve dağıtmaya hazırsınız! Muhafazayı çöp kutularınızın üzerine yerleştirin, Pi'yi takın ve atıklarımızı azaltmanın daha hızlı ve daha güvenilir bir yolunu bulmak için programı çalıştırın. Yay!
İleriye gidiyor
- Projelerinizi ve fikirlerinizi Lobe Reddit topluluğu aracılığıyla diğer insanlarla paylaşın!
- Çok çeşitli Lobe projelerini dağıtmak için Python'un nasıl kullanılacağına dair genel bir bakış için Lobe Python GitHub deposuna göz atın
- Sorular veya proje istekleri? Bu proje hakkında bir yorum bırakın veya doğrudan bize ulaşın: [email protected]
Önerilen:
Kendi Bağlantılı Isıtma Termostatınızı Yapın ve Isıtma ile Tasarruf Yapın: 53 Adım (Resimlerle)
Kendi Bağlantılı Isıtma Termostatınızı Yapın ve Isıtma İle Tasarruf Edin: Amacı Nedir? Evinizi tam istediğiniz gibi ısıtarak konforu artırın Evinizi sadece ihtiyaç duyduğunuzda ısıtarak tasarruf edin ve sera gazı emisyonlarını azaltın Nerede olursanız olun ısıtmanızı kontrol altında tutun Bunu yaptığınız için gurur duyun
RTC ile Kendi Retro Nixie Saatinizi Yapın!: 7 Adım (Resimlerle)
Bir RTC ile Kendi Retro Nixie Saatinizi Yapın!: Bu projede size bir retro nixie saatin nasıl oluşturulacağını göstereceğim. Bu, size yüksek voltajlı bir DC güç kaynağı ile nixie tüplerini nasıl kontrol edebileceğinizi göstereceğim ve ardından 4 nixie tüpünü bir Arduino, bir Gerçek Zamanlı Saat (RTC) ve bir cu
Raspberry Pi Zero ile Kendi Ortam Aydınlatmanızı Yapın: 5 Adım (Resimlerle)
Raspberry Pi Zero ile Kendi Ortam Aydınlatmanızı Yapın: Bu projede, TV'nize izleme deneyimini iyileştiren bir ortam aydınlatma efekti eklemek için bir Raspberry Pi Zero'yu birkaç tamamlayıcı parça ile nasıl birleştireceğinizi göstereceğim. Başlayalım
Arduino ile Kendin Yap Akıllı Çöp Kovası: 6 Adım (Resimlerle)
Arduino İle Kendin Yap Akıllı Çöp Kovası: Burada arduino ve ultrasonik sensör kullanarak Akıllı Çöp Kovası yapacağız. Umarım bu projeyi öğrenmekten zevk alırsınız
Çok Küçük Bir Robot Yapın: Kıskaçlı Dünyanın En Küçük Tekerlekli Robotunu Yapın.: 9 Adım (Resimlerle)
Çok Küçük Bir Robot Yapın: Kıskaçlı Dünyanın En Küçük Tekerlekli Robotunu Yapın.: Küçük nesneleri alıp hareket ettirebilen bir kavrayıcıya sahip 1/20 inç küp bir robot yapın. Bir Picaxe mikro denetleyici tarafından kontrol edilir. Zamanın bu noktasında, bunun dünyanın kıskaçlı en küçük tekerlekli robotu olabileceğine inanıyorum. Bu hiç şüphesiz ch