Оглавление:

Сделайте классификатор Pi Trash с ML !: 8 шагов (с изображениями)
Сделайте классификатор Pi Trash с ML !: 8 шагов (с изображениями)

Видео: Сделайте классификатор Pi Trash с ML !: 8 шагов (с изображениями)

Видео: Сделайте классификатор Pi Trash с ML !: 8 шагов (с изображениями)
Видео: "Опыт участия в Microsoft Malware Classification Challenge" Михаил Трофимов (Machine Learning Works) 2024, Декабрь
Anonim
Сделайте классификатор мусора Pi с помощью ML!
Сделайте классификатор мусора Pi с помощью ML!
Сделайте классификатор мусора Pi с помощью ML!
Сделайте классификатор мусора Pi с помощью ML!

Проект 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 в безголовой конфигурации. Вот удобное для новичков руководство о том, как это сделать.

Также полезно знать следующее:

  1. Знакомство с Raspberry Pi

    • Вот удобное руководство по началу работы!
    • Также полезно: начало работы с камерой Pi
  2. Чтение и редактирование кода Python (вам не нужно писать программу, просто отредактируйте)

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

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

    Как использовать учебник по макету

Узнай, куда идет твой мусор

В каждом городе США (и я предполагаю, что на земном шаре) есть свой мусор / переработка / компост и т. Д. система сбора. Это означает, что для создания точного классификатора мусора нам нужно 1) создать собственную модель машинного обучения (мы рассмотрим это на следующем шаге - без кода!) И 2) знать, куда идет каждый кусок мусора.

Поскольку я не всегда знал подходящую корзину для каждого предмета, который использовал для обучения своей модели, я использовал листовку Seattle Utilities (фото 1), а также эту удобную подсказку «Куда она девается?». инструмент поиска для города Сиэтл! Узнайте, какие ресурсы доступны в вашем городе, просмотрев городскую утилиту для вывоза мусора и просмотрев ее веб-сайт.

Шаг 2. Создайте собственную модель машинного обучения в Lobe

Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe
Создание пользовательской модели машинного обучения в Lobe

Lobe - это простой в использовании инструмент, в котором есть все необходимое для воплощения ваших идей в области машинного обучения. Покажите ему примеры того, что вы хотите, и он автоматически обучит пользовательскую модель машинного обучения, которую можно экспортировать для периферийных устройств и приложений. Для начала не требуется никакого опыта. Вы можете тренироваться на собственном компьютере бесплатно!

Вот краткий обзор того, как использовать Lobe:

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

2. Сделайте или импортируйте фотографии и пометьте их по соответствующим категориям. (Фото 1) Эти ярлыки нам понадобятся позже в программной части проекта.

Есть два способа импортировать фотографии:

  1. Делайте фотографии предметов прямо с веб-камеры вашего компьютера или
  2. Импортируйте фотографии из существующих папок на вашем компьютере.

    Имейте в виду, что имя папки с фотографиями будет использоваться в качестве названия ярлыка категории, поэтому убедитесь, что оно соответствует существующим ярлыкам

В сторону: в итоге я использовал оба метода, так как чем больше у вас фотографий, тем точнее будет ваша модель.

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: Создайте код: программное обеспечение

Code It: Программное обеспечение!
Code It: Программное обеспечение!
Code It: Программное обеспечение!
Code It: Программное обеспечение!

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: (Необязательно) Постройте его: чехол

(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!
(Необязательно) Build It: Case!

Создайте корпус для вашего Pi, который будет удерживать камеру, кнопку и светодиоды на месте, а также защищать Pi. Создайте свой собственный корпус или следуйте нашим инструкциям по сборке ниже, чтобы быстро создать прототип картонного корпуса!

  1. В верхней части небольшой картонной коробки проследите места для кнопки, индикатора состояния, индикаторов идентификатора и окна пи-камеры (фото 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]

Рекомендуемые: