Нейросеть определяет вес растений по фото
EORA: прямая речь
В качестве опорного датасета собирались фотографии контрольных культур каждую минуту. Однако для обучения модели использовались данные каждого часа (остальное оставили для валидации). Параллельно каждые три дня взвешивались контрольные растения с идентичных контрольных полок без камер. Таким образом, мы получили данные о том, сколько весили все растения на конкретной фотографии в определенный день роста при заданных параметрах микроклимата, режима питания и освещения.
Следующим шагом мы убрали искажения на фото, иначе сложно сравнивать размеры растений. Подобные искажения называются «бочкообразная» дисторсия (barrel distortion) и возникают из-за специфики линз в используемых фотокамерах. Однако именно такие линзы позволяют захватить в один кадр всю полку ввиду небольших расстояний между рядами с растениями на вертикальной фермы.
Для тренировки модели нейронной сети необходимо было сделать сопоставление между растением на снимке и их массой. Мы решили использовать площадь растений как основной признак. Грубо говоря, чем больше площадь зеленого цвета на фото, тем больше масса растения. Чтобы получить площадь всего яруса достаточно вычислить площадь зеленого цвета на снимке, а для площади одного растения — получить контуры или область этого растения.
На снимках с ранних дней роста отделить растения друг от друга не составило труда. Но на более поздних днях они начинали перекрывать друг друга, поэтому была обучена модель детектирования контуров листьев отдельного куста на снимке. Для этой нейронной сети требовалось разметить фото: «поместить» каждое растение в ограничивающий параллелограмм (bounding box).
В процессе работы мы выделили несколько основных признаков, которые важны и показательны для определения отклонений:
- площадь растения на снимке (получаем с камер)
- количество дней от посева (содержится в iFarm Growtune)
- мощность освещения (содержится в рецептуре выращивания культуры, плюс данные с контроллеров)