Авторы: Банси Сяо, Цзусуань Хуай, Даксин Ню

Мотивация

Маниока, один из крупнейших поставщиков углеводов в Африке, имеет важное значение для африканского общества. Благодаря своей способности выживать в суровых условиях, эта культура широко выращивается мелкими фермерскими хозяйствами. Одной из основных причин плохой урожайности является болезнь листьев маниоки. Текущий метод, который фермеры используют для решения этой проблемы, заключается в найме экспертов для осмотра растений. Но это достаточно затратно и неэффективно. Чтобы решить такую ​​проблему, мы стремимся использовать методы машинного обучения, чтобы сделать процесс идентификации более эффективным.

Этот проект размещен на Kaggle, а данные предоставлены лабораторией искусственного интеллекта Университета Макерере. Ссылка на этот вызов Kaggle прикреплена ниже:



Задачи и цели

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

Исследовательский анализ данных

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

Мы импортировали файлы и создали фрейм данных, содержащий все обучающие данные. Все обучающие выборки пронумерованы от 0 до 4, каждая из которых указывает одну категорию для нашей задачи классификации. 0 означает бактериальный ожог маниоки (CBB), 1 указывает на болезнь коричневых полос маниоки (CBSD), 2 указывает на зеленую пятнистость маниоки (CGM), 3 означает мозаичную болезнь маниоки (CMD), а 4 означает, что лист маниоки здоров.

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

Из приведенной выше круговой диаграммы, созданной с использованием обучающих данных, мы заметили, что более половины обучающих выборок имеют мозаичную болезнь маниоки (CMD). Это может привести к тому, что модель с большей вероятностью предскажет данное изображение как мозаичную болезнь маниоки (CMD), если смещение будет проигнорировано. За исключением мозаичной болезни маниоки (CMD), остальные четыре категории распределены довольно равномерно. Следовательно, у нас может не быть необходимости уделять дополнительное внимание другим категориям.

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

Мы также проверили размер входных изображений. Это важно, потому что многие из существующих сверточных моделей требуют, чтобы входные данные имели одинаковую размерность. Если формы входных данных все разные, это потенциально может ограничить наш выбор моделей. К счастью, все данные обучающие выборки имеют одинаковый размер 800 на 600, что открывает широкий выбор моделей.

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

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

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

Базовая модель — VGG16

Мы рассмотрели множество потенциальных базовых моделей и в итоге решили использовать VGG16 в качестве базовой модели.

VGG16 — глубокая сверточная нейронная сеть. Он строится из пяти «блоков». Первые два блока состоят из двух сверточных слоев и слоя объединения. Остальные три блока содержат по три сверточных слоя и слой объединения. Эти пять блоков составляют модель VGG16. Эта хорошо сконструированная модель действительно хорошо справлялась с задачами распознавания изображений. Он достиг более чем 92,7% точности теста Top-5 в ImageNet. Поэтому мы считаем, что эта модель станет идеальной отправной точкой для нашего проекта.

Для нашей модели мы импортировали VGG16 в качестве базовой модели и в конце добавили три полносвязных слоя. Ниже приведена ячейка кода для нашей базовой модели.

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

Оранжевая линия указывает на точность обучения, а синяя линия — на точность тестирования. Точность обучения росла по ходу, но в самом конце точность тестирования немного снижалась. В целом, наша базовая модель показала точность тестирования около 70%.

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

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



Мы также загрузили нашу базовую модель в Kaggle. Модель получила точность 0,6312. Ссылка на нашу заявку прикреплена ниже. Мы продолжим работать над этим и, надеюсь, повысим точность тестового набора Kaggle.



Подгонка модели — ResNet50

Чтобы еще больше повысить производительность модели, мы попробовали различные модели, включая ResNet, Inception, MobileNet, семейство VGG. Мы обнаружили, что ResNet работает лучше всех. ResNet впервые представили Kaiming, Xiangyu, Shaoqing и Jian в 2015 году с целью решения проблемы глубины в фреймворках глубокого обучения. Он соответствует остаточному отображению, чтобы снизить потерю информации в процессе обучения.

Детали тренировки следующие:
Исходное изображение: 336 x 336 (3 канала)
Изображения тренировки: 18721
Проверочные изображения: 2676
Процесс дополнения: (случайное отражение, произвольное вращение, произвольное кадрирование, случайная высота, случайная ширина, случайный контраст, произвольное масштабирование, изменение масштаба)
Вес: Инициализирован “ImageNet”
Потери: Категориальная перекрестная энтропия со сглаженной маркировкой 0,05
Оптимизатор: Адам
Скорость обучения: 1e-5
Эпохи обучения: 30
Эпохи тонкой настройки: 20

И точность обучения, и точность проверки достигают 0,85 или выше:

Кроме того, мы включаем тренировочные потери:

Окончательная оценка на Kaggle достигает 0,858, превосходя последнюю разработанную нами модель.

Примерка модели — VGG19

Обученная нами модель VGG19 также достигла точности проверки 0,87. Платформа решает проблему глубины сетей, добавляя очень маленькие фильтры (размер 3 на 3 в приложении), что позволяет увеличить количество слоев до 16–19. Во время обучения мы установили размер партии на 32, размер входного изображения после увеличения до 336 на 336 на 3. Детали обучения перечислены ниже:

