Перейти к основному содержимому

Модель RetinaNet

Модель RetinaNet [1] - метод детекции объектов на изображениях, который существенно обогнал в качестве работы модели YOLO v1 и SSD.

В этой модели использовалась нейросеть FPN для генерации представлений изображения в разном разрешении.

Используя эти представления, удалось производить детекцию как в малых, так и в больших пространственных разрешениях, эффективно выделяя как большие, так и малые объекты соответственно. Причём, что важно, детекторы на каждом слое работали над высокоуровневыми признаками.

Схема модели RetinaNet [1]:

К каждому слою декодера FPN-сети применялись две независимые сети:

  • детектор (классифицирующий рамки),

  • локализатор (корректирующий расположение рамок относительно шаблона, как в SSD).

Подсети детектора и локализатора работали со своими параметрами. Таким образом, локализация формально не зависела от детекции.

При этом к каждому декодировочному слою FPN применялся детектор с одними и теми же параметрами. То же касалось и локализатора.

Классификатор и локализатор представляли собой последовательное применение четырёх свёрток 3x3 с постобработкой функцией активации ReLU.

Классификаторы и локализаторы для каждой позиции применялись KK раз для KK шаблонных рамок (anchor boxes). Рассматривались рамки

  • малого, среднего и большого размера;

  • вытянутые вбок, квадратные и вытянутые вверх по форме.

Это давало K=9K=9 вариантов для каждой пространственной позиции.

Выходы классификатора и локализатора

Последней нелинейностью в классификаторе была сигмоидная активация, чтобы выдавать вероятности каждого из детектируемых классов. Таким образом, классификатор выдавал CKC\cdot K выходов. Если все активации были близки к нулю, то это трактовалось как отсутствие объекта.

Последней нелинейностью в локализаторе была тождественная функция, локализатор выдавал 4K4\cdot K выходов: смещение по вертикали и горизонтали относительно центра шаблонной рамки, а также изменение её стандартной ширины и высоты.

Функция потерь

Сопоставление детекций

Поскольку в каждой пространственной позиции для KK шаблонных рамок предсказываются рамки и классы объектов, для расчёта функции потерь необходимо сопоставить предсказанные детекции с реальными.

Предсказанные детекции сопоставлялись реальным, если мера IoU их пересечения была выше 0.5. Если же она была ниже 0.4, то сопоставлялся фоновый класс (отсутствие объекта). Случаи IoU[0.4,0.5)\in [0.4,0.5) игнорировались.

Типы потерь

В модели RetinaNet, как и во всех других методах детекции объектов, использовалась функция потерь, равная сумме двух компонент:

  • функции потерь локализации (определение местоположения объектов)

  • функции потерь классификации (корректность определения класса)

В качестве функции потерь локализации использовалась функция потерь Хубера, как дифференцируемая и устойчивая к выбросам.

Классификатор выдавал CC независимых вероятностей классов (рейтингов, пропущенных через сигмоиду). Фоновому классу отвечала ситуация, когда вероятности всех выделяемых классов близки к нулю. Каждый выход классификатора можно было бы настраивать бинарной кросс-энтропийной функцией потерь:

CE(y,p)=ylog(p)(1y)log(1p),CE(y,p) = -y\log(p)-(1-y)\log(1-p),

где y{0,1}y\in\{0,1\} - индикатор присутствия целевого класса.

Сфокусированные потери

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

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

Для того, чтобы этого не происходило, в RetinaNet предлагается новый вид потерь классификации - сфокусированные потери (focal loss), ставшие впоследствии очень популярными:

FL(y,p)=y(1p)γlog(p)(1y)pγlog(1p),FL(y,p) = -y(1-p)^\gamma \log(p) - (1-y)p^\gamma \log(1-p),

где

  • pp - вероятность реализации y=1y=1 (одного из целевых классов);

  • 1p1-p - вероятность отсутствия этого класса (если для всех классов p0p\approx0, то объект отсутствует и реализуется фоновый класс);

  • γ>0\gamma>0 - гиперпараметр метода.

Указанные потери суммируются для всех рамок и всех целевых классов.

По смыслу домножение на (1p)γ(1-p)^\gamma снижает вклад в совокупные потери обнаружений с высоким уровнем уверенности в классе, а домножение на pγp^\gamma снижает вклад обнаружений с высоким уровнем уверенности в присутствии фона.

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

Ниже показан пример влияния дополнительного множителя на логарифм вероятности целевого класса pp [1]:

Как видно из графика, потери уменьшаются при p1p\to 1 существенно быстрее, чем для стандартных кросс-энтропийных потерь.

Это позволило процессу настройки модели отвлечься от максимизации вероятности распознавания классов, которые и так уже хорошо распознаны (в основном, фоновых), а сосредоточиться на повышении вероятности целевых классов, в прогнозах которых модель ещё недостаточно уверена.

В работе предлагалось брать γ=2\gamma=2, а вес каждого слагаемого в focal loss дополнительно домножался на веса, понижающие вклад частотных целевых классов.

Потери focal loss позволили существенно повысить качество распознавания объектов и стали использоваться во многих последующих алгоритмах детекции.

Литература