Як впровадити алгоритми в агросферу: рішення, факапи, перспективи
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.
Усім привіт! Я Данило Поляков, керівник напрямку Data Science в українській агрокомпанії Kernel. Хочу поділитися досвідом впровадження алгоритмів комп’ютерного зору для оцінювання густоти посіву на наших полях.
Команда Kernel працює над розробкою та впровадженням програмних продуктів у рамках цифрової трансформації процесів компанії. У напрямку «Агробізнес» проєкти об’єднані в програму Digital Agribusiness. Програмні продукти побудовані на основі концепції data driven agricluture, яка має на меті використання великої за об’ємом та різної за структурою кількості даних (Big Data) для прийняття ефективних та вчасних рішень. Тому технології Data Science якраз і є основою алгоритмів та моделей для забезпечення основної цілі — підвищення показників Агробізнесу за рахунок збереження та збільшення врожайності, зменшення витрат.
Сьогодні наш DS-відділ допомагає вирішити низку завдань бізнесу.
- Прогнозування врожайності. Кількісний прогноз урожайності для конкретного поля обчислюється за допомогою регресійних моделей. Працюємо над кількома культурами.
- Оцінка якості та густоти посівів, підрахунок зерен у початку кукурудзи та насіння в кошику соняшника. Багаторівнева перевірка фотознімків за заданими параметрами із застосуванням CV (computer vision).
- Управління логістичними потоками. Побудова оптимальних маршрутів за схемою «поле — елеватор — порт» для перевезення різних культур транспортом різних типів.
- Інші завдання. Наприклад, визначення фази розвитку рослин на полі за індексом вегетації зі знімків з космосу. Або кластеризація полів за ґрунтовими і кліматичними умовами та аналіз факторів, що впливають на їх продуктивність.
Оцінка густоти посіву: суть завдання
Густота посіву — один із найважливіших факторів, що впливає на врожайність. Цей показник вимірюється в шт/га (сходів на гектар). Густоту доцільно порівнювати з нормою висіву, тобто кількістю (шт/га) висіяного на полі насіння. Якщо норма висіву перевищує густоту посіву на 10%, тоді варто переглянути розрахунок норми висіву в майбутньому. Ймовірно, земля на цьому полі не може забезпечити таку кількість посівного матеріалу корисними речовинами.
Агрономи використовують густоту посіву для оцінювання врожайності на полях. Ми хочемо інтегрувати відповідний показник у наявну регресійну модель. Оцінити якість посіву сьогодні можна за допомогою дронів, а також виміряти таким чином відстань між рослинами, виявити пропуски або двійники при підрахунку сходів. Ці фактори не просто впливають на врожайність, а й допомагають виявити неправильні налаштування сівалок. У результаті можна скоригувати налаштування посівного агрегату або повністю відмовитися від використання сівалок певної моделі.
Як це працювало раніше
Агроном виїжджав у поле з ниткою або вимірювальною рулеткою. Відмірював 10 метрів уздовж рядків і на цій відстані рахував кількість сходів. Потім здійснював орієнтовний підрахунок густоти посіву на гектар. Такий метод має певні недоліки:
- виміри, здійснені на краю поля, не гарантують об’єктивних показників;
- складність оцінити якість посіву та визначення інших метрик, з якими легко справляється алгоритм;
- вплив людського фактору.
Які рішення пропонує ринок і чому вони нам не підходили
Аналогічні рішення пропонують різні agritech-стартапи. Вони мають свої вимоги до співпраці: робити фото посіву винятково їхніми дронами або замовляти ортофотоплан всього поля. Для цього необхідно облетіти земельний масив за всіма напрямками, що, враховуючи площі посівів Kernel, коштуватиме сотні тисяч доларів. Зрештою, це просто фізично неможливо зробити в такий стислий термін —
Ми почали шукати кращі цифрові рішення самотужки. Минулого року спільно з партнерами-аграріями впроваджували моделі в тестовому режимі, у планах на сезон — створення платного доступу до сервісу для всіх охочих.
Який варіант рішення ми обрали
Типове фото нашого поля. Для прикладу взяв фото з бур’янами.
Ми робимо
Нейронна мережа знаходить всі сходи на фото з дрона. Інший алгоритм оцінює загальну площу знімку. Щоб розрахувати густоту сходів (рослин) на гектар, потрібно кількість знайдених рослин поділити на площу фото і помножити на 1000.
Метрики, які ми визначаємо за фото:
- густота сходів;
- середня відстань між сходами;
- відсоток пропусків (якщо прогалина між двома сусідніми рослинами більша на 50%, ніж середня відстань);
- відсоток двійників (якщо між двома сусідніми рослинами надто маленька відстань);
- якість посіву;
- відсоток схожості (відношення густоти посіву до норми висіву);
- відсоток відстаней між сходами, що відрізняється на 10% і менше від середньої відстані.
Отримані результати використовуються для:
- оцінки врожайності поля (найважливіше завдання в агробізнесі, щоб заздалегідь знати, за якими цінами укладати договори та на який обсяг);
- оцінки якості сівалки (якщо якість посіву низька, то потрібно подивитися на налаштування сівалки);
- визначення оптимальних норм висіву для кожного поля (щоб раціоналізувати використання дороговартісного посівного матеріалу).
Вихідні дані, технічні характеристики дронів
Основа парку дронів нашої компанії — DJI Mavic 2 Pro.
Для тренування моделі ми зібрали фото сходів соняшника та кукурудзи на певних фазах розвитку до того моменту, як вони почали перекривати один одного. На фото — кукурудза у відповідних фазах розвитку.
Ми зробили сотні фото наших полів у різних регіонах України на різних типах ґрунту, щоб модель була готова до нових полів у наступних роках. На картах позначені поля, на яких ми тестували модель.
Після збору даних ми почали маркувати відзняті фото, користуючись інструментом CVAT. У середньому процес розмітки одного фото займає 15 хвилин. При цьому фахівцям потрібно було поставити мітку на кожному сході потрібної культури, не відмічаючи бур’яни, а це — від 250 до 800 міток. На фото — приклад маркування.
DS-частина рішення
Для вирішення завдання ми використали архітектуру U-Net, енкодером якої була мережа SE-ResNext50. Ця нейронна мережа бере в обробку фотографію та повертає на виході heatmap такого самого розміру, де кожен піксель описує ймовірність знаходження на ньому рослини. Далі — проганяємо heatmap через алгоритм Laplacian of Gaussian (LoG) для відбору областей пікселей, схожих на сходи. Визначаємо центр і визначаємо мітку як центр знайденого сходу.
Постпроцесінг
Спочатку виділяємо ряди за методикою Hough transform і відфільтровуємо їх, оскільки деякі знайдені ряди алгоритмом можуть дублюватися або перетинатися.
Після опрацювання рядів переходимо до визначення масштабу. Отримуємо його з середньої відстані між центрами рядів у пікселях, яке беззаперечно складає 70 см на полі.
Далі — фільтруємо сходи. Деякі рослини можуть зростати в міжряддях, тобто далеко від сходів свого ряду, і їх не варто враховувати. Кількість сходів у рядах ділимо на площу, щоб отримати густоту посіву.
Для визначення інших метрик переходимо до обробки рядів. По черзі з’єднуємо центри сходів кожного рядка та оцінюємо відстань між ними.
Далі — обчислюємо всі перераховані вище метрики. Отримуємо результат, де зеленим колом обведені сходи, червоним — ті сходи, після яких є пропуски (незаповнене рослиною місце), а чорним — двійники (рослини, що знаходиться надто близько одна до одної). Синім прямокутником позначено межі ряду, за якими сходи уже не враховуються.
Розглянемо детальніше на прикладі. Медіанна відстань для цього фото — 17,36 см. Усе, що довше (1,5 * 17,36=26,04), буде вважатися пропуском, коротше (0,5 * 17,36=8,68) — двійником. Щоправда, існують винятки. Наприклад, пропуск після двійника не вважається проблемним. Ми схиляємося до того, що рослина просто не на своєму місці, тому не враховуємо її як двійник.
Усі результати, які ми отримаємо завдяки фото.
Назва метрики |
Показник |
Опис |
area |
79.85 |
площа фото, м2 |
density |
72963.26 |
густота на фото, шт/га |
num_rows |
15 |
кількість рядів на фото |
median_dist |
17.36 |
медіана відстань між всіма рослинами у рядах, см |
normal_dists_median |
16.85 |
медіана відстань між рослинами у рядах (не враховуючи відстані з пропусками та двійниками), см |
normal_dists_quality |
0.88 |
якість посіву (не враховуючи пропуски та двійник), см |
mean_dist |
19.5 |
середня відстань між всіма рослинами, см |
std |
7.82 |
стандартне відхилення |
first_class_deviation |
0.47 |
відсоток відстаней між сходами, що відрізняється на 10% і менше від середньої відстані |
second_class_deviation |
0.27 |
відсоток відстаней між сходами, що відрізняється на |
third_class_deviation |
0.26 |
відсоток відстаней між сходами, що відрізняється на 20% і більше від середньої відстані |
seeding_quality |
0.75 |
якість посіву по всіх рослинах |
missing_share |
10% |
відсоток пропусків |
twins_share |
0.18% |
відсоток двійників |
Якість рішення та кінцеві результати
Із фото сходів на різних фазах розвитку ми сформували валідаційну вибірку. Фінальною метрикою для оцінки роботи всього пайплайну обрали MAPE (mean avg perc err).
Кількість листків на сходах |
MAPE (для фото полів на цій стадії розвитку) |
2 |
2.4% |
3 |
1.7% |
4 |
1.6% |
Щодо соняшнику — статистика схожа. Модель розгортається у Docker-контейнер і чекає, поки фото не почнуть надходити на API з нашої внутрішньої платформи для агрономів.
Факапи в задачі та з розміткою
Дуже допоміг сервіс W&B, на якому я зберігав усі результати експериментів з навчання моделей. У якийсь момент локальний сервер, на якому увесь час здійснювалися тренування, впав, і ми не змогли відновити дані. Тоді за збереженими результатами тренувань на W&B стало зрозуміло, з якими параметрами (наприклад, тип енкодера, оптимізатор, Learning rate тощо) потрібно запустити навчання, щоб отримати знову найкращу модель.
Ми починали з того, що розміткою одного фото займалася одна людина. Насправді, це — невдале рішення. Краще, аби фото перевіряли мінімум двоє-троє фахівців. Тому після перехресної дорозмітки якість моделі підвищилася на декілька відсотків. Це ще раз довоить, що Data Driven-підхід дає хороші результати.
Часто агрономи надсилали не дуже коректні фото. Наприклад, фото горизонту або селфі з дронів. У таких випадках ми повертали фото назад і просили авторів оцінити всі метрики за наявними світлинами самостійно :)
Іноді траплялися фото, на яких банальні проблеми з посівом або кількість бур’янів значно переважала кількість культурних рослин. Щоб попередити такі ситуації, ми запровадили показник співвідношення рослин у рядах та в міжряддях. При певних значеннях цього співвідношення фото визначалося як неінформативне.
До прикладу, частина фото, де є проблеми з посівом. Червоними мітками позначено те, що виявили фахівці, синіми — те, що знайшла модель. Як бачимо, алгоритм не виділяє бур’яни, але, оскільки частина посівного матеріалу просто розсипалась на полі, це фото також некоректно використовувати для врахування у середню оцінку всього поля.
Висновки за результатами сезону 2021
Минулого року нам вдалося зробити близько 10 000 фото та оцінити 900 полів загальною площею 80 000 га. Проаналізувавши їх, дійшли таких висновків.
- Почистивши фото від неінформативних (наприклад, зроблених занадто високо чи низько), ми зрозуміли, яким саме агрономам потрібно скоригувати свою роботу. Загалом змогли оцінити якість роботи агрономів: хто завищував, а хто занижував свої показники.
- Отримали порівняльні характеристики якості посівів різними моделями сівалок та визначили, які з них потрібно замінити.
- Порівняли такі показники: значення оцінки густоти посіву від агрономів, обчислені звичайним способом; значення оцінки густоти, визначені за допомогою дронів; норму висіву на цьому полі. У результаті — знайшли внутрішні проблеми з даними (іноді норми висіву були нижчими, ніж оцінена двома способами густота посіву).
- Наразі ми не знайшли підтвердження залежності врожайності від густоти, але для таких висновків потрібно накопичувати дані ще кілька років, враховуючи гібриди, ґрунти і погодні умови. Тоді зможемо провести експерименти із рекомендованою нормою посіву.
Наступні кроки
Плануємо запустити платний сервіс для партнерів з агросектору. Фото з інших полів і нові запити аграріїв дозволять розширити кількість цікавих метрик, нові типи ґрунтів та продовжити навчання моделі.
Хочемо також полегшити модель для отримання швидшого результату. Наша компанія має ще вдосталь напрямків для впровадження алгоритмів машинного навчання, тож ми надалі будемо розвивати внутрішню експертизу, створювати унікальні цифрові інструменти для бізнесу та автоматизувати поточні процеси. Йдеться про оцінку якісних показників урожаю, впровадження автоматизованого аналізу відеооглядів полів, поглиблення роботи з супутниковими знімками і картами врожайності для оперативнішого визначення проблем на полі та ухвалення найефективніших рішень.
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів