Содержание:

1. Введение

2 Бизнес-проблема

3 Сопоставление с проблемой ML / DL

4 EDA

5 Описание моделей

6 Сглаживание этикеток

7 Результаты и сравнения

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

9 профилей

10 источников

1. Введение

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

2. Деловая проблема

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

3. Сопоставление с проблемой ОД / ДО

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

4.EDA

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

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

Теперь давайте построим график и посмотрим, как выглядят изображения для разных классов,

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

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

Ниже приведены изображения, созданные с использованием комбинации трех различных дополнений, то есть горизонтального и вертикального переворота и поворота с диапазоном, равным 20.

5. Объяснение моделей

5а. Предварительно обученные модели

Последние достижения в области компьютерного зрения дают нам возможность инициализировать веса нашей модели с помощью весов современной модели (SOTA). Эта концепция повторного использования весов известна как трансферное обучение. Эти веса получены путем обучения глубоких моделей CNN на больших объемах данных. Одним из таких наборов данных, который предоставляет миллионы изображений по 1000 классам, является ImageNet. Модели, которые отлично показали себя в этом наборе данных, получили статус моделей Start of the Art (SOTA). Несколько таких моделей, которые мы использовали в нашей задаче, - это VGG16, ResNet50 и EfficientNetB0.

Зачем передавать обучение?

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

Использование предварительно натренированных весов:

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

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

Используя только архитектуру:

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

Выводы:

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

Интерпретация:

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

С увеличением размера партии колебания в точности проверки возрастают. Когда размер партии был установлен на 8, точность проверки увеличивалась медленно, но последовательно. Когда размер партии увеличился до 16 и 32, точность начала сильно колебаться. Одно из возможных объяснений может заключаться в том, что пакеты меньшего размера вызывают шум, тем самым вызывая эффект регуляризации и уменьшая ошибку обобщения. Недостатком этого подхода является то, что время обучения увеличивается с той же скоростью, с которой уменьшается размер пакета.

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

5b. Собственная модель

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

Изначально без каких-либо регуляризаций модель состояла из нескольких сверток и максимальных уровней объединения. Модель сильно переоснащалась, т.е. точность обучения достигала 90%, а точность проверки составляла около 55%. Итак, идея заключалась в том, «если модель способна хорошо работать с данными поездов, ей есть чему поучиться. Так что, если мы упорядочим, это даст хорошие результаты и при проверке данных ».

Итак, мы начали вносить изменения / дополнения в модель. Изменения в архитектуре следующие:

  • Добавлены слои пакетной нормализации после каждой свертки и максимальные уровни объединения, поскольку это ускоряет процесс обучения.
  • Как обсуждалось в разделе EDA, наша модель должна изучать сложные детали изображения, поэтому мы изменили входной размер модели с 224X224 на 512X512.
  • Только методы увеличения горизонтального и вертикального переворота дали лучшие результаты в наших экспериментах.
  • Чтобы уменьшить чрезмерную подгонку, мы добавили отсевы с различными диапазонами (0,3, 0,2) на каждом этапе.
  • За исключением первой части блока свертки (поскольку он давал ошибку исчерпания ресурсов из-за формы матрицы весов), мы использовали два слоя свертки в каждом блоке, чтобы помочь модели узнать больше.
  • После сглаживания объединенного вывода мы добавили два плотных (полностью связанных) слоя с выпадениями и выходной слой в конце.
  • Мы использовали метод сглаживания меток для лучшего обобщения, который будет обсуждаться в следующем разделе.

Со всеми этими дополнительными модификациями мы смогли повысить точность проверки с 55% до 86%.

Примечание. Код можно найти в записной книжке GitHub в конце

6. Сглаживание меток

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

Как это компенсирует эффект неправильной маркировки?

Естественно, когда достоверность метки меньше 1, потери (в основном перекрестная энтропия), понесенные из-за этого образца, будут меньше по сравнению с образцом, имеющим 1 в качестве значения достоверности.

7. Результаты и сравнения:

Предварительно обученные модели:

В качестве предварительно обученных моделей использовались модели VGG16, ResNet50 и EfficientNetB0 с различными комбинациями размера пакета, обучаемыми (False и True) и вариантами функций потерь (категориальные и разреженные категориальные).

Специальная модель:

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

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

8. Работа на будущее

  • Изучите еще несколько продвинутых техник аугментации, таких как катмикс
  • Попробуйте и поэкспериментируйте с функциями потерь, такими как двусторонние логистические потери.
  • Посмотрите, что предлагает Test Time Augmentation

9. Профили

LinkedIn:

GitHub:

Https://github.com/learnmlwithuz/Cassava-Leaf-Disease

10. Ссылки

  1. Мягкое введение в перенос обучения для глубокого обучения, Джейсон Браунли
  2. Что такое сглаживание этикеток Ваншун Вонг
  3. Набор данных классификации листьев маниоки