Оглавление:
- Шаг 1. Прежде чем мы начнем
- Шаг 2. Создайте собственную модель машинного обучения в Lobe
- Шаг 3: Сборка: оборудование
- Шаг 4: Создайте код: программное обеспечение
- Шаг 5: Протестируйте: Запустите программу
- Шаг 6: (Необязательно) Постройте: Завершите свою схему
- Шаг 7: (Необязательно) Постройте его: чехол
- Шаг 8: Установите и разверните
Видео: Сделайте классификатор Pi Trash с ML !: 8 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Проект Trash Classifier, ласково известный как «Куда он девается ?!», разработан для того, чтобы выбросить вещи быстрее и надежнее.
В этом проекте используется модель машинного обучения (ML), обученная в Lobe, удобном для новичков (без кода!) Построителе моделей ML, чтобы определить, идет ли объект в мусор, переработку, компост или опасные отходы. Затем модель загружается на компьютер Raspberry Pi 4, чтобы ее можно было использовать везде, где вы можете найти мусорные баки!
В этом руководстве вы узнаете, как создать собственный проект Trash Classifier на Raspberry Pi из модели Lobe TensorFlow в Python3.
Сложность: Новичок ++ (полезны некоторые знания схем и кодирования)
Время чтения: 5 мин.
Время сборки: 60-90 мин.
Стоимость: ~ 70 долларов (включая Pi 4)
Запасы:
Программное обеспечение (на стороне ПК)
- Доля
- WinSCP (или другой метод передачи файлов SSH, можно использовать CyberDuck для Mac)
- Терминал
- Подключение к удаленному рабочему столу или RealVNC
Аппаратное обеспечение
- Блок питания Raspberry Pi, SD-карты и USB-C (5 В, 2,5 А)
- Pi камера
- Нажать кнопку
-
5 светодиодов (4 светодиода и 1 светодиод состояния)
- Желтый светодиод: мусор
- Синий светодиод: переработка
- Зеленый светодиод: компост
- Красный светодиод: опасные отходы
- Белый светодиод: статус
- 6 резисторов 220 Ом
- 10 перемычек M-to-M
- Макетная плата половинного размера
Если вы решите паять:
- 1 разъем JST, только гнездовой конец
- 2 перемычки M-F
- 10 перемычек F-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) создать собственную модель машинного обучения (мы рассмотрим это на следующем шаге - без кода!) И 2) знать, куда идет каждый кусок мусора.
Поскольку я не всегда знал подходящую корзину для каждого предмета, который использовал для обучения своей модели, я использовал листовку Seattle Utilities (фото 1), а также эту удобную подсказку «Куда она девается?». инструмент поиска для города Сиэтл! Узнайте, какие ресурсы доступны в вашем городе, просмотрев городскую утилиту для вывоза мусора и просмотрев ее веб-сайт.
Шаг 2. Создайте собственную модель машинного обучения в Lobe
Lobe - это простой в использовании инструмент, в котором есть все необходимое для воплощения ваших идей в области машинного обучения. Покажите ему примеры того, что вы хотите, и он автоматически обучит пользовательскую модель машинного обучения, которую можно экспортировать для периферийных устройств и приложений. Для начала не требуется никакого опыта. Вы можете тренироваться на собственном компьютере бесплатно!
Вот краткий обзор того, как использовать Lobe:
1. Откройте программу Lobe и создайте новый проект.
2. Сделайте или импортируйте фотографии и пометьте их по соответствующим категориям. (Фото 1) Эти ярлыки нам понадобятся позже в программной части проекта.
Есть два способа импортировать фотографии:
- Делайте фотографии предметов прямо с веб-камеры вашего компьютера или
-
Импортируйте фотографии из существующих папок на вашем компьютере.
Имейте в виду, что имя папки с фотографиями будет использоваться в качестве названия ярлыка категории, поэтому убедитесь, что оно соответствует существующим ярлыкам
В сторону: в итоге я использовал оба метода, так как чем больше у вас фотографий, тем точнее будет ваша модель.
3. Используйте функцию «Play», чтобы проверить точность модели. Измените расстояния, освещение, положение рук и т. Д., Чтобы определить, где находится модель, а где нет. При необходимости добавьте больше фотографий. (Фото 3-4)
4. Когда вы будете готовы, экспортируйте свою модель Lobe ML в формат TensorFlow (TF) Lite.
Подсказки:
-
Перед импортом фотографий составьте список всех категорий, которые вам понадобятся, и того, как вы хотите их пометить (например, «мусор», «переработка», «компост» и т. Д.)
Примечание. Используйте те же метки, что и на фотографии «Этикетки моделей лепестков» выше, чтобы уменьшить объем кода, который необходимо изменить
- Включите категорию "не мусор", в которой есть фотографии всего, что может быть на фотографии (например, ваших рук, фона и т. Д.)
- Если возможно, сделайте фотографии с камеры Pi и импортируйте в Lobe. Это значительно повысит точность вашей модели!
- Нужны еще фотографии? Ознакомьтесь с наборами данных с открытым исходным кодом на Kaggle, включая этот набор изображений для классификации мусора!
- Нужна дополнительная помощь? Присоединяйтесь к сообществу Lobe Coommunity на Reddit!
Шаг 3: Сборка: оборудование
1. Осторожно подключите камеру Pi к Pi (дополнительную информацию см. В руководстве по началу работы Pi Foundation). (Фото 1)
2. Следуйте схеме подключения, чтобы подключить кнопку и светодиоды к контактам Pi GPIO.
- Кнопка: подключите одну ножку кнопки к контакту 2 GPIO. Подключите другой через резистор к контакту GPIO GND.
- Желтый светодиод: подключите положительную (более длинную) ногу к контакту 17 GPIO. Подключите другую ногу через резистор к контакту GPIO GND.
- Синий светодиод: подключите положительную клемму к контакту 27 GPIO. Подключите другую ногу через резистор к контакту GPIO GND.
- Зеленый светодиод: подключите положительную ногу к контакту 22 GPIO. Подключите другую ногу через резистор к контакту GPIO GND.
- Красный светодиод: подключите положительную ногу к контакту 23 GPIO. Подключите другую ногу через резистор к контакту GPIO GND.
- Белый светодиод: подключите положительную ногу к контакту 24 GPIO. Подключите другую ногу через резистор к контакту 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 install lobe
4. Загрузите код классификатора мусора (rpi_trash_classifier.py) из этого репо на Pi (нажмите кнопку «Код», как показано на фото 1).
- Предпочитаете копировать / вставлять? Получите необработанный код здесь.
- Предпочитаете загружать на свой компьютер? Загрузите репо / код на свой компьютер, затем перенесите код Python в Pi через WinSCP (или вашу предпочтительную программу удаленной передачи файлов).
5. После того, как вы подключили оборудование к контактам GPIO Pi, прочтите пример кода и обновите любые пути к файлам по мере необходимости:
- Строка 29: путь к файлу модели Lobe TF
- Строки 47 и 83: путь к файлам, снятым через камеру Pi.
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 секунды для регулировки уровня освещенности.
Исправление проблем
Самая большая проблема - убедиться, что полученное изображение соответствует нашим ожиданиям, поэтому потратьте некоторое время на просмотр изображений и сравнение ожидаемых результатов с выходной мощностью светодиодного индикатора. При необходимости вы можете передать изображения в модель Lobe ML для прямого вывода и более быстрого сравнения.
Несколько замечаний:
- Библиотека TensorFlow, скорее всего, выдаст некоторые предупреждающие сообщения - это типично для версии, используемой в этом примере кода.
- Метки прогнозов должны быть точно такими, как написано в функции led_select (), включая регистр букв, пунктуацию и интервалы. Обязательно измените их, если у вас другая модель лепестка.
- 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. Пометьте перемычки (например, изолентой), затем припаяйте перемычки к печатной плате (PCB). (Фото 5)
6. Затем используйте (отрезанную) перемычку-гнездо для подключения каждого светодиода к соответствующему контакту Pi GPIO. Припаяйте и пометьте перемычку так, чтобы оголенный металл подключался к положительной ножке светодиода через печатную плату. (Фото 5)
Примечание. Место пайки этого провода зависит от разводки печатной платы. Вы также можете припаять этот провод непосредственно к положительной перемычке светодиода.
7. Припаяйте резистор 220 Ом к отрицательному (черному) концу разъема JST. (Фото 6)
8. Припаяйте разъем JST и резистор к кнопке (Фото 6).
9. Подключите перемычки M-F между разъемом кнопки и контактами GPIO (напоминание: черный - GND).
10. Покройте соединения печатной платы горячим клеем или эпоксидной смолой для более надежного соединения.
Примечание: если вы решите использовать эпоксидную смолу, возможно, вы не сможете использовать контакты GPIO Pi для других проектов в будущем. Если вас это беспокоит, добавьте ленточный кабель GPIO и вместо этого подключите к нему перемычки.
Шаг 7: (Необязательно) Постройте его: чехол
Создайте корпус для вашего 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]
Рекомендуемые:
Сделайте ленточный контроллер: 11 шагов (с изображениями)
Создайте ленточный контроллер: ленточные контроллеры - отличный способ управлять синтезатором. Они состоят из сенсорной полоски, которая позволяет непрерывно контролировать высоту звука. Электропроводящая полоса, называемая «велостат», которая реагирует на изменения напряжения или сопротивления, вызванные
Светодиодная фоторамка в форме сердца - сделайте идеальный подарок на День святого Валентина или день рождения: 7 шагов (с изображениями)
Светодиодная фоторамка в форме сердца - сделайте идеальный подарок на День святого Валентина или день рождения: Здравствуйте! В этой инструкции я покажу вам, как вы можете сделать эту потрясающую фоторамку в виде сердца со светодиодной подсветкой. Для всех энтузиастов электроники! Сделайте идеальный подарок на День святого Валентина, День Рождения или Годовщину для своих близких! Вы можете посмотреть демонстрационное видео этого
Используйте силу и сделайте свой собственный световой меч (лезвие): 9 шагов (с изображениями)
Используйте силу и сделайте свой собственный световой меч (лезвие): эта инструкция предназначена специально для изготовления лезвия для светового меча Ben Solo Legacy, приобретенного в Диснейленде на окраине Галактики в Анахайме, Калифорния, однако аналогичные шаги могут быть предприняты для создания собственного лезвия для другого лазерный меч. Следуйте за
Trash Built BT Line Drawing Bot - My Bot: 13 шагов (с изображениями)
Trash Built BT Line Drawing Bot - My Bot: Друзья, после долгого перерыва, около 6 месяцев, я пришел с новым проектом. До завершения Cute Drawing Buddy V1, SCARA Robot - Arduino я планирую создать еще одного бота для рисования, основная цель которого - покрыть большое пространство для рисования. Итак, фиксированные роботы-манипуляторы c
Trash-o-caster: 15 шагов (с изображениями)
Trash-o-caster: Во время недавнего шторма эту изношенную электрогитару нашли на обочине дороги, засыпанной снегом. За вычетом всей электрики, кроме домкрата, я решил вернуть его с края. Я всегда хотел «Страт» или что-то подобное. Этот милый сингл