Модель YOLO
Модель YOLO (You Look Only Once, [1]) - одна из простейших и самых быстрых нейросетевых моделей для задачи детекции. Её архитектура представлена ниже (источник):
Признаки из изображения извлекаются 24 последовательными свёрточными слоями. Для уменьшения пространственного разрешения используется шаг (stride) свёртки, равный 2. Все пространственные свёртки, кроме первой, имеют размер 3x3, как в VGG. Для уменьшения числа вычислений перед применением этих свёрток число каналов уменьшается вдвое свёртками 1x1. На первом слое, пока изображение представляет собой тензор с всего тремя каналами, применяется свёртка 7x7 и шагом 2, чтобы сразу его уменьшить и последующие вычисления вести более эффективно в уменьшенном разрешении. В конце идут два полносвязных слоя, чтобы итоговые детекции могли учитывать контекст со всего изображения.
Выход 2го полносвязного слоя преобразуется снова в пространственный тензор размера , где
-
- размер сетки (в статье );
-
- число предсказываемых рамок объектов в каждой ячейке сетки (в статье );
-
- число классов для извлекаемых объектов.
Выходной тензор YOLO (для и ) показан ниже:
В каждой ячейке сетки предсказывается степень присутствия объекта в соответствующей ячейке, вероятностей для каждого класса при условии присутствия объекта , а также координаты левого верхнего угла рамки, выделяющей объект (x,y) и её ширина и высота (w,h).
Степень присутствия объекта вычисляется как произведение вероятности присутствия объекта (среди одного из распознаваемых классов), умноженную н а степень согласованности между предсказанным и реальным выделением по мере IoU:
Когда модель обучена, по величинам мы можем понять, где именно объект присутствует, по условным вероятностям классов понять, какого он класса, а по - локализовать его.
Для повышения полноты поиска (recall) объект в каждой ячейке сетки локализовывался раз различными выделяющими рамками (но одним и тем же классом).
Технически на последнем слое для применялась сигмоидная функция активации (чтобы обеспечить неотрицательность), а к условным вероятностям классов применялось SoftMax преобразование.
вычислялись как доли ширины и высоты всего изображения, а - как поправочные сдвиги относительно центра ячейки сетки, в которой детектировался объект. пропускались через нелинейность tangh.
Настройка модели
Для настройки модели нужно сопоставить корректные выделения объектов с выходами сети. Объект сопоставлялся той ячейке сетки , в которую попадал центр его реального выделения. Только от этой ячейке требовалось корректно предсказать наличие объекта и его выделить. Поскольку каждая ячейка делала предсказаний расположения и степени присутствия объекта, реальное выделение объекта сопоставлялось только одной из попуток его выделить, у которой оказывалось максимальное IoU между предсказанной и реальной рамкой.
Итоговые потери, по которым настраивалась модель, состояла из 3х компонент:
-
точность определения, что объект есть
-
точность определения класса объекта
-
точность локализации объекта