Машинное обучение в пчеловодстве

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

Предыстория

Хороший пчеловод как минимум раз в неделю должен проводить осмотр своих пчелиных семей. Этот осмотр проходит в следующем порядке: открывается улей, из улья достаются все рамки с пчелами и пчеловод осматривает каждую из этих рамок.

В среднем улей состоит из 10-20 рамок. На каждой из рамок располагается около 1000-2000 пчел. Пчеловод за достаточно короткое время должен определить количество особей в улье, наличие пчелиной матки, наличие молодого пчелиного расплода и много других нюансов.

Все эти задачи можно решить с помощью машинного зрения.

Требования

Наша команда решила сделать простое мобильное приложение, которое будет помогать пчеловоду в осмотре пчелиной семьи. Мы решили использовать open source движок TensorFlow в качестве базы.

Обучение

Для процесса обучения модели, мы использовали Action Camera, которая снимала видео с разрешением 1280 х 720 и частотой 240 кадров в секунду.

Видео снимали на разных ульях, с неравного расстояния и используя различное освещение. После этого, видео было разделено на картинки, из которых выбрали только изображения самого лучшего качества – чтобы все пчелы были видны достаточно детально. Далее, с помощью LabelImg (https://github.com/tzutalin/labelImg) выделяли области с пчелами на картинке. В результате были получены аннотации в формате XML. После этого, изображения вместе с аннотациями конвертировались в читабельный для Tensorflow формат, называемый ‘tfrecord’, который в дальнейшем использовался для обучения модели.

Результат

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

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