Нейронная сеть, способная классифицировать мусорные отходы

XXIII Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Нейронная сеть, способная классифицировать мусорные отходы

Смирнов Е.Ф. 1
1Государственное бюджетное общеобразовательное учреждение "Инженерно-технологическая школа № 777" Санкт-Петербурга
Рубанова В.А. 1
1ГБОУ "Президентский ФМЛ №239"
Автор работы награжден дипломом победителя I степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

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

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

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

Проблема

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

Цель

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

Задачи

  1. Изучить существующие разработки в данной области исследования

  2. Создать собственную нейронную сеть, используя доступные источники

  3. Предложить сценарий применения классификатора мусорных отходов

  4. Провести апробацию проекта (обучение модели)

  5. Сравнить результаты обучения модели с предсказанными значениями

  6. Выбрать оптимальный вариант количества эпох обучения для получения высокой точности и отсутствия переобучения

  7. Подвести итог о проделанной работе (заключение)

Актуальность

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

(Пример мусоросортировочного оборудования)

Объект исследования

Информационные технологии и программирование

Предмет исследования

Нейронные сети и искусственный интеллект в различных отраслях науки

Существующие способы сортировки мусора

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

(Пример мусоросортировочного оборудования с ИИ)

(Схема обучения искусственного интеллекта)

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

(Схема работы одной из разработок компании Nevlabs)

Новизна

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

Целевой аудиторией являются мусороперерабатывающие предприятия.

Практическая часть

После изучения доступных научных источников, автор решил использовать для задачи многоклассовой классификации конволюционную нейронную сеть, так как в работе Classification of Trash for Recyclability Status”(Mindy Yang, Stanford
University and  Gary Thung, Stanford University) подтверждена высокая эффективность данного метода.


Первый этап

Первым этапом создания нейронной сети является разделение датасета на тестовые и тренировочные данные (исключая нулевой этап – загрузку необходимых библиотек).

  1. Автором работы был найден датасет(Garbage Classification - Zdataset), содержащий необходимые изображения по изучаемой теме, а именно: объекты мусорных отходов 6 классов и состоящий из 2527 изображений: “cardboard(картон)”,”glass(стекло)”,”metal(металл)”,”paper(бумага)”,”plastic(пластик)”,”trash(остальной мусор)”.

Так как данный материал был представлен в виде Zip-архива, необходима распаковка и преобразование в папку для дальнейших действий с данными.

(Часть программного кода, отвечающая за извлечение файлов из Zip-архива и преобразование их в папку с подкаталогами (по названиям классов)).

Результатом является созданная папка, содержащая данные датасета.

  1. Этап разделения изображений из папки на тестовую и обучающую выборки

(Часть программного кода, отвечающая за обработку и разделение данных на тестовую и тренировочную выборки)

У метода train_test_split есть параметр test_size, значение которого показывает процентное деление датасета. В рассматриваемом случае test_size=0.2, это означает, что на тестовые данные выделено 20% от общего количества изображений.

Автор считает, что соотношение 80% на тренировочные к 20% на тестовые данные оптимально, так как позволяет модели тщательнее обучиться на выделенном блоке данных, чтобы на контрольном пакете получить более высокую точность.

Также у данного метода есть параметр shuffle = True, указывающий, что данные будет перемешаны в буфере.

При добавлении в массив data изображений к ним применяется интерполяция (interpolation) INTER_CUBIC (метод позволяет увеличить изображение без потери качества), в соответствии с рекомендацией по использованию именно этого режима от OpenCV.GeometricTransformationofImages.

В первоначальном варианте параметр interpolation соответствовал INTER_LINEAR.

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

(Первоначальный вариант программного кода, часть, отвечающая за обработку изображений)

Результатом выполнения данных операций является деление датасета на тестовые и тренировочные данные.

Второй этап

Вторым этапом создания нейронной сети является проектирование архитектуры сети, слоёв, а также компиляция модели:

  1. Изучив существующие научные работы в данной области исследования, автор создал собственную архитектуру нейронной сети, основывающуюся на Conv-слоях, Pooling-слоях, слоях Dense и Flatten. Данные слои были выбраны для создания нейронной сети, так как вышеперечисленные типы слоёв используются в большинстве случаев задач многоклассовой классификации изображений. По причине наличия у модели одного “входа” и “выхода”, автор решил для удобства создания модели использовать класс Sequential, позволяющий с помощью метода keras.layers добавлять различные слои в модель.

(Изображения, отражающие принцип работы слоя Max-Pooling и Conv2D)

(Конволюционная нейронная сеть с поэтапным пояснением, часть программного кода)

Для сравнения качества классификации был использован слой AveragePooling, вычисляющий среднее значение среди пикселей группы, но полученные результаты ниже аналогичных показателей слоя MaxPooling2D.

(Изображение, отражающее принцип работы слоя Max-Pooling и AveragePooling)

У представленных слоёв есть различные входные параметры (приведены параметры к разным слоям):

  • filters – количество фильтров в слое (первый параметр (96, 192))

  • kernel_size – это размер ядра свёртки в формате (числовоезначение,числовоезначение), чаще используются одинаковые значения (как квадрат). Именно такая форма представлена в программном коде.

  • padding – это заполнение недостающих пикселей по границам для корректности выполнения операции свёртки. В модели padding = ”valid”, что означает использование только тех пикселей, которые полностью перекрываются фильтром. Часто используется для задач классификации, поэтому автор применяет именно этот вариант.

  • input_shape – это входная форма изображения, часто трёхканальная (высота, ширина, глубина)

  • activation – это функция активации, вычисляющая выходной сигнал нейрона. В первом слое Dense используется функция активации relu, которая все отрицательные значения преобразует в 0, что делает её идеально подходящей для задачи классификации, опираясь на данные источника neiroseti.pro/relu. Во втором слое Dense используется функция активации softmax, которая применяется для решения задач многоклассовой классификации и распределяет вероятности по классам.

  • pool_size – это коэффициент уменьшения в слое MaxPooling2D и равен 2.

  • strides – это шаг продвижения в сторону, вниз

(Архитектура нейронной сети)

(Принцип работы слоя Conv2D на примере кошки)

  1. Для объединения, создания единой модели используется метод compile, который настраивает процесс обучения. В нём есть несколько параметров:

    • Функция потерь – количественная оценка, которая будет минимизироваться в процессе обучения. Представляет собой меру успеха в решении поставленной задачи;

    • Оптимизатор - параметр, определяющий как будет изменяться сеть под воздействием функции потерь;

    • Метрика – это показатель успеха, изменяющийся в процессе обучения, например, точность(accuracy) или ошибка(loss).

(Этап компиляции (сборки) модели, часть программного кода)

В данном случае используется оптимизатор(optimizer) Adam, который позволяет обеспечить высокую эффективность в широком спектре задач. Так как метки поделены на численные значения от 0 до 5 (6 классов), а в последнем слое нейронной сети используется функция активации softmax, применяется функция потерь(loss) sparse_categorical_crossentropy,наиболее подходящая под существующие параметры и данные. Исследуемая метрика(metrics) - точность (accuracy), которая является одним из важнейших параметров обучения модели.

Результатом выполнения операций является разработанная, но необученная нейронная сеть.

Третий этап

Третьим этапом создания нейронной сети является обучение:

  1. До начала обучения необходимо привести данные в соответствующую форму, так как на данном этапе это (2021,) для y_train и (506,) для y_test соответственно, а данные размерности должны соотноситься с X_train(2021, 128, 128, 3) и X_test(506, 128, 128, 3) – необходимо преобразование.

Автор реализует выполнение этой операции с помощью метода reshape, который позволяет изменить выходную форму под конкретно заданную размерность.

(Этап преобразования данных в необходимую (конкретную, заданную) форму, является частью программного кода)

По итогам формирования необходимых компонентов автор перешёл к этапу обучения модели.

  1. Для обучения модели автор выбрал метод fit,который состоит из нескольких параметров:

    • Данные, которые передаются для обучения – тренировочные (X_train, y_train)

    • Количество эпох обучения (epochs) – сколько раз должен повториться цикл обучения на переданных данных (количество итераций)

Метод fit позволяет реализовать непосредственно процесс обучения путём распознавания закономерностей в изображениях.

(Часть программного кода, отвечающая за обучение модели)

  • Среди параметров указан verbose = 1 – это индикатор выполнения

  • validation_data – это данные, которые буду использоваться при оценке точности модели(тренировочной(train) и тестовой(val))

Также указание параметра history позволяет отследить историю/процесс обучения.

(Часть истории обучения модели (последние 5 эпох))

По завершении процесса обучения нейронной сети автор убедился в эффективности разработанной модели.

(Рис. 1) (Рис. 2)

(Рис. 3) (Рис. 4)

На Рис.1 изображена стеклянная бутылка, принадлежащая классу “glass”, что соответствует предсказанию модели ([1]). На Рис.2 изображена металлическая банка, принадлежащая классу “metal”, что также соответствует предсказанию модели ([2]). Оба вышеописанных примера свидетельствуют о высокой эффективности модели. На Рис.3 и Рис.4 представлены примеры правильно классифицированных изображений (класс “cardboard” и “paper” соответственно).

