Любой, не самый тривиальный (или просто редкий), объект с легкостью создаст массу проблем практически при каждой попытке применения нейронных сетей для решения реальных задач. Очевидно, отсутствие вменяемого тренировочного набора существенно усложняет подавляющее количество сценариев использования нейростевого подхода.
Как быть, например, с редким видом кузнечиков, распознавание представителей которого, по той или иной причине, стало очень важной задачей.
Все результаты/примеры получены самостоятельно (и быстро).
Реальный мир, как и реальные задачи, в подавляющем большинстве уникален, необычен, а часто просто очень специфичен, если говорить о цвете, форме, поведении и т.д.
Для успешного решения соответствующих задач необходимы данные (тренировочные наборы, в нашем случае). А поскольку не все пытаются строить «самый правильный» автопилот или искать улыбки на фотографиях — создание необходимых наборов становится основной проблемой.
Согласитесь, вероятность найти готовый и качественный набор для некоторого, очень специфичного, стиля раскраски стремится к нулю:
Кстати, кажется алгоритмы youtube чуть фейлят, когда дело касается «painted body». По крайней мере возвращаемый контент выглядит несколько спорным.
Хорошо, предположим, ручная разметка не выглядит очень страшной — вы не боитесь монотонной работы или crowd sourcing подходит и по качеству результата и по стоимости. Но это справедливо до тех пор, пока все сводится к bounding box (используется избитый пример, исключительно для наглядности):
Что делать, если специфика задачи требует нахождение точного контура? Mask RCNN вполне себе решение, но требует качественного и точного тренировочного набора. А контур отрисовать, как вы понимаете, это не прямоугольничек пометить и такая работа потребует несколько других усилий.
Извечный вопрос: «Что делать?». Ответ не мене тривиален — автоматизировать. Классические алгоритмы компьютерного зрения позволяют добиться приемлемых результатов при условии выполнение некоторых базовых условий.
Собственно, именно наложение дополнительных условий и не позволяет использовать данный подход в качестве основного решения. Тем не менее, правильное стандартных алгоритмов позволяет очень быстро получить качественный, разнообразный и легко расширяемый набор.
Качественный настолько, что даже обычная замена цвета в выбранной области выглядит как практически готовое решение:
Детальнее о подходе в следующий раз.
Подход с генерацией трейнинг сета из видео удобен тем, что финальный результат содержит исключительно «живые» и полностью реальные примеры, которые отображают вариативность и сложность реального мира. Например, губы:
YouTube: RobotsCanSee
Telegram: RobotsCanSeeUs
Как быть, например, с редким видом кузнечиков, распознавание представителей которого, по той или иной причине, стало очень важной задачей.
Все результаты/примеры получены самостоятельно (и быстро).
Нестандартные объекты
Реальный мир, как и реальные задачи, в подавляющем большинстве уникален, необычен, а часто просто очень специфичен, если говорить о цвете, форме, поведении и т.д.
Для успешного решения соответствующих задач необходимы данные (тренировочные наборы, в нашем случае). А поскольку не все пытаются строить «самый правильный» автопилот или искать улыбки на фотографиях — создание необходимых наборов становится основной проблемой.
Согласитесь, вероятность найти готовый и качественный набор для некоторого, очень специфичного, стиля раскраски стремится к нулю:
Кстати, кажется алгоритмы youtube чуть фейлят, когда дело касается «painted body». По крайней мере возвращаемый контент выглядит несколько спорным.
Обычный способ разметки
Хорошо, предположим, ручная разметка не выглядит очень страшной — вы не боитесь монотонной работы или crowd sourcing подходит и по качеству результата и по стоимости. Но это справедливо до тех пор, пока все сводится к bounding box (используется избитый пример, исключительно для наглядности):
Что делать, если специфика задачи требует нахождение точного контура? Mask RCNN вполне себе решение, но требует качественного и точного тренировочного набора. А контур отрисовать, как вы понимаете, это не прямоугольничек пометить и такая работа потребует несколько других усилий.
Автоматизированный подход
Извечный вопрос: «Что делать?». Ответ не мене тривиален — автоматизировать. Классические алгоритмы компьютерного зрения позволяют добиться приемлемых результатов при условии выполнение некоторых базовых условий.
Собственно, именно наложение дополнительных условий и не позволяет использовать данный подход в качестве основного решения. Тем не менее, правильное стандартных алгоритмов позволяет очень быстро получить качественный, разнообразный и легко расширяемый набор.
Качественный настолько, что даже обычная замена цвета в выбранной области выглядит как практически готовое решение:
Детальнее о подходе в следующий раз.
Пример трейнинг сета
Подход с генерацией трейнинг сета из видео удобен тем, что финальный результат содержит исключительно «живые» и полностью реальные примеры, которые отображают вариативность и сложность реального мира. Например, губы:
Другие результаты
Следить за развитием проекта
YouTube: RobotsCanSee
Telegram: RobotsCanSeeUs
aarner Автор
На всякий случай, TL;DR, пример трейнинг сета:
Dark_Daiver
А есть более сложные примеры? Накрашенные губы это же совсем халява :(
aarner Автор
Это вы так говорите, поскольку уже пробовали? :)
На самом деле не всегда халява, поскольку цвет десны и языка часто оказывается близок.
Пример сложнее:
Dark_Daiver
Кораблик уже интересней, хотя совсем не понятно откуда такая плохая сегментация мачты.
Вроде того. Накрашенные губы + макияж это наверное лучшее что можно придумать для сегментации, на самом деле. Естественная разметка, так сказать, вместе с очень удобным фоном. Нейронкам должно очень хорошо заходить, т.к. они легко учат текстуру. У вас где-то в видео, кстати, был забавный пример, где сегментация цепляет ботинки, т.к. они одного цвета со штанами.
Самая большая проблема это обветренные мужские губы с большим диапазоном движений (крики, закусывание губы и т.д.). Практически нереально разметить консистентно, т.к. зачастую не видна граница между губой и кожей + не очевидно где кончается губа, и начинается ротовая полость. Отдельно — проблемы из-за оттока крови на некоторых эмоциях.
Видео несколько спасает, но требуется очень большой фпс и отличный свет, чтобы избежать motion blur.
aarner Автор
Узка мачта слишком. Кстати, это именно та проблема, которая сильно мешает с насекомыми :) Все примеры в статье и вообще — исключительно алгоритмическая сегментация. Функция принадлежности реализована как усложненная delta E. Тем не менее, чем «проще» цвет — тем лучше результат. Собственно, это и объясняет «артефакты» с близкими по цвету предметами. Если сцена позволяет, можно и так:
aarner Автор
На всякий случай, я говорю о сегментации:
Dark_Daiver
Результаты оч. красивые, вопросов нет, но как я уже и сказал — это относительно простые случаи.
В любом случае с нетерпением жду статьи с обзором метода, думаю будет очень интересно
aarner Автор
Я даже больше скажу, это действительно простые случаи. Точнее, контролируемо простые. Основная идея подхода — уйти от ручной разметки фотографий и использовать видео, получив лучшую «вариативность».
1. Алгоритмическая сегментация -> 2. Тренировочный набор -> 3. Универсальная модель.
Первый шаг, вполне ожидаемо, потребует выполнения некоторых условий (контраст, цвет и т.д.). Кроме того, губы это только первый результат :) Действительно проще, чем все остальное, но даже с «простыми» случаями есть масса нюансов, которые касаются стабильности, деталей и т.д. Например: