Система обнаружения болезней растений с помощью ИИ
Фитофтора на томатах при правильных погодных условиях уничтожает 80% урожая за 10 дней. Проблема не в том, что болезнь неизлечима — проблема в том, что к моменту, когда агроном визуально замечает симптомы, поражение уже распространилось на 15–20% листовой поверхности. Системы раннего обнаружения на основе CV работают с порогом в 3–5% поражённой площади.
Главная техническая сложность: межклассовая схожесть симптомов
Это самое болезненное место всех проектов по детекции болезней. Хлороз от дефицита железа и ранняя стадия мучнистой росы на листе огурца визуально практически идентичны — оба дают светлые пятна с расплывчатыми краями. Модель, обученная только по цвету пятна, систематически путает их.
Как решаем: переходим с RGB к мультипризнаковому анализу:
- Текстурные признаки пятна (LBP, Haralick features через
skimage.feature) - Геометрия поражения: форма, соотношение периметра к площади
- Паттерн распространения по листу (краевое vs центральное vs диффузное)
- Стадия вегетации как контекст (молодые листья дают другие паттерны)
Для этого хорошо работает dual-stream архитектура: один поток обрабатывает RGB-патч через EfficientNet, второй — вычисленные текстурные карты через лёгкий MobileNetV3. Выходные эмбеддинги конкатенируются перед финальным классификационным головком. На датасете PlantVillage + собственной разметке по 14 культурам такая архитектура даёт top-1 accuracy 0.93 против 0.87 у однопотокового EfficientNet-B4.
Детекция vs классификация: что выбрать
Для полевых условий нужна детекция, а не просто классификация патча. YOLOv8 или RT-DETR выдают bounding box с классом болезни и confidence в реальном времени — критично для мобильного приложения, которым агроном пользуется прямо в поле.
Из практики: YOLOv8m на датасете 12 000 аннотированных снимков листьев (8 болезней, 4 культуры) после fine-tuning показал mAP50 = 0.81. Проблемные классы — ранняя пятнистость и альтернариоз (IoU < 0.5 на 23% предсказаний) из-за перекрывающихся поражений. Решение: instance segmentation вместо bbox — Mask R-CNN или YOLOv8-seg позволяет разделять перекрывающиеся очаги.
| Модель | mAP50 | mAP50-95 | FPS (мобильный GPU) |
|---|---|---|---|
| YOLOv8n | 0.73 | 0.51 | 42 |
| YOLOv8m | 0.81 | 0.58 | 18 |
| RT-DETR-L | 0.84 | 0.62 | 12 |
| YOLOv8m-seg | 0.79 | 0.57 | 14 |
Deployment в полевых условиях
Два сценария с разными требованиями:
Мобильное приложение для агронома. Модель — ONNX + ONNX Runtime Mobile на Android/iOS. YOLOv8n INT8 работает на Snapdragon 8 Gen 2 с задержкой 45–70 ms, что вполне приемлемо для съёмки с руки. Приложение работает offline, результаты синхронизируются при подключении.
Система на дроне. NVIDIA Jetson Orin NX (16 GB) + TensorRT engine. Инференс в реальном времени при съёмке 4K 30 fps, детекция на каждом 5-м кадре, координаты поражённых точек пишутся в GeoJSON.
Данные: разметка и расширение датасета
Публичных размеченных датасетов по болезням растений достаточно для старта (PlantVillage — 87 000 изображений, 38 классов болезней). Однако для конкретных культур и регионов нужна дообучение на собственных данных — болезни выглядят по-разному в разных климатических зонах и на разных сортах.
Ускоряем разметку через active learning: модель после первичного обучения выбирает наиболее «неуверенные» примеры (entropy sampling), агроном размечает только их. На практике это сокращает объём ручной разметки на 40–60%.
Процесс
- Аудит существующих данных, определение перечня болезней и культур
- Дополнительный сбор полевых данных при необходимости
- Разметка через Label Studio, верификация агрономом
- Training с transfer learning от COCO/ImageNet весов
- Валидация в полевых условиях, итеративная доработка
- Deployment в мобильное приложение или на edge-устройство
- Мониторинг дрейфа модели, переобучение при смене сезона
Сроки
Система детекции для одной культуры и 5–8 болезней: 6–10 недель при наличии размеченных данных. Многокультурная платформа с мобильным приложением и серверным компонентом: 3–4 месяца.







