Исходная информация

В среднем американцы выбрасывают более 4 фунтов отходов в день [1]. По оценкам EPA, в 2017 году на свалку было выброшено 139,6 млн тонн мусора [2], и 75% отходов можно переработать или компостировать, но мы делаем это только для 34% [3]. Предметы, которые обычно считаются пригодными для вторичной переработки, не подлежат вторичной переработке, если они загрязнены, и, если их переработать, они загрязнят другие предметы, подлежащие вторичной переработке.

Другие компании уже предложили решения, но их решения включают в себя дорогие роботизированные руки, и меня побудило придумать более дешевое и простое решение [4].

Постановка цели/проблемы

Неправильно утилизированные отходы представляют опасность для окружающей среды, а эффективность переработки снижается из-за ограниченности сознания и усилий людей. Также невооруженным глазом трудно отличить чистый мусор от грязного, что приводит к сокращению объема вторичной переработки.

Гипотеза / Предлагаемое решение

Сверточные нейронные сети [6] использовались во многих областях, от классификации почерка до медицинских диагнозов. Моя гипотеза состоит в том, что CNN также можно использовать для решения этой задачи. Более того, я предполагаю, что производительность и размеры такой модели достаточно малы, чтобы поместиться на дешевом микроконтроллере.

Одним из решений является создание машины, которая будет определять, подлежат ли отходы вторичной переработке, а затем правильно их утилизировать. Это касается как человеческой неспособности, так и человеческой лени. В этом проекте представлена ​​система, основанная на компьютерном зрении и машинном обучении. Основные компоненты включают в себя камеру, алгоритм принятия решения в реальном времени и механизм реализации решения.

Процедуры / Экспериментальная установка

Сбор и предварительная обработка изображений

Камера снимает изображения с разрешением 1920 x 1080 пикселей. Изображения с высоким разрешением преобразуются в изображения размером 28 x 28 пикселей. Затем изображения меньшего размера преобразуются в оттенки серого. Полученные изображения по-прежнему сохраняют характеристики больших изображений, но при этом уменьшается объем необходимой обработки.

Государственный аппарат

Камера непрерывно записывает изображения. Мне нужен способ решить, в какую корзину (переработку или мусор) должны быть помещены отходы, и мне нужно запустить алгоритм машинного обучения только один раз. Для этого требуется конечный автомат для отслеживания различных состояний системы.

Этот конечный автомат определяет, когда был брошен новый объект. Он имеет следующие различные состояния.

  1. Пусто: ожидающих объектов нет, система находится в состоянии покоя.
  2. Движение вперед: новый объект размещается, но все еще движется.
  3. Заполнено: объект находится в состоянии покоя и ожидает классификации.
  4. Движение назад: крышка поворачивается, и объект утилизируется. Он все еще в движении.

Для этого конечного автомата я должен обнаруживать различия в последовательных изображениях. Для этого я использовал алгоритм Mean Squared Difference [6]. Я отслеживал последние несколько (в данном случае четыре) значения MSD, чтобы механизм не реагировал на шум.

Без использования конечного автомата будет трудно определить, когда выбрасывается новый объект. Кроме того, поскольку объекты могут двигаться во время их броска и сбрасывать конечный автомат, я использовал среднее значение последних четырех msds для определения нового состояния.

Детали модели

Модель представляет собой классическую модель CNN, полученную из примера MNIST [7]. Он состоит из шести слоев:

  1. Сверточный слой преобразует соседние пиксели в одно значение.
  2. Слой максимального пула принимает максимум из окрестности значений.
  3. Слой сглаживания изменяет размер данных.
  4. Плотный слой реализует классификацию.
  5. Слой отсева отбрасывает значения из случайных нейронов, чтобы уменьшить переоснащение и повысить надежность [8].
  6. Последний плотный слой реализует функцию активации softmax, которая распределяет вероятность среди всех классов.

Детали механизма

Мне нужен был простой механизм для принятия решения о классификации. Ардуино — популярные микроконтроллеры для управления небольшими устройствами [9]. Я построил механизм, используя Arduino.

Я исследовал другие варианты механизмов с использованием соленоидов и электромагнитов, но в итоге решил использовать реле и двигатель для простоты.

Этот механизм построен из общедоступных бытовых материалов. Например, я использовал стержень воздушного шара с моей вечеринки по случаю дня рождения в качестве оси для крышки. Я использовал двигатель от игрушки, чтобы повернуть крышку, и вырезал картонную коробку по кругу, чтобы создать крышку.

Электронные компоненты механизма состоят из:

  1. Камера, которая снимает изображение.
  2. Плата микроконтроллера Arduino R3, которая управляет выводом Python.
  3. Четыре реле, которые попеременно подключают питание к двигателю для замыкания цепи.
  4. В зависимости от соединения с реле двигатель переворачивает крышку в любом направлении.

Цепь для управления направлением двигателя

В зависимости от решения мне нужно было, чтобы двигатель вращался либо по часовой стрелке, либо против часовой стрелки. Это делается с помощью 4 реле, с двумя комплектами по два реле в каждом.

  1. Когда все реле выключены, двигатель не работает.
  2. Когда первый набор реле включен, двигатель вращается по часовой стрелке.
  3. Когда второй набор реле включен, двигатель вращается против часовой стрелки.

Я включил двигатель на 500 миллисекунд в любом направлении, изменил направление еще на 500 миллисекунд, а затем выключил реле. Это вернуло крышку в исходное положение.

Детали набора данных (4911 изображений)

Я собрал наборы данных для обучения, используя многие часто встречающиеся предметы домашнего мусора. Я хотел, чтобы данные были надежными и разнообразными, поэтому я варьировал следующие условия:

  1. Захваченное изображение при различных условиях освещения
  2. Захваченные изображения с 360-градусных ракурсов камеры
  3. Захваченные изображения с предмета в разных положениях

Я сделал примерно 300–400 изображений для каждого из этих предметов.

Для сбора наборов данных я написал скрипт Python для захвата изображений и сохранения их в папке (в приложении).

Настройка гиперпараметров

Чтобы найти наилучшую конфигурацию модели, я провел несколько экспериментов с различными комбинациями параметров. Этот шаг известен как настройка гиперпараметров. Я тренировался со 100 эпохами в каждом случае. Я изменил размер ядра, размер плотного слоя и размер выпадающего слоя. В лучшем случае модель с размером ядра 3*3, плотным слоем 32 и слоем отсева 0,25 достигла точности 99,69 %.

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

Черный свет

Под ультрафиолетовым светом становятся видны пятна, невидимые при обычном освещении. [10] Например, пластиковая ложка, покрытая масляным блеском, будет похожа на чистую пластиковую ложку при обычном освещении, но есть явные различия при черном свете. Использование черного света в качестве источника света позволяет различать предметы с невидимыми пятнами. Чистые вещи могут быть отправлены на переработку, а те, что с пятнами, должны отправиться в мусорное ведро. Перерабатывая окрашенные предметы, мы загрязняем перерабатываемые отходы, а это означает, что они не могут быть переработаны, что приводит к снижению уровня переработки. Используя черный свет, мы можем различать их и правильно утилизировать загрязненные и незагрязненные отходы.

Я собрал свой набор данных для черного света так же, как и для белого света. Однако на этот раз я использовал только две категории: чистая бумажная тарелка и грязная бумажная тарелка.

Запуск модели при белом свете привел к той же точности, что и запуск модели при черном свете. Я думаю, что это результат переобучения, и я продолжаю улучшать свою модель, чтобы повысить ее надежность.

На следующих изображениях показан эффект черного света. На первом изображении показана чистая бумажная тарелка, а на втором — грязная бумажная тарелка с флуоресцентными пятнами.

Выводы

На основании своей работы делаю вывод:

  1. CNN — подходящий выбор для классификации мусора.
  2. Даже сеть небольшого размера обеспечивает хорошую производительность.
  3. Ультрафиолетовый свет (также известный как черный свет) эффективен при обнаружении определенных видов пятен.

Исходный код

Весь созданный исходный код можно найти здесь: https://github.com/amrutadharmapurikar/WasteMaterialSortingML.

Будущая работа

В будущем я надеюсь улучшить три вещи:

  1. Я надеюсь улучшить точность моей модели черного света и уменьшить переоснащение.
  2. Я надеюсь снизить затраты, запустив модель на более дешевом процессоре и используя более дешевые камеры.
  3. Я надеюсь улучшить точность моей модели белого света, собирая данные из модели во время ее использования.

Цитаты:

Информация взята с этих сайтов:

  1. https://americanlifestylemag.com/life-culture/health/trash-vs-recycle-do-you-know-when-to-trash-it/
  2. https://www.greenamerica.org/rethinking-recycling/americans-are-really-bad-recycling-only-because-were-not-trying-very-hard
  3. https://www.epa.gov/facts-and-figures-about-materials-waste-and-recycling/national-overview-facts-and-figures-materials
  4. https://techcrunch.com/startup-battlefield/company/greyparrot-ai/
  5. https://www.thesun.co.uk/news/6627105/plastic-pollution-everywhere-earth-expert-warning/
  6. https://scikit-image.org/docs/dev/api/skimage.measure.html
  7. https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks
  8. https://dl.acm.org/doi/book/10.5555/1502111
  9. https://dl.acm.org/doi/10.5555/2627435.2670313
  10. https://www.thoughtco.com/what-glows-under-a-black-light-607615