Мы научились раньше
[серия алгоритмов обнаружения целей] 1. Алгоритм R-CNN
[Серия алгоритмов обнаружения целей] 2. Алгоритм SPP-Net
В этой статье мы представим Fast R-CNN.
Fast R-CNN — это метод быстрой сверточной сети на основе областей для обнаружения объектов. Он ссылается на некоторые идеи SPP-Net и дополнительно улучшает и оптимизирует алгоритм R-CNN.
Как упоминалось в статье автора, Fast R-CNN в 9 раз быстрее, чем R-CNN, и в 3 раза быстрее, чем SPP-Net, по результатам обучения VGG16.Что касается времени тестирования, это в 213 раз быстрее, чем R-CNN и В 10 раз быстрее, чем SPP-Net.times, и получена более высокая точность на PASCAL VOC.
1. Есть проблемы с алгоритмом RCNN
Во-первых, мы еще раз объясним недостатки алгоритма R-CNN.
Алгоритм выбора ящика-кандидата занимает много времени.
Для каждого блока-кандидата его необходимо ввести в сеть CNN для извлечения признаков, существует множество повторяющихся операций, и расчеты не могут быть разделены.
Учебный процесс представляет собой многоэтапный конвейер. Следовательно, выходные результаты после некоторых шагов необходимо сначала записать на диск, а затем использовать в качестве входных данных для следующего шага, а накладные расходы на пространство велики.
При извлечении признаков необходимо зафиксировать размер входного изображения, что приводит к потере и изменению некоторых признаков.
Вышеуказанные проблемы делают R-CNN затратным по времени и пространству во время обучения, а скорость обнаружения объектов также очень низкая.
2. Усовершенствования Fast R-CNN
В ответ на указанные выше недостатки R-CNN в Fast R-CNN были внесены следующие улучшения:
1. Совместное использование параметров во время извлечения признаков
2. Внедрить объединяющий слой ROI для извлечения векторов признаков фиксированной длины.
3. Используйте одну и ту же сеть CNN для извлечения признаков, целевой классификации и регрессии с граничной рамкой, а также используйте многозадачный метод для одновременного выполнения классификации целевых категорий и регрессии положения окна. Таким образом достигается сквозное многозадачное обучение (данный блок исключает извлечение ящиков-кандидатов)
4. Используйте SVD для декомпозиции параллельных полносвязных слоев в конце сети, чтобы уменьшить вычислительную сложность и повысить скорость обнаружения.
3. Общие шаги Fast R-CNN
Общая структура Fast R-CNN выглядит следующим образом:
1. Модель сети CNN перед обучением
Как и R-CNN, сетевая модель CNN предварительно обучена на наборе данных ImageNet. Автор обучил несколько сетевых моделей. Для этого мы используем модель VGG16.
2. Извлечение регионов-кандидатов
Fast R-CNN также использует алгоритм выборочного поиска для извлечения 2000 блоков-кандидатов. Как его извлечь описано в предыдущем R-CNN ([серия алгоритмов обнаружения целей] 1. Алгоритм R-CNN)
3. Используйте полную сетевую модель CNN для извлечения признаков, целевой классификации и регрессии с ограничивающей рамкой.
По сравнению с конвейерной моделью R-CNN, Fast R-CNN использует полную сетевую модель CNN для извлечения признаков, классификации целей и регрессии с граничной рамкой, тем самым реализуя сквозной процесс. Внутренняя блок-схема конкретной модели выглядит следующим образом:
Во-первых, посмотрите на структуру этой модели CNN, На основе VGG16 последний слой максимального слоя объединения модуля свертки удален и заменен слоем объединения ROI. Замените последний полносвязный слой и слой softmax исходной сети VGG16 двумя родственными слоями (полностью подключенный слой и softmax для классов K+1 и регрессия ограничивающей рамки для конкретного класса).
В-четвертых, реализация конкретных деталей
Далее рассмотрим конкретные детали реализации:
Во-первых, модель получает два входа: исходное изображение и соответствующие блоки-кандидаты. Карта объектов извлекается путем прохождения исходного изображения через несколько сверточных слоев и объединенных слоев.
Через отношения сопоставления найдите область, в которой соответствующий кадр-кандидат отображается на карте объектов.
-
Вектор признаков фиксированной длины извлекается из карты признаков, соответствующей каждому кадру-кандидату, через слой объединения ROI.
Давайте взглянем на конкретную реализацию уровня объединения ROI.Слой объединения ROI на самом деле является упрощенной версией уровня объединения пространственных пирамид в SPPNet. В слое объединения ROI различные входные ROI (карты признаков, соответствующие полям-кандидатам) делятся на блоки H*W, а затем в каждом блоке извлекается признак с использованием слоя максимального объединения, и соответствующая операция объединения является независимой. Для каждого канала карты объектов конечный результат H*W*c (c — количество каналов) объектов. Преобразуйте входные объекты в векторы объектов и передайте их в следующие полносвязные слои. (Для используемой модели на основе VGG16 это H*W равно 7*7)
Вычислительная сложность снижается за счет разложения SVD при выполнении полносвязных слоев.
В задаче классификации изображений основной объем вычислений находится в модуле свертки, а в модуле обнаружения цели для изображения извлечение признаков необходимо выполнить только один раз, но карта признаков, соответствующая каждому кадру-кандидату, должна быть соответственно выполнять последующие полносвязные операции (2000 раз), в результате чего почти половина времени прямого вычисления тратится на полносвязный слой. Следовательно, в Fast R-CNN вычислительная сложность снижается за счет декомпозиции SVD, когда выполняется полносвязный слой. Как это работает?
Пусть параметр полносвязного слоя представляет собой матрицу W из u * v, разложите W по SVD и аппроксимируйте его первыми t собственными значениями следующим образом:
Таким образом, вычислительная сложность становится u * t + v * t. Если t
В статье авторы показывают с помощью экспериментов, что SVD-разложение полностью связанного слоя может увеличить скорость на 30%, в то время как mAP снижается только на 0,3%, и метод не требует дополнительных операций тонкой настройки.
5. Построение функции потерь
Поскольку есть две задачи одного уровня: целевая классификация и регрессия блока кандидатов, соответствующая функция потерь также должна состоять из функции потерь задачи классификации и функции потерь задачи регрессии.
Сначала посмотрите на задачу классификации, пусть u будет реальной меткой класса, u принадлежит (0,1,...K), метка фонового класса равна 0,— выход K+1, соответствующий слою Softmax, и — прогнозируемая вероятность категорий K+1. Наконец, функция потерь для задачи классификации:
Если снова посмотреть на задачу регрессии, результат задачи регрессии будет
, значение преобразования положения центра, ширины и высоты прогнозируемой ограничивающей рамки (такой же, как R-CNN),Значение преобразования положения центра, ширины и высоты реального ограничивающего прямоугольника (такое же, как у R-CNN). Наконец, функция потерь задачи регрессии:
Гладкая кривая функции потерь L1 показана на рисунке ниже По сравнению с функцией потерь L2 она не чувствительна к выбросам и выбросам.
Таким образом, окончательная функция потерь Fast R-CNN:
Принято считать, что u=0 является фоновой классификацией, тогда функция u>=1 указывает на то, что фоновая область-кандидат, то есть отрицательная выборка, не участвует в потерях регрессии, и нет необходимости выполнять операцию регрессии на области-кандидате; λ контролирует баланс между потерями классификации и потерями регрессии.
Это весь процесс модели Fast R-CNN.Хотя Fast R-CNN улучшил некоторые проблемы R-CNN, скорость обнаружения и точность были значительно улучшены.Однако в Fast R-CNN все еще есть областью, которую можно улучшить, является извлечение блоков-кандидатов.Будь то R-CNN, SPP-Net или Fast R-CNN, используется традиционный алгоритм выборочного поиска, а алгоритм выборочного поиска использует сегментацию изображения и большое количество жадные алгоритмы делают извлечение блоков-кандидатов очень трудоемким.Кроме того, поскольку извлечение блоков-кандидатов является модулем, независимым от сети CNN, Fast R-CNN не является сквозным режимом обучения в истинном смысле.
Поэтому мы, естественно, думаем о том, можем ли мы добавить извлечение блоков-кандидатов в сеть CNN и использовать сеть CNN для выполнения операций извлечения, классификации и регрессии блоков-кандидатов, чтобы достичь сквозного обучения в сети. истинный смысл процесса, этоFaster R-CNNИдею мы представим в следующий раз.
Добро пожаловать в мою личную общедоступную учетную запись AI Computer Vision Workshop. Эта общедоступная учетная запись будет время от времени публиковать статьи о машинном обучении, глубоком обучении, компьютерном зрении и другие связанные статьи. Приглашаю всех учиться и общаться со мной.