Это продолжение моего обзора по хакатонам 2020 года - первая часть тут

AGRO HACK

Линк на хакатон 

Недавно мы с друзьями поучаствовали в хакатоне Агрокод, прошедший в течении выходных с 11 по 13 декабря. Хакатон проводил Россельхозбанк. В хакатоне мы участвовали командой из 5 человек.

Хакатон включал в себя несколько различных заданий-треков. Среди заданий были следующие:

·       Разработка приложения для повышения урожайности космической клубники

·       Рекомендательный сервис по размещению культур на сельскохозяйственных полях

·       Определение заболоченных и переувлажненных участков сельскохозяйственных угодий

·       Нейросеть для обнаружения заболеваний листьев яблони по фотографии

·       Разработка полетного задания для группировки сельскохозяйственных дронов

Мы выбрали задание ‘Нейросеть для обнаружения заболеваний листьев яблони по фотографии’.

На этот хакатон мы решили собрать команду. Основная причина в том, что кроме модели с машинным обучением надо было создать веб интерфейс. Для этого понадобилось больше специалистов. Изначально нас было всего два человека Владимир @vovaekb90 и я. Мы специалисты только в машинном обучении. Поэтому мы пригласили в команду еще двух человек Никиту @NickTheBuilder  и Илью @Sopherdjin, они отвечали за реализацию веба фронт и бекенда. Критерий оценки был 80% за точность модели и 20% за веб интерфейс который использовал эту модель. На совещании команды мы решили добавить специалистов по машинному обучению и я пригласил в команду Антона @med_phisiker . Мы назвали команду Berserkers AI и приняли участие в хакатоне. Нам понравилась организация этого мероприятия. Перед началом хакатона был общий стрим в зуме с ответами на вопросы по задаче и по данным. Это сильно помогло нам на начальном этапе работы. Оказалось организаторы трека упростили задачу и нас ждала бинарная классификация определения больного или здорового дерева по фотографии листа. В первый вечер Антон предложил нам модель на Pytorch для классификации фотографий.

Для улучшения точности модели мы использовали ступенчатое уменьшение лернинг рейта в процессе обучения.

Мы перепробовали 5-7 моделей пред обученных сетей и лучшую точность нам дал Efficient Net.

Изначально нам дали размеченный датасет состоящий из 2к картинок.Нам пришла идея расширить датасет. Путем добавления  данных с Kaggle и других датасетов использованных в научных работах со схожей тематикой. Теоретически это должно было улучшить наш результат. Изначально это казалось идеальным решением,но при обсуждении с командой мы вспомнили что это может запросто ухудшить наш результат. Тестовый дататест был  у организаторов. Нам дали только сабсет этих данных и он отражал генеральную совокупность всех данных. Был слишком большой риск что модель будет учиться на данных с другим распределением.  Мы пробовали добавлять 5%,10%,15% новых данных, но это не давало нам прироста. Результат становился даже немного хуже. Поэтому мы решили больше работать с аугментацией данных. 

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

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

Конкуренция была очень серьезная. На хакатон по нашему треку было отобрано 10 команд, которые показали отличные результаты. Вот списки команд.

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

Всей нашей команде понравился этот хакатон интересной задачей и великолепной организацией. Продолжение следует…