Для подбора оптимального значения количества эпох обучения автор использовал график, исходя из которого следует, что таким значением является 24. Этот вывод следует из того, что на 25 эпохе точность резко упала, а значит - началось переобучение.

(График зависимости точности обучения от количества эпох при 40 эпохах)

(График зависимости точности обучения от количества эпох при 24 эпохах)

Точность(accuracy) на тренировочных данных в конце обучения составляет 99,7%.

Показатель точности на тестовых данных в конце обучения составляет 64%, что является показателем, достаточным для применения в практической сфере.

Четвертый этап

Четвёртым этапом является сравнение получившихся значений с предсказанными.

Для этог

о используется метод predict, позволяющий, передав ему тестовые значения, оценить точность работы модели на них.

(Часть кода, отвечающая за сравнение и оценку точностей (существующей и предсказанной))

Получившееся значение точности совпадает с полученным в процессе обучения параметром.

Одними из параметров для определения точности (accuracy_score) являются тестовые данные(y_test) и предсказания на них(y_pred). Так как данные в y_pred хранятся как тензор TensorFlow, необходимо преобразование в тензор NumPy для соответствия сравниваемых параметров по классу, реализованное с помощью метода argmax.

Параметр axis = 1 свидетельствует о том, что вычисления/движение происходит построчно.

(Изображение, иллюстрирующее действие параметра axis)

Разработка программного кода происходила на языке программирования Pythonв программной оболочке JupyterNotebook, при создании использовались библиотеки Kerasи TensorFlow.

Заключение

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

В будущем планируется апробация проекта с использованием камеры компьютерного зрения.

Данная работа также создает задел для дальнейших исследований и мероприятий по улучшению модели и её применению, а именно:

  1. Применить иные типы нейронных сетей

  2. Создать робота, с установленной камерой компьютерного зрения, способного сортировать мусорные отходы

  3. Добавить новые классы мусорных отходов для расширения возможностей классификации с помощью нейронной сети.

Таким образом, автор не планирует останавливаться на достигнутом и, используя полученные результаты созданной нейронной сети, рассматривает возможность ее апробации на практике путем создания робота – сортировщика и обучающейся, развивающейся нейронной сети, с точностью более 85%.

Учитывая актуальность и остроту вопроса разделения и сортировки мусора, в рамках «зеленой повестки», данная работа, по мнению автора, способна внести свой вклад в практическое решение проблемы сортировки отходов для их вторичной переработки.

Библиографический список

  1. Alisha I, Hafsa Fathima,Yaseen Parvez, Prof. Mohammed Imtiaz. A Novel Framework for Trash Classification Using Deep Transfer Learning, IEEE Access (Tuong Le) - International Journal of Research and Analytical Reviews (IJRAR), 2019 – 3 p.

  2. https://magazine.neftegaz.ru/articles/ekologiya/536780-utilizatsiya-promyshlennykh- otkhodov-v-rossii-i-v-mire-problemy-i-resheniya/

  3. https://netmus.ru/press-center/articles/zavod-po-sortirovke-musora-kak-ustroen-i-rabotaet/

  4. https://numpy.org/doc/stable/reference/generated/numpy.reshape.html

  5. https://ort-tv.ru/polezno-znat/sortirovka-musora-2023-sposoby-problemy-vidy-celi-sovety- dlya-detej-i-vzroslyx/

  6. https://plastinfo.ru/information/articles/741/

  7. https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.LabelEncoder.html

  8. https://stackoverflow.com/questions/45758023/loss-is-equal-to-0-from-the-beginning

  9. https://trends.rbc.ru/trends/green/5d6566149a79476b67a9c20c

  10. https://vc.ru/offline/288722-nevlabs-kak-my-ispolzuem-iskusstvennyy-intellekt-v-sfere-sortirovki-musora

  11. https://www.redbull.com/kz-ru/how-to-reuse-and-recycle

  12. OpenCV: Geometric Transformations of Images

  13. Thung G., Yang M. Classification of Trash for Recyclability Status / Gary Thung, Mindy Yang - StanfordUniversity and Gary Thung, 2016 – 6 p.

  14. Шолле Ф. Глубокое обучение на Python [Текст] / Франсуа Шолле — 2-е. — Санкт-Петербург: Питер, 2023 — 576 c.

Приведены ссылки на источники и названия научных работ, материалы которых изучались во время создания проекта.

План работы над проектом

Указанные даты означают начало выполнения определённой задачи, второе значение, если оно есть, обозначает завершения этого этапа.

Просмотров работы: 190