Методы машинного обучения в задаче обнаружения и классификации болезней листьев томатов
В проекте используется Plant Village Dataset, содержащий 6000 отсегментированных изображений больных и здоровых листьев томатов, сбалансированно разбитый на 6 категорий:
Характеристики изображений:
- Разрешение: 256х256
- Глубина цвета: 8bit
- Формат хранения: .jpeg
- Цветовой профиль: RGB
1. Удаление черного фона. Наличие большой черной области сильно искажает сатистические и тектурные признаки изображения. Обнаружено, что на края листьев и прелегающей области находится много околонулевых писелей - вероятно это эффект предварительной сегментации. Поэтому фоновыми считаются пиксели с интесивностью, меньше 10. Данный порог подобран эмпирически.
2. Фильтрация выборки здоровых изображений. Обнаружено, что выборка здоровых листьев состоит из двух типов изображений – гладкие, равномерно освещенные листья и листья с фактурой и тенью. Для дальнейшего исследования решено оставить те изображения, что ближе к реальности – с фактурой и тенью. Отсеивая все изображения, чьи стандартные отклонения меньше 30, будет обрезано распределение по данному признаку. Чтобы этого не допустить добавлена проверка на однородность: HOM > 0.4. Все пороги отсеивания подобраны из вида распределений соответствующего признака.В работе рассатиривает два "источника" признаков:
1. RED канал RGB изображения. Пигмент листьев растений, хлорофилл, сильно поглощает видимый свет (от 0,4 до 0,7 мкм) для использования в фотосинтезе. При заболевании образование хлорофилла в листьях нарушается, что приводит к увеличению отражения данных длин волн. Это выражается более явно в красном канале. Поэтому возникает предположение, что признаков, извлеченных из красного канала изображения, окажется достаточно, чтобы с успехом диагностировать заболевание.
Все признаки извлекались без учета фоновых пикселей
Для обучения и тестирования классификаторов из изображений извлекались следующие группы признаков:
- STAT. Статистические характеристики интесивности пикселей изображения:
- HIST. Бины квантованной гостограммы изображений:
- GLCM. Текстурные признаки изображений на базе матрицы GLCM: Для вычисления GLCM необходимо задать два параметра: d - расстояние межде пикселями и φ - направление от первого пикселя ко второму. Для выбора оптимальных параметров d и φ, способных наилучшим образом отделять классы, использовалась информация о косинусном расстоянии между средними векторами глобальных текстурных признаков. Чем меньше угол, тем выше сходство. Для каждого класса вычислен средний вектор глобальных текстурных признаков и найдено среднее значение косинуса с векторами остальных классов при заданной паре параметров (d, φ). В качестве лучшего расстояния можно выделить d=4. Признаки, рассчитанные при таком значении d, имеют наименьшее косинусное сходство, значит более разнообразно описывают классы. Относительно параметра φ сложно выделить лучшее значение. Поэтому предлагается рассматривать вектора признаков разной длинны:
- short - GLCM признаки для d={4} усредненное по φ={0, π/4, π/2, 3π/4} (всего 5 признаков)
- middle - GLCM признаки для d={4}, φ={0, π/4, π/2, 3π/4} (всего 5 * 4 признака)
- long - GLCM признаки для d={1, 4, 8}, φ={0, π/4, π/2, 3π/4} (всего 5 * 3 * 4 признака)
- ALL. Полный вектор признаков {STAT,HIST,GLCM}
Все признаки извлекались без учета фоновых пикселей
Поскольку признаки заболевания растения проявляются в разных областях листа, то для того, чтобы обеспечить устойчивость показаний признаков к пространственному сдвигу, помимо глобальных признаков, будут рассматриваться и локальные признаки.
- global - признаки, извлеченные неким оператором над всем изображением сразу.
- local - признаки, извлеченные под маской инструмента размером 17х17 пикселей.
Алгоритм извлечения локальных призаков:
Сравнивались возможности следующих классификаторов:
1. LDF Линейный дискриминант Фишера
2. DT Дерево решений
3. RF Случайный лес
4. SVM Мультиклассовый метод опорных векторов
5. KNN К-ближайших соседей
6. SLP Одноуровневый персептрон
7. MDT Предложен новый алгоритм My Decision Tree для детекции заболевания, работающий только на основе вида распределения тренировочной выборки. Алгоритм работы MDT:
Оценка параметров моделей проводилась с помощью поиска по сетке с применение kfold валидации (k=5). То есть для каждой конкретной модели брались возможные значения параметров, и в сетке параметров каждая их комбинация тестировалась k-fold валидацией. В конце выбирался набор параметров, давший наилучший результат при валидации. Валидация проводилась на полном векторе глобальных признаков ALL.
- Serialize.py содержит скрипт для сериализации ключевой информации об изображениях в json файл, содержащий: полный путь к изображениям и метку класса.
- Dataset.py содержит операции по доступу к изображениям базы данных.
- Features.py содержит скрипт для извлечения и сохранения признаков изображений.
- Crossval.py содержит скрипт для выполнения кросс-валидации и сохранения классификаторов с лучшим набором параметров.
- Evaluate.py содержит скрипт для тестирования классификаторов.
- Utils.py включает разные функции используемые в других скриптах
- Inference.py содержит скрипт для предсказания класса по изображению.
- Пакет models содержит модули, реализующие следующие классы:
- features.py – содержит класс Features для извлечения признаков из изображений.
- slp.py – содержит класс SLP, реализующий модель одноуровневого персептрона.
- healthyPlant.py – содержит класс HealthyPlant, который реализует сквозной конвейер для классификации болезней растений, от извлечения признаков, до предсказания от классификатора.
- pdt.py - содержит класс MDT, реализующий модель собственного приоритетного дерева решений
Результаты подробно описаны в отчете за 2й семестр. Реалицация в вектке master.
Удаление лишних признаков см в отчете за 3й семестр. Реалицация в вектке pca.