Как извлечь объект из изображения? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть набор данных с человеком, носящим HMD.Я хочу создать маску для HMD.Вот пример:

enter image description here

Мне нужно создать маску для гарнитуры FOVE.Я пробовал модели семантической сегментации.Они способны создать силуэт человека в целом, но не HMD отдельно.Это имеет смысл, поскольку FOVE не является классом в их модели.Я не могу переучить модель на примерах FOVE, так как у меня нет данных маски для обучения.Поэтому я обратился к методам обработки изображений.Я попробовал подход кластеризации для сегментации и попробовал алгоритм MeanShift, алгоритм KMeans, пороговое значение изображений и алгоритм graphcut.

Вот проблемы, с которыми я столкнулся при каждом:

  1. Кластеризация среднего сдвига: Создает много классов (> 1000).Мне нужно иметь возможность извлекать класс FOVE без ручного вмешательства, так как мне нужно обрабатывать много данных (> 2000 изображений).Я сгладил свое входное изображение, которое уменьшило количество классов, но также создало отдельные классы в FOVE HMD, вызванные другим градиентом светимости.Кроме того, многие изображения имеют похожий фон, как в примере.Среднее смещение в этих случаях путается.

MeanShift Output

KMeans: Низкое качество продукции.Это запутано и неточно.Данный вывод для k = 10.

KMeans Output

Определение порога изображения: он может создать хороший контур Fove, но я не знаю, как извлечь координаты HMD, используя это.Выход с адаптивным пороговым значением.

Adaptive Thresholding output

GrabCut: плохая производительность и требует ручного вмешательства.Редактировать: алгоритм GrabCut должен иметь в качестве входных данных ограничивающую рамку, которая находится очень близко к лицу.С 2000 изображений, которые нуждаются в этой предварительной обработке, я не могу сделать это вручную.С общей и большей ограничительной рамкой точность уменьшается.Я хотел бы попробовать какой-то метод, который не требует ручного ввода, если это возможно, сначала.

GrabCut Output

Пожалуйста, предложите, что я могу сделать, чтобы создать маску для HMD.

РЕДАКТИРОВАТЬ: Вот что я использую сейчас,Самая неприятная часть была фоном, который в моем наборе данных иногда был лишь на несколько значений менее белым, чем FOVE, а иногда дико отличался.Я обучил семантической сети сегментации, чтобы обнаружить и извлечь человека из изображения.Для справки: , и , - некоторые из хороших работ, выполненных по этому вопросу.После этого я использовал алгоритм среднего смещения, чтобы получить кластеры, и выполнил настройку порога цвета на изображении.Это дало мне точность ~ 90%, а остальная часть изображений нуждалась в настройке (в основном, с помощью цветового порога).

Mask from semantic segmentation

Final Mask being created

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...