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

Модель YOLO

Модель YOLO (You Look Only Once, [1]) - одна из простейших и самых быстрых нейросетевых моделей для задачи детекции. Её архитектура представлена ниже (источник):

Признаки из изображения извлекаются 24 последовательными свёрточными слоями. Для уменьшения пространственного разрешения используется шаг (stride) свёртки, равный 2. Все пространственные свёртки, кроме первой, имеют размер 3x3, как в VGG. Для уменьшения числа вычислений перед применением этих свёрток число каналов уменьшается вдвое свёртками 1x1. На первом слое, пока изображение представляет собой тензор с всего тремя каналами, применяется свёртка 7x7 и шагом 2, чтобы сразу его уменьшить и последующие вычисления вести более эффективно в уменьшенном разрешении. В конце идут два полносвязных слоя, чтобы итоговые детекции могли учитывать контекст со всего изображения.

Выход 2го полносвязного слоя преобразуется снова в пространственный тензор размера S×S×(B5+C)S\times S\times (B*5+C), где

  • SS - размер сетки (в статье S=7S=7);

  • BB - число предсказываемых рамок объектов в каждой ячейке сетки (в статье B=2B=2);

  • CC - число классов для извлекаемых объектов.

Выходной тензор YOLO (для B=1B=1 и S=5S=5) показан ниже:

В каждой ячейке сетки предсказывается степень присутствия объекта conf[0,1]conf\in[0,1] в соответствующей ячейке, CC вероятностей для каждого класса при условии присутствия объекта p(1obj),...p(Cobj)p(1|obj),...p(C|obj), а также координаты левого верхнего угла рамки, выделяющей объект (x,y) и её ширина и высота (w,h).

Степень присутствия объекта вычисляется как произведение вероятности присутствия объекта (среди одного из CC распознаваемых классов), умноженную на степень согласованности между предсказанным и реальным выделением по мере IoU:

conf=p(obj)IoUtruepredconf=p(obj)\cdot IoU_{true}^{pred}

Когда модель обучена, по величинам confconf мы можем понять, где именно объект присутствует, по условным вероятностям классов понять, какого он класса, а по (x,y,w,h)(x,y,w,h) - локализовать его.

Для повышения полноты поиска (recall) объект в каждой ячейке сетки локализовывался BB раз различными выделяющими рамками (но одним и тем же классом).

Технически на последнем слое для w,h,confw,h,conf применялась сигмоидная функция активации (чтобы обеспечить неотрицательность), а к условным вероятностям классов применялось SoftMax преобразование.

w,hw,h вычислялись как доли ширины и высоты всего изображения, а x,yx,y - как поправочные сдвиги относительно центра ячейки сетки, в которой детектировался объект. x,yx,y пропускались через нелинейность tangh.

Настройка модели

Для настройки модели нужно сопоставить корректные выделения объектов с выходами сети. Объект сопоставлялся той ячейке сетки S×SS\times S, в которую попадал центр его реального выделения. Только от этой ячейке требовалось корректно предсказать наличие объекта и его выделить. Поскольку каждая ячейка делала BB предсказаний расположения и степени присутствия объекта, реальное выделение объекта сопоставлялось только одной из попуток его выделить, у которой оказывалось максимальное IoU между предсказанной и реальной рамкой.

Итоговые потери, по которым настраивалась модель, состояла из 3х компонент:

  • точность определения, что объект есть

  • точность определения класса объекта

  • точность локализации объекта

Точность определения, что объект есть

Вычислялась как (1conf)2(1-conf)^2, если объект есть, и как (0conf)2(0-conf)^2 если объекта нет.

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

Если объекта не было, то это учитывалось в функции потерь с меньшим весом, чем ситуация, когда объект был. Это было сделано, поскольку ситуаций отсутствия объекта гораздо больше, чем ситуаций, что он присутствует. Но именно последний случай представляет основной интерес.

Точность определения класса объекта

Неточности в определении того, какому классу принадлежит объект по квадрату L2L_2-нормы расхождений вектора истинных вероятностей и предсказанных.

Точность локализации объекта

Неточность локализации объекта штрафуется как

(x^x)2+(y^y)2+(w^w)2+(h^h)2(\hat{x}-x)^2+(\hat{y}-y)^2+(\sqrt{\hat{w}}-\sqrt{w})^2+(\sqrt{\hat{h}}-\sqrt{h})^2

Для w,hw,h штрафуются отклонения не самих величин, а корней из них, чтобы повысить внимание модели к точности локализации малых объектов, имеющих небольшую ширину и высоту.

Анализ модели

Архитектура YOLO проста в реализации и работает быстро. Недостатками YOLO являются

  • невысокая точность локализации, связанная с тем, что определение координат происходит на основе карт признаков, полученных с последнего свёрточного слоя, имеющих низкое пространственное разрешение;

  • ограничение на максимальное число детекций, архитектура не может найти на изображении больше объектов, чем использованное число ячеек выходной сетки (7x7=49 в стандартной конфигурации).

Существуют более поздние усовершенствованные версии YOLO, в которых эти недостатки отчасти устранены.

Литература

  1. Redmon J. You only look once: Unified, real-time object detection //Proceedings of the IEEE conference on computer vision and pattern recognition. – 2016.