"Машинное обучение"

Классифицируйте болезни листьев растений с помощью машинного обучения

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

Сельское хозяйство играет очень важную роль в экономическом росте любой страны. Это область, которая сильно влияет на ВВП стран. На сельскохозяйственный сектор приходится около 16% ВВП Индии. На качество и количество выращиваемых культур влияют различные факторы. Из-за разной погоды и местных условий эти растения подвержены различным заболеваниям. И если эти заболевания останутся невыявленными, это может привести к серьезным потерям. В самой Индии около 15–25 процентов урожая гибнут из-за болезней, вредителей, сорняков. Также можно сослаться на инцидент в Джорджии (США) в 2007 году, когда был нанесен убыток в размере около 540 долларов США из-за болезней растений.

ПРИМЕЧАНИЕ: - В этой статье я объясню только методологию, которую я использовал, и полученные результаты. ЗДЕСЬ НЕТ ОБЪЯСНЕНИЙ КОДА !!!. Я дал ссылку на GitHub для кода.

В чем настоящая проблема?

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

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

Предлагаемая методология

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

• Сбор данных

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

• Сегментация

• Выбор классификатора

Коллекция наборов данных

Во-первых, изображения листьев были собраны из таких онлайн-источников, как GitHub, Kaggle. Набор данных состоит из 20 000 изображений, разделенных на 19 различных классов. Набор данных состоит как из здоровых, так и из инфицированных листьев, которые охватывают такие болезни, как черная гниль, ржавчина, бактериальные пятна, ранняя гниль, фитофтороз различных культур, таких как яблоки, картофель, помидоры и т. Д.

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

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

Сегментация

На этом этапе выполняется сегментация изображений, чтобы отделить листья от фона. Сегментация выполняется с использованием кластеризации K-средних с двумя центрами кластеров, один для фона и один для переднего плана. Кластеризация K-средних - это метод обучения без учителя, который используется для разделения точек данных в заранее определенном количестве (k) кластеров или групп на основе их сходства.

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

Выбор классификатора

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

Мы решили начать с алгоритмов низкой сложности и увеличения уровня сложности, чтобы повысить точность модели. Мы выбрали четыре классификатора, а именно: логистическая регрессия, KNN, SVM, и CNN. Я не буду объяснять, как работают эти алгоритмы.

ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ

После использования методов предварительной обработки изображений вместе с k означает кластеризацию и сравнение различных доступных классификаторов. Логистическая регрессия работает довольно хорошо с учетом количества классов и смогла дать точность 66,4%. KNN занимает довольно много времени, чтобы делать прогнозы из-за больших вычислений, и дает точность только 54,5%. SVM также плохо работает и обеспечивает точность 53,4%. CNN превосходит все другие и дает очень хорошие результаты, так как его оценка точности составила 98%.

Уточнение модели CNN

  • Набор данных был увеличен до 52 000 изображений, чтобы охватить больше болезней листьев растений.
  • В связи с увеличением набора данных теперь есть 38 классов для классификации.
  • Модель CNN должна быть достаточно хорошей, чтобы фиксировать все сложные шаблоны. Сверточные слои увеличены до 6, единицы в последних плотных слоях теперь 38

Разработка графического интерфейса

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

На снимке экрана ниже показан домашний экран графического интерфейса, который содержит все кнопки, такие как «Выбрать изображение», «Предварительно обработать изображение» и «Прогнозирование».

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

И, наконец, при нажатии на кнопку «Прогнозирование» отображается прогнозируемое заболевание для данного изображения растения.

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

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

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

Спасибо за ваше драгоценное время😊. Полный код проекта находится на GitHub.

Также ознакомьтесь с моей статьей Автоматический модератор для вопросов StackOverflow