Съдържание:
- Стъпка 1: Преди да започнем
- Стъпка 2: Създайте персонализиран ML модел в Lobe
- Стъпка 3: Изградете го: Хардуер
- Стъпка 4: Кодирайте го: Софтуер
- Стъпка 5: Тествайте го: Стартирайте програмата
- Стъпка 6: (По избор) Изградете го: финализирайте веригата си
- Стъпка 7: (По избор) Изградете го: Случай
- Стъпка 8: Инсталирайте и внедрете
Видео: Направете Pi Trash Classifier с ML!: 8 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:49
Проектът за класифициране на боклука, известен като „Къде отива ?!“, е предназначен да направи изхвърлянето на нещата по -бързо и по -надеждно.
Този проект използва модел за машинно обучение (ML), обучен в Lobe, лесен за начинаещи (без код!) ML конструктор на модели, за да идентифицира дали даден обект отива в боклука, рециклиране, компост или опасни отпадъци. След това моделът се зарежда на компютър Raspberry Pi 4, за да го направи полезен навсякъде, където можете да намерите кофи за боклук!
Този урок ще ви запознае как да създадете свой собствен проект за класифициране на боклука на Raspberry Pi от модел Lobe TensorFlow в Python3.
Трудност: Начинаещ ++ (някои познания с схеми и кодиране са полезни)
Време за четене: 5 мин
Време за изграждане: 60 - 90 мин
Цена: ~ $ 70 (включително Pi 4)
Консумативи:
Софтуер (от страна на компютъра)
- Lobe
- WinSCP (или друг метод за прехвърляне на SSH файлове, може да използва CyberDuck за Mac)
- Терминал
- Връзка с отдалечен работен плот или RealVNC
Хардуер
- Захранване Raspberry Pi, SD карта и USB-C (5V, 2.5A)
- Pi камера
- Натисни бутона
-
5 светодиода (4 индикаторни светодиода и 1 светодиод за състоянието)
- Жълт светодиод: боклук
- Син светодиод: рециклирайте
- Зелен светодиод: компост
- Червен светодиод: опасни отпадъци
- Бял светодиод: състояние
- 6 220 ома резистора
- 10 джъмперни проводника M-to-M
- Платка, половин размер
Ако решите да запоявате:
- 1 JST конектор, само с женски край
- 2 проводника от джъмпер M-to-F
- 10 проводника от джъмпер F-to-F
- Печатни платки
Корпус
- Калъф за проект (например картонена, дървена или пластмасова кутия, приблизително 6 "x 5" x 4 ")
-
0,5 "x 0,5" (2 см x 2 см) чист пластмасов квадрат
Напр. от пластмасов капак на контейнер за храна
- Велкро
Инструменти
- Резачки за тел
- Прецизен нож (например точен нож) и подложка за рязане
- Поялник (по избор)
- Инструмент за топене (или друго непроводимо лепило-епоксидът работи чудесно, но е постоянен)
Стъпка 1: Преди да започнем
Този проект предполага, че започвате с напълно настроен Raspberry Pi в конфигурация без глава. Ето ръководство за начинаещи как да направите това.
Също така помага да имате известни познания за следното:
-
Запознаване с Raspberry Pi
- Ето едно удобно ръководство за започване!
- Също полезно: Първи стъпки с камерата Pi
-
Четене и редактиране на Python код (няма да е необходимо да пишете програма, просто редактирайте)
Въведение в Python с Raspberry Pi
- Четене на електрически схеми на Fritzing
-
Използване на макет
Как да използвате урок за макет
Разберете къде отива боклукът ви
Всеки град в САЩ (и бих предположил, че по света) има свой собствен боклук/рециклиране/компост/и т.н. система за събиране. Това означава, че за да направим точен класификатор на боклука, ще трябва 1) да изградим персонализиран ML модел (ще разгледаме това в следващата стъпка - без код!) И 2) да знаем къде отива всяко парче боклук.
Тъй като не винаги знаех подходящото кошче за всеки артикул, който използвах за обучение на моя модел, използвах флаера на Seattle Utilities (Снимка 1), а също и този удобен „Къде отива?“инструмент за търсене за град Сиатъл! Проверете какви ресурси има във вашия град, като потърсите помощната програма за събиране на боклук във вашия град и разгледате нейния уебсайт.
Стъпка 2: Създайте персонализиран ML модел в Lobe
Lobe е лесен за използване инструмент, който има всичко необходимо, за да реализирате идеите си за машинно обучение. Покажете му примери за това, което искате да направи, и той автоматично обучава персонализиран модел за машинно обучение, който може да се експортира за крайни устройства и приложения. Не е необходим опит, за да започнете. Можете да тренирате на собствен компютър безплатно!
Ето кратък преглед за това как да използвате Lobe:
1. Отворете програмата Lobe и създайте нов проект.
2. Правете или импортирайте снимки и ги маркирайте в подходящи категории. (Снимка 1) Тези етикети ще ни трябват по -късно в софтуерната част на проекта.
Има два начина за импортиране на снимки:
- Правете снимки на артикули директно от уеб камерата на компютъра си или
-
Импортирайте снимки от съществуващи папки на вашия компютър.
Имайте предвид, че името на папката със снимки ще се използва като име на етикет на категория, затова се уверете, че съответства на съществуващите етикети
Встрани: В крайна сметка използвах и двата метода, тъй като колкото повече снимки имате, толкова по -точен е вашият модел.
3. Използвайте функцията "Възпроизвеждане", за да тествате точността на модела. Променете разстоянията, осветлението, позициите на ръцете и т.н., за да определите къде е моделът и не е точен. Добавете още снимки, ако е необходимо. (Снимки 3 - 4)
4. Когато сте готови, експортирайте вашия модел Lobe ML във формат TensorFlow (TF) Lite.
Съвети:
-
Преди да импортирате снимки, направете списък с всички категории, от които се нуждаете, и как искате да ги маркирате (например „боклук“, „рециклиране“, „компост“и т.н.)
Забележка: Използвайте същите етикети, както е показано на снимката „Етикети на модела на лопатки“по -горе, за да намалите количеството код, който трябва да промените
- Включете категория за „не боклук“, която има снимки на каквото и да е друго на снимката (напр. Ръцете и ръцете ви, фонът и т.н.)
- Ако е възможно, направете снимки от Pi Camera и импортирайте в Lobe. Това значително ще подобри точността на вашия модел!
- Нуждаете се от още снимки? Вижте наборите от данни с отворен код на Kaggle, включително този набор от изображения за класификация на боклука!
- Нуждаете се от повече помощ? Свържете се с Lobe Coommunity на Reddit!
Стъпка 3: Изградете го: Хардуер
1. Внимателно свържете Pi камерата към Pi (посетете ръководството за начало на Pi Foundation за повече информация). (Снимка 1)
2. Следвайте схемата на свързване, за да свържете бутона и светодиодите към щифтовете Pi GPIO.
- Бутон: Свържете единия крак на бутона към GPIO щифт 2. Свържете другия чрез резистор към GPIO GND щифт.
- Жълт светодиод: Свържете положителния (по -дълъг) крак към GPIO щифт 17. Свържете другия крак чрез резистор към GPIO GND щифт.
- Син светодиод: Свържете положителния крак към GPIO пин 27. Свържете другия крак чрез резистор към GPIO GND щифт.
- Зелен светодиод: Свържете положителния крак към GPIO пин 22. Свържете другия крак чрез резистор към GPIO GND щифт.
- Червен светодиод: Свържете положителния крак към GPIO пин 23. Свържете другия крак чрез резистор към GPIO GND щифт.
- Бял светодиод: Свържете положителния крак към GPIO извод 24. Свържете другия крак чрез резистор към GPIO GND щифт.
3. Препоръчва се да тествате веригата си на макет и да стартирате програмата, преди да запоите или да направите някоя от връзките постоянна. За да направим това, ще трябва да напишем и качим нашата софтуерна програма, така че нека преминем към следващата стъпка!
Стъпка 4: Кодирайте го: Софтуер
1. На вашия компютър отворете WinSCP и се свържете с вашия Pi. Създайте папка Lobe в домашната директория на вашия Pi и създайте папка с модел в тази директория.
2. Плъзнете полученото съдържание на папката Lobe TF върху Pi. Забележете пътя на файла:/home/pi/Lobe/model
3. На Pi отворете терминал и изтеглете библиотеката lobe-python за Python3, като изпълните следните команди bash:
pip3 инсталирайте
pip3 инсталирайте лоб
4. Изтеглете кода на класификатора на боклука (rpi_trash_classifier.py) от това репо на Pi (щракнете върху бутона „Код“, както е показано на снимка 1).
- Предпочитате да копирате/поставите? Вземете суровия код тук.
- Предпочитате да изтеглите на вашия компютър? Изтеглете репо/код на вашия компютър, след което прехвърлете кода на Python към Pi чрез WinSCP (или предпочитаната от вас програма за отдалечено прехвърляне на файлове).
5. След като свържете хардуера към GPIO щифтовете на Pi, прочетете примерния код и актуализирайте всички файлови пътища, ако е необходимо:
- Ред 29: файлов път към модела Lobe TF
- Редове 47 и 83: път към файла до заснетите изображения чрез Pi Camera
6. Ако е необходимо, актуализирайте етикетите на модела в кода, за да съответстват точно на етикетите във вашия модел Lobe (включително главни букви, пунктуация и т.н.):
- Ред 57: "боклук"
- Ред 60: "рециклиране"
- Ред 63: "компост"
- Ред 66: „Съоръжение за опасни отпадъци“
- Ред 69: "не боклук!"
7. Стартирайте програмата с помощта на Python3 в прозореца на терминала:
python3 rpi_trash_classifier.py
Стъпка 5: Тествайте го: Стартирайте програмата
Преглед на програмата
Когато стартирате програмата за първи път, ще отнеме известно време, за да заредите библиотеката TensorFlow и модела Lobe ML. Когато програмата е готова да заснеме изображение, светлинният индикатор за състоянието (бял светодиод) ще мига.
След като сте направили изображение, програмата ще сравни изображението с модела Lobe ML и ще изведе полученото прогнозиране (ред 83). Изходът определя коя светлина е включена: жълта (боклук), синя (рециклиране), зелена (компост) или червена (опасни отпадъци).
Ако никой от индикаторните светодиоди не се включи и светодиодът за състоянието се върне в импулсен режим, това означава, че заснетото изображение не е „боклук“, с други думи, направете отново снимката!
Заснемане на изображение
Натиснете бутона, за да заснемете изображение. Имайте предвид, че може да се наложи да задържите бутона за поне 1 секунди, за да може програмата да регистрира пресата. Препоръчително е да направите няколко тестови изображения, след което да ги отворите на работния плот, за да разберете по -добре изгледа и рамката на камерата.
За да се даде време на потребителя да позиционира обекта и нивата на светлината на камерата да се регулират, са необходими около 5 секунди, за да се заснеме напълно изображение. Можете да промените тези настройки в кода (редове 35 и 41), но имайте предвид, че Pi Foundation препоръчва минимум 2 секунди за регулиране на нивото на осветеност.
Отстраняване на неизправности
Най -голямото предизвикателство е да се гарантира, че заснетото изображение е това, което очакваме, така че отделете малко време, за да прегледате изображенията и да сравните очакваните резултати с индикатор LED изход. Ако е необходимо, можете да предадете изображения в модела Lobe ML за директно заразяване и по -бързо сравнение.
Няколко неща, които трябва да се отбележат:
- Библиотеката TensorFlow вероятно ще хвърли някои предупредителни съобщения - това е типично за версията, използвана в този примерен код.
- Етикетите за предсказване трябва да бъдат точно както са написани във функцията led_select (), включително главни букви, пунктуация и интервали. Не забравяйте да ги промените, ако имате различен модел Lobe.
- Pi изисква постоянно захранване. Лампата за захранване на Pi трябва да е ярка, непрекъснато червена.
- Ако един или повече светодиоди не се включват, когато се очаква, проверете, като ги принудите да включите с командата:
red_led.on ()
Стъпка 6: (По избор) Изградете го: финализирайте веригата си
Сега, след като тествахме и, ако е необходимо, отстранихме грешки, нашия проект, така че да работи според очакванията, ние сме готови да запояваме нашата верига!
Забележка: Ако нямате поялник, можете да пропуснете тази стъпка. Една алтернатива е да покриете кабелните връзки с горещо лепило (тази опция ще ви позволи да поправите/добавите/използвате нещата по -късно, но е по -вероятно да се счупят) или да използвате епоксидна смола или подобно трайно лепило (тази опция ще бъде много по -трайна но няма да можете да използвате веригата или потенциално Pi след като направите това)
Бърз коментар за избора ми на дизайн (Снимка 1):
- Избрах женски джъмперни проводници за светодиодите и Pi GPIO, защото ми позволяват да премахвам светодиодите и да сменям цветове или да ги премествам, ако е необходимо. Можете да пропуснете тези, ако искате да направите връзките постоянни.
- По същия начин избрах JST конектор за бутона.
Напред към сградата
1. Нарежете всеки от проводниците на женския джъмпер наполовина (да, всичките!). С помощта на маша за отстраняване на проводници отстранете около 1/4 (1/2 см) от изолацията на проводника.
2. За всеки от светодиодите запоявайте 220Ω резистор към отрицателния (по -къс) крак. (Снимка 2)
3. Изрежете малко парче, около 1 (2 см) термосвиваща се тръба и натиснете върху светодиода и резисторното съединение. Уверете се, че другият крак на резистора е достъпен, след това загрейте свиващата тръба, докато фиксира съединението. (Снимка 3)
4. Поставете всеки светодиод в чифт женски проводници. (Снимка 4)
5. Етикетирайте проводниците на джъмпера (например с лента), след това запоявайте проводниците на джъмпера на вашата печатна платка (печатна платка). (Снимка 5)
6. След това използвайте (изрязан) женски джъмпер проводник, за да свържете всеки светодиод към съответния Pi GPIO щифт. Запоявайте и маркирайте джъмпер проводник, така че голият метал да се свърже с положителния LED крак чрез печатната платка. (Снимка 5)
Забележка: Където запоявате този проводник ще зависи от оформлението на вашата печатна платка. Можете също така да запоите този проводник директно към положителния проводник на джъмпера с LED.
7. Запоявайте 220Ω резистор към отрицателния (черен) край на JST конектора. (Снимка 6)
8. Запоявайте JST съединителя и резистора към бутона. (Снимка 6)
9. Свържете проводниците на джъмпера M-to-F между съединителя на бутона и GPIO щифтовете (напомняне: черното е GND).
10. Покрийте връзките на платката с горещо лепило или епоксидна смола за по -сигурно свързване.
Забележка: ако решите да използвате епоксидна смола, може да не успеете да използвате GPIO щифтовете на Pi за други проекти в бъдеще. Ако се притеснявате за това, добавете GPIO лентов кабел и вместо това свържете кабелите на джъмпера към него.
Стъпка 7: (По избор) Изградете го: Случай
Създайте кутия за вашия Pi, която ще държи камерата, бутона и светодиодите на място, като същевременно защитава Pi. Проектирайте своя собствена кутия или следвайте нашите инструкции за изграждане по -долу за бързо прототипиране на картонена кутия!
-
В горната част на малката картонена кутия проследете местоположенията на бутона, светлината за състоянието, светлините за идентификатор и прозореца на камерата pi (Снимка 1).
Забележка: Прозорецът на Pi камерата трябва да бъде около 3/4 "x 1/2"
-
С помощта на прецизния нож изрежете следите.
Забележка: може да искате да тествате размерите, докато вървите (Снимка 1)
- По избор: Боядисвайте кутията! Избрах спрей боя:)
- Изрежете правоъгълен капак „прозорец“за Pi камерата (снимка 4) и залепете от вътрешната страна на кутията
-
Накрая изрежете слота за захранващия кабел Pi.
Препоръчва се първо да инсталирате цялата електроника, за да намерите най -доброто място за слота за захранващ кабел pi
Стъпка 8: Инсталирайте и внедрете
Това е! Готови сте да инсталирате и внедрите вашия проект! Поставете заграждението над кофите за боклук, включете Pi и стартирайте програмата, за да получите по -бърз и надежден начин за намаляване на отпадъците ни. Да!
Върви напред
- Споделете вашите проекти и идеи с други хора чрез общността на Lobe Reddit!
- Вижте репото на Lobe Python GitHub за общ преглед как да използвате Python за внедряване на по -голямо разнообразие от проекти на Lobe
- Въпроси или заявки за проекти? Оставете коментар за този проект или се свържете директно с нас: [email protected]
Препоръчано:
Направете безкраен огледален часовник: 15 стъпки (със снимки)
Направете безкраен огледален часовник: В предишен проект изградих безкрайно огледало, където крайната ми цел беше да го превърна в часовник. (Направете цветно огледало за безкрайност) Не го преследвах, след като го построих, защото макар да изглеждаше готино, имаше няколко неща с
Направете ЛЕСЕН Infinity Mirror Cube - НЕ 3D печат и НЕ програмиране: 15 стъпки (със снимки)
Направете ЛЕСЕН Infinity Mirror Cube | БЕЗ 3D печат и НЕ програмиране: Всеки харесва добър безкраен куб, но изглежда, че би било трудно да се направи. Моята цел за този Instructable е да ви покажа стъпка по стъпка как да го направите. Не само това, но и с инструкциите, които ви давам, ще можете да направите едно
LED рамка за снимки на сърцето - направете перфектен подарък за Свети Валентин или рожден ден: 7 стъпки (със снимки)
LED рамка за снимки със сърце - Направете перфектен подарък за Свети Валентин или рожден ден: Здравейте! В тази инструкция ще ви покажа как можете да направите тази страхотна LED рамка за снимки със сърце. За всички любители на електрониката! Направете перфектния подарък за Свети Валентин, рожден ден или годишнина за вашите близки! Можете да гледате демонстрационното видео на това
Направете свой собствен осцилоскоп (Mini DSO) със STC MCU лесно: 9 стъпки (със снимки)
Направете свой собствен осцилоскоп (Mini DSO) с STC MCU лесно: Това е прост осцилоскоп, направен със STC MCU. Можете да използвате този Mini DSO, за да наблюдавате формата на вълната. Интервал от време: 100us-500ms Диапазон на напрежение: 0-30V Режим на чертане: вектор или точки
Направете китова карта със скрита хартиена верига: 13 стъпки (със снимки)
Направете карта на кит със скрита хартиена верига: Тази инструкция съдържа посоката да направите поздравителна картичка с кит, чието око светва, като натиснете хартиен превключвател, който е под „натиснете тук“стикер. Това е забавно занимание за деца, изучаващи вериги и прави приятна майка