Хакатоны Зима 2020
Это продолжение моего обзора по хакатонам 2020 года – первая часть тут
AGRO HACK
Линк на хакатон – https://agro-code.ru/
[ Короткий хакатон прошедший 11.12 – 13.12 ]
Недавно мы с друзьями поучаствовали в хакатоне Агрокод, прошедший в течении выходных с 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 команд, которые показали отличные результаты. Вот списки команд – https://agro-code.ru/results/
При финальном оглашении результатов оказалось что две команды заняли первое место. К сожалению это был не мы. Наша команда заняла 3 место среди 9 команд дошедших до финала. Основным критерием была точность и 5 лидирующих команд выдали fscore 0.99 на тестовой выборке. Окончательный результат определили тысячные доли.
Всей нашей команде понравился этот хакатон интересной задачей и великолепной организацией. Продолжение следует …