Съдържание:

Направете Pi Trash Classifier с ML!: 8 стъпки (със снимки)
Направете Pi Trash Classifier с ML!: 8 стъпки (със снимки)

Видео: Направете Pi Trash Classifier с ML!: 8 стъпки (със снимки)

Видео: Направете Pi Trash Classifier с ML!: 8 стъпки (със снимки)
Видео: Flashback Friday: Evidence-Based Weight Loss - Live Presentation 2024, Ноември
Anonim
Направете Pi Trash Classifier с ML!
Направете Pi Trash Classifier с ML!
Направете Pi Trash Classifier с ML!
Направете Pi Trash Classifier с ML!

Проектът за класифициране на боклука, известен като „Къде отива ?!“, е предназначен да направи изхвърлянето на нещата по -бързо и по -надеждно.

Този проект използва модел за машинно обучение (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 в конфигурация без глава. Ето ръководство за начинаещи как да направите това.

Също така помага да имате известни познания за следното:

  1. Запознаване с Raspberry Pi

    • Ето едно удобно ръководство за започване!
    • Също полезно: Първи стъпки с камерата Pi
  2. Четене и редактиране на Python код (няма да е необходимо да пишете програма, просто редактирайте)

    Въведение в Python с Raspberry Pi

  3. Четене на електрически схеми на Fritzing
  4. Използване на макет

    Как да използвате урок за макет

Разберете къде отива боклукът ви

Всеки град в САЩ (и бих предположил, че по света) има свой собствен боклук/рециклиране/компост/и т.н. система за събиране. Това означава, че за да направим точен класификатор на боклука, ще трябва 1) да изградим персонализиран ML модел (ще разгледаме това в следващата стъпка - без код!) И 2) да знаем къде отива всяко парче боклук.

Тъй като не винаги знаех подходящото кошче за всеки артикул, който използвах за обучение на моя модел, използвах флаера на Seattle Utilities (Снимка 1), а също и този удобен „Къде отива?“инструмент за търсене за град Сиатъл! Проверете какви ресурси има във вашия град, като потърсите помощната програма за събиране на боклук във вашия град и разгледате нейния уебсайт.

Стъпка 2: Създайте персонализиран ML модел в Lobe

Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe
Създайте персонализиран ML модел в Lobe

Lobe е лесен за използване инструмент, който има всичко необходимо, за да реализирате идеите си за машинно обучение. Покажете му примери за това, което искате да направи, и той автоматично обучава персонализиран модел за машинно обучение, който може да се експортира за крайни устройства и приложения. Не е необходим опит, за да започнете. Можете да тренирате на собствен компютър безплатно!

Ето кратък преглед за това как да използвате Lobe:

1. Отворете програмата Lobe и създайте нов проект.

2. Правете или импортирайте снимки и ги маркирайте в подходящи категории. (Снимка 1) Тези етикети ще ни трябват по -късно в софтуерната част на проекта.

Има два начина за импортиране на снимки:

  1. Правете снимки на артикули директно от уеб камерата на компютъра си или
  2. Импортирайте снимки от съществуващи папки на вашия компютър.

    Имайте предвид, че името на папката със снимки ще се използва като име на етикет на категория, затова се уверете, че съответства на съществуващите етикети

Встрани: В крайна сметка използвах и двата метода, тъй като колкото повече снимки имате, толкова по -точен е вашият модел.

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. Проектирайте своя собствена кутия или следвайте нашите инструкции за изграждане по -долу за бързо прототипиране на картонена кутия!

  1. В горната част на малката картонена кутия проследете местоположенията на бутона, светлината за състоянието, светлините за идентификатор и прозореца на камерата pi (Снимка 1).

    Забележка: Прозорецът на Pi камерата трябва да бъде около 3/4 "x 1/2"

  2. С помощта на прецизния нож изрежете следите.

    Забележка: може да искате да тествате размерите, докато вървите (Снимка 1)

  3. По избор: Боядисвайте кутията! Избрах спрей боя:)
  4. Изрежете правоъгълен капак „прозорец“за Pi камерата (снимка 4) и залепете от вътрешната страна на кутията
  5. Накрая изрежете слота за захранващия кабел Pi.

    Препоръчва се първо да инсталирате цялата електроника, за да намерите най -доброто място за слота за захранващ кабел pi

Стъпка 8: Инсталирайте и внедрете

Инсталирайте и внедрете!
Инсталирайте и внедрете!

Това е! Готови сте да инсталирате и внедрите вашия проект! Поставете заграждението над кофите за боклук, включете Pi и стартирайте програмата, за да получите по -бърз и надежден начин за намаляване на отпадъците ни. Да!

Върви напред

  • Споделете вашите проекти и идеи с други хора чрез общността на Lobe Reddit!
  • Вижте репото на Lobe Python GitHub за общ преглед как да използвате Python за внедряване на по -голямо разнообразие от проекти на Lobe
  • Въпроси или заявки за проекти? Оставете коментар за този проект или се свържете директно с нас: [email protected]

Препоръчано: