Любой, не самый тривиальный (или просто редкий), объект с легкостью создаст массу проблем практически при каждой попытке применения нейронных сетей для решения реальных задач. Очевидно, отсутствие вменяемого тренировочного набора существенно усложняет подавляющее количество сценариев использования нейростевого подхода.

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


Все результаты/примеры получены самостоятельно (и быстро).

Нестандартные объекты


Реальный мир, как и реальные задачи, в подавляющем большинстве уникален, необычен, а часто просто очень специфичен, если говорить о цвете, форме, поведении и т.д.


Для успешного решения соответствующих задач необходимы данные (тренировочные наборы, в нашем случае). А поскольку не все пытаются строить «самый правильный» автопилот или искать улыбки на фотографиях — создание необходимых наборов становится основной проблемой.

Согласитесь, вероятность найти готовый и качественный набор для некоторого, очень специфичного, стиля раскраски стремится к нулю:


Кстати, кажется алгоритмы youtube чуть фейлят, когда дело касается «painted body». По крайней мере возвращаемый контент выглядит несколько спорным.

Обычный способ разметки


Хорошо, предположим, ручная разметка не выглядит очень страшной — вы не боитесь монотонной работы или crowd sourcing подходит и по качеству результата и по стоимости. Но это справедливо до тех пор, пока все сводится к bounding box (используется избитый пример, исключительно для наглядности):


Что делать, если специфика задачи требует нахождение точного контура? Mask RCNN вполне себе решение, но требует качественного и точного тренировочного набора. А контур отрисовать, как вы понимаете, это не прямоугольничек пометить и такая работа потребует несколько других усилий.

Автоматизированный подход


Извечный вопрос: «Что делать?». Ответ не мене тривиален — автоматизировать. Классические алгоритмы компьютерного зрения позволяют добиться приемлемых результатов при условии выполнение некоторых базовых условий.


Собственно, именно наложение дополнительных условий и не позволяет использовать данный подход в качестве основного решения.  Тем не менее, правильное стандартных алгоритмов позволяет очень быстро получить качественный, разнообразный и легко расширяемый набор.

Качественный настолько, что даже обычная замена цвета в выбранной области выглядит как практически готовое решение:


Детальнее о подходе в следующий раз.

Пример трейнинг сета


Подход с генерацией трейнинг сета из видео удобен тем, что финальный результат содержит исключительно «живые» и полностью реальные примеры, которые отображают вариативность и сложность реального мира. Например, губы:



Другие результаты





Следить за развитием проекта


   YouTube: RobotsCanSee
   Telegram: RobotsCanSeeUs

Комментарии (8)


  1. aarner Автор
    22.10.2019 14:56

    На всякий случай, TL;DR, пример трейнинг сета:


    1. Dark_Daiver
      22.10.2019 20:43

      А есть более сложные примеры? Накрашенные губы это же совсем халява :(


      1. aarner Автор
        22.10.2019 20:55

        Это вы так говорите, поскольку уже пробовали? :)

        На самом деле не всегда халява, поскольку цвет десны и языка часто оказывается близок.
        Пример сложнее:


        1. Dark_Daiver
          22.10.2019 21:22

          Кораблик уже интересней, хотя совсем не понятно откуда такая плохая сегментация мачты.


          Это вы так говорите, поскольку уже пробовали? :)

          Вроде того. Накрашенные губы + макияж это наверное лучшее что можно придумать для сегментации, на самом деле. Естественная разметка, так сказать, вместе с очень удобным фоном. Нейронкам должно очень хорошо заходить, т.к. они легко учат текстуру. У вас где-то в видео, кстати, был забавный пример, где сегментация цепляет ботинки, т.к. они одного цвета со штанами.
          Самая большая проблема это обветренные мужские губы с большим диапазоном движений (крики, закусывание губы и т.д.). Практически нереально разметить консистентно, т.к. зачастую не видна граница между губой и кожей + не очевидно где кончается губа, и начинается ротовая полость. Отдельно — проблемы из-за оттока крови на некоторых эмоциях.
          Видео несколько спасает, но требуется очень большой фпс и отличный свет, чтобы избежать motion blur.


          1. aarner Автор
            22.10.2019 22:11

            Кораблик уже интересней, хотя совсем не понятно откуда такая плохая сегментация мачты.

            Узка мачта слишком. Кстати, это именно та проблема, которая сильно мешает с насекомыми :) Все примеры в статье и вообще — исключительно алгоритмическая сегментация. Функция принадлежности реализована как усложненная delta E. Тем не менее, чем «проще» цвет — тем лучше результат. Собственно, это и объясняет «артефакты» с близкими по цвету предметами. Если сцена позволяет, можно и так:


      1. aarner Автор
        22.10.2019 21:02

        На всякий случай, я говорю о сегментации:


        1. Dark_Daiver
          22.10.2019 21:24

          Результаты оч. красивые, вопросов нет, но как я уже и сказал — это относительно простые случаи.
          В любом случае с нетерпением жду статьи с обзором метода, думаю будет очень интересно


          1. aarner Автор
            22.10.2019 22:21

            Я даже больше скажу, это действительно простые случаи. Точнее, контролируемо простые. Основная идея подхода — уйти от ручной разметки фотографий и использовать видео, получив лучшую «вариативность».

            1. Алгоритмическая сегментация -> 2. Тренировочный набор -> 3. Универсальная модель.

            Первый шаг, вполне ожидаемо, потребует выполнения некоторых условий (контраст, цвет и т.д.). Кроме того, губы это только первый результат :) Действительно проще, чем все остальное, но даже с «простыми» случаями есть масса нюансов, которые касаются стабильности, деталей и т.д. Например: