Skip to content

Тестовое задание 1 на вакансию CV Engineer в компанию "Русагро_технологии".

Notifications You must be signed in to change notification settings

medphisiker/jou_mask_rcnn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JOU_Mask_RCNN

Тестовое задание 1 на вакансию CV Engineer в компанию "Русагро_технологии".

Описание задачи

В агропроме вам предстоит работать с грязными данными в самых разных смыслах. В папке images несколько фото резервуаров с ЖОУ (жидкие органические удобрения). Попробуйте предложить решение и реализовать его в коде, позволяющее определять линию уровня поверхности жидкости. Это могло бы помочь в задаче определения объема ЖОУ в резервуаре. Мы также оценим вашу критику и предложения по подходу к решению данной задачи, выходящие за рамки вашего времени на решение домашнего кейса.

Решение задачи

Я остановился на сегментации поверхности ЖОУ и стен резервуара для ЖОУ с помощью нейронной сети Mask RCNN Resnet50. Вычислении контуров ограничивающих их маски сверху. Далее по каждому ограничивающему маски сверху контуру вычисляется медиана всех значений y-координаты и мы получаем границу определяющую уровень ЖОУ (y_jou) и верхнюю границу резервуара для ЖОУ (y_res). Уровень ЖОУ относительно стенки резервуара (h_jou) вычисляется как

$h_{jou} = y_{res} - y_{jou}$

Ниже показан пример того как это выглядит на картинке из тестовой выборки:

title

Оценки обученной модели на тестовом датасете по метрикам MS COCO

рассчитаем метрику AP, detectron2 имеет ее встроенную поддержку через COCO API.

по рамкам получаем:

category AP category AP
JOU 98.218 block 86.735

по маскам получаем:

category AP category AP
JOU 98.317 block 90.000

Поверхность ЖОУ и по рамкам и по маскам распознается отлично! Поверхность стенок резервуара, уже хуже. Примечательно, что по маскам все же лучше.

Чтож, отличный результат для обучающей выборки, состоящей из всего 5 картинок =) (правда еще Flip'нутых, что увеличивает их до 15-ти).

Правда и test состоит тоже всего из 4-х. (правда еще Flip'нутых, что увеличивает их до 12-ти).

Анализ оценки уровня ЖОУ относительно стенки резервуара ($h_{res}$) с помощью обработки верхних контуров от масок для тесовых картинок

Посмотрим на верхние границы полученные с помощью обработки верхних контуров от масок "vis_folder/val/hjou_by_mask/3.jpg"

title

Получаем точную границу определяющую уровень ЖОУ ($y_{jou}$) (синий) и верхнюю границу резервуара для ЖОУ ($y_{res}$) (зеленый). И корректно оцениваем уровень ЖОУ относительно стенки резервуара ($h_{jou}$)(красный).

Посмотрим на верхние границы полученные с помощью обработки верхних контуров от масок "vis_folder/val/hjou_by_mask/6.jpg"

title

Получаем точную границу определяющую уровень ЖОУ ($y_{jou}$) (синий) и верхнюю границу резервуара для ЖОУ ($y_{res}$) (зеленый). И корректно оцениваем уровень ЖОУ относительно стенки резервуара ($h_{jou}$)(красный).

Посмотрим на верхние границы полученные с помощью обработки верхних контуров от масок "vis_folder/val/hjou_by_mask/7.jpg"

Здесь резервуар наклонен в кадре, мы изначально ищем границы резервуара предполагая, что он расположен горизонтально. Благодаря обработке верхнего контура маски границы стали точнее. Но наша обработка контура все равно ищет горизонтальную прямую, так как является просто медианой всех y-координат, содержащихся в верхних контурах. Нужна обработка, учитывающая потенциальный наклон. Например, мы могли бы попробовать линейную регрессию по x, y-координатам содержащихся в верхних контурах. И тогда мы бы уже получали прямую с наклоном (не успел проверить).

title

Итог: обработка верхних контуров масок точно границу определяющую уровень ЖОУ ($y_{jou}$) (синий) и верхнюю границу резервуара для ЖОУ ($y_{res}$) (зеленый). И мы корректно оцениваем уровень ЖОУ относительно стенки резервуара ($h_{jou}$)(красный) в случае горизонтально расположенного резервуара на фото.

Для фото на которых резервуар расположен под наклоном можно применить более сложную обработку верхнего контура маски. Например, мы могли бы попробовать линейную регрессию по x, y-координатам содержащихся в верхних контурах. И тогда мы бы уже получали прямую с наклоном (не успел проверить).

About

Тестовое задание 1 на вакансию CV Engineer в компанию "Русагро_технологии".

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published