Я пытаюсь реализовать алгоритм, где дано изображение с несколькими объектами на плоской таблице, желательным является вывод масок сегментации для каждого объекта. В отличие от CNN, целью здесь является обнаружение объектов в незнакомой среде. Каковы лучшие подходы к этой проблеме? Кроме того, есть ли примеры реализации, доступные онлайн?
Изменить: Извините, вопрос, возможно, был немного вводит в заблуждение. Под «незнакомой средой» я подразумевал, что объекты могут быть неизвестны алгоритму. Алгоритм не должен понимать, что это за объект, а должен только обнаруживать объект. Как мне подойти к этой проблеме?
Ответы:
Быстрый ответ
Mean Shift LSH, который является обновлением в известного алгоритма Mean Shift в хорошо известен своей способностью к сегментации изображенияO ( n ) O ( n2)
Некоторые объяснения
Если вы хотите действительно неконтролируемый подход к сегментации изображений, используйте алгоритмы кластеризации . Дело в том, что существует множество алгоритмов с разной временной сложностью и специфичностью . Возьмите самый известный, -Means, он в очень быстрый, но вы должны указать, сколько кластеров вы хотите, а это не то, что вы намереваетесь, исследуя неизвестное изображение без какой-либо информации о количестве фигур. подарки в нем. Более того, даже если вы предполагаете, что знаете, сколько фигур присутствует, мы можем предположить, что фигуры являются случайными, что является еще одной точкой, в которой средние терпят неудачу, потому что это дизайн, чтобы найти эллиптические кластеры, а НЕO ( n ) KК O ( n ) К случайные формы.
Напротив, у нас есть Среднее смещение, которое способно автоматически определять количество кластеров - что полезно, когда вы не знаете, что ищете - со случайными формами .
Конечно , вы заменить параметр -средних на другие средние параметры сдвига , который может быть сложно точно выверенных , но не существует инструмент , который позволит вам сделать магию , если вы не занимаетесь , чтобы сделать магию.КК K
Советы по кластеризации сегментации изображений
Преобразуйте свое цветовое пространство из RGB в LUV, что лучше для евклидова расстояния.
Mean Shift LSH медленнее, но лучше соответствует вашим потребностям. Он остается линейным и также масштабируется с помощью упомянутой реализации.
PS: Моя аватарка представляет собой приложение Mean Shift LSH, если оно поможет понять, как оно работает.
источник
Возможно, вам понадобится взглянуть на эту работу, представленную и принятую для CVPR 2018: Обучение сегментировать каждую вещь
В этой работе они пытаются сегментировать все, даже объекты, неизвестные сети. Используется маска R-CNN в сочетании с подсетью обучения передаче, они дают очень хорошие результаты при сегментировании практически всего.
источник
Современное состояние (SOTA) для сегментации изображений - это маска Facebook RCNN .
Хотя он обычно обучается на наборе данных, таком как COCO или Pascal, который содержит реальные объекты, вы можете перенастроить его на выбранный вами набор данных, реальный или нет.
Facebook предоставляет реализацию ( Detectron ) под лицензией Apache2. Попробуйте!
источник
На самом деле, ваша задача контролируется.
Segnet
может быть хорошей архитектурой для вашей цели, к какой из ее реализаций можно обратиться здесь . SegNet учится предсказывать метки классов по пикселям на основе контролируемого обучения. Поэтому нам требуется набор данных входных изображений с соответствующими метками истинности земли. Отмечайте изображения должны быть один канал, с каждым пикселем меченого со своим классом ... .Кроме того, взгляните на полностью сверточные сети, которые хорошо подходят для вашей задачи.
На основании правок в вопросе я добавляю дополнительную информацию. Существует множество методов, которые можно применять для этой задачи. В основном проще всего использовать метку фона и классифицировать те классы, которые вы не знаете, как фон, используя упомянутые архитектуры. Таким образом, у вас будут метки, которые могут перекрываться для фонового класса, что, вероятно, является недостатком этого подхода, но его преимущество в том, что в случаях, когда ваши обученные метки часто используются во входных данных, вы можете иметь относительно легкую версию архитектуры, которая распознает неизвестные классы.
источник
Это может быть то, что вы ищете. Поскольку вы просите сегментацию изображения, а не
semantic / instance
сегментацию, я предполагаю, что вам не требуется маркировка для каждого сегмента изображения.Вызывается метод,
scene-cut
который сегментирует изображение в независимые от класса области без присмотра. Это работает очень хорошо в случае загроможденной внутренней среды.Ссылка на документ: arxiv
Код: код
источник