Исходное изображение: 336 x 336 (3 канала)
Изображения поезда: 18721
Проверочные изображения: 2676
Процесс дополнения: (случайное отражение, произвольное вращение, случайное кадрирование, случайная высота, случайная ширина, случайный контраст, произвольное масштабирование, изменение масштаба)
Вес: Инициализирован «ImageNet»
Потери: Категориальная перекрестная энтропия со сглаженной маркировкой 0,02
Оптимизатор: Адам
Скорость обучения: 1e-5
Эпохи обучения: 20
Эпохи точной настройки: 10

Полученные кривые обучения:

Однако стоит отметить, что модель VGG занимает самое большое время обучения на эпоху среди всех разработанных нами моделей — это довольно трудоемкая модель, но с удовлетворительной производительностью.

Подбор модели — MobileNet

Наконец, мы разработали модель MobileNetV3Large, которая изучает оптимальную сетевую архитектуру для конечного набора данных с помощью AutoML; Кроме того, за счет включения блока «сжатие-возбуждение» в базовую архитектуру архитектура становится более надежной. Мы раскрываем детали обучения следующим образом:

Исходное изображение: 224 x 224 (3 канала)
Изображения поезда: 18721
Проверочные изображения: 2676
Процесс дополнения: (случайное отражение, произвольное вращение, случайное кадрирование, случайная высота, случайная ширина, случайный контраст, произвольное масштабирование, изменение масштаба)
Вес: Инициализирован «ImageNet»
Потери: Категориальная перекрестная энтропия со сглаженной маркировкой 0,05
Оптимизатор: Адам
Скорость обучения: 1e-5
Эпохи изучения: 20
Эпохи точной настройки: 60

Потери при валидации, а также кривые точности:

Мы обнаружили, что даже после 80 периодов обучения точность обучения и точность проверки все еще постепенно растут, что позволяет предположить, что потребность модели в дальнейшем обучении дает лучшие результаты. В конце концов, мы остановили модель на отметке 80 эпох, окончательная точность проверки достигла 0,84.

Комбинированные модели

Чтобы сделать модель более устойчивой к различным типам изображений, мы попытались разработать ансамблевую модель, которая состоит из 3 различных сред глубокого обучения, и все 3 модели обучения достигают точности проверки 0,85 или даже выше.

Выбраны 3 модели: MobileNetV3Large (точность проверки 0,84), VGG19 (точность проверки 0,87) и ResNet50 (точность проверки 0,88). Получив изображение из тестового набора, просто подключите его к 3 обученным классификаторам, что приведет к 3 различным прогнозирующим вероятностным векторам. Проходя их через нормализованный уровень внимания, рассчитанный по формуле:

«acc_k» в приведенной выше формуле — это точность проверки k-й подмодели (одной из MobileNet, VGG и ResNet). Благодаря включению этого механизма «голосования» модель еще больше укрепляется.

Однако по мере того, как мы углублялись в точность проверки каждого класса, мы с удивлением заметили, что между различными категориями существуют пробелы. Большинство болезней растений, известных как CMD, которые занимают около 60% обучающей выборки, достигают валидационной оценки 0,91, в то время как другие относительно второстепенные классы заявляют только о точности от 0,82 до 0,83.

Результат оценки Kaggle:

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

Перспективы и размышления

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

Обработка данных:

Обработка данных является очень важной частью всего тренировочного процесса. Поскольку нам предоставили всего около 21 тысячи изображений, мы хотели бы увеличить обучающую выборку, чтобы наша модель могла «учиться» большему. Поэтому мы применили увеличение изображения, которое помогает нам получить больший обучающий набор. В конечном итоге это помогло нам повысить точность модели на 5–7 процентов.

Выбор модели:

Это еще одно важное решение, которое нам пришлось принять для этого испытания Kaggle. Чтобы получить наилучшие результаты, мы решили опробовать множество разных моделей и найти ту, которая работает лучше всего. В целом мы протестировали ResNet152V2, ResNet50, Inception, Xception, VGG16, VGG19 и MobileNet. В тройку лучших моделей вошли ResNet50, VGG19 и MobileNet. Точность проверки, которую мы получаем от этих моделей, варьируется от 76% до 87%. Тестирование всех моделей позволяет нам найти лучшую, подходящую для поставленной задачи.

Тонкая настройка:

Это один из важнейших аспектов нашего тренировочного процесса. Тонкая настройка позволяет нам поставить модель на правильный путь и в конечном итоге добиться отличных результатов. Скорость обучения — это один из гиперпараметров, которые мы настраиваем. Наша первоначальная скорость обучения была слишком велика, чтобы алгоритм не смог найти «минимум» для набора данных. Тем не менее, после того как мы настроили обучение на более низкое значение, наша модель смогла сойтись и повысить точность. Поэтому настройка скорости обучения играет важную роль в тонкой настройке. Еще одним важным аспектом является структура модели. Первоначально мы предполагали, что более глубокая модель даст нам лучшую точность. Но это не тот случай. Мы сравнили ResNet152V2 с ResNet50 и обнаружили, что ResNet50 на самом деле дает нам более высокую точность. Поэтому мы использовали ResNet50 в качестве одной из наших последних моделей. Из этого сравнения мы поняли, что большее количество слоев не всегда обеспечивает лучшие результаты.

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

Использованная литература: