Выполнить многоплановое обучение (yolov2) - PullRequest
0 голосов
/ 24 апреля 2018

Мне интересно, как работает многопрофильная тренировка в YOLOv2 .

В статье говорится, что:

В оригинальном YOLO используется входное разрешение 448 × 448. С добавлением якорных рамок мы изменили разрешение на 416 × 416. Однако , поскольку наша модель использует только сверточный и объединяющий слои, ее можно изменить на лету . Мы хотим, чтобы YOLOv2 был устойчивым к работе с изображениями разных размеров, поэтому обучим этому в модели. Вместо того, чтобы фиксировать размер входного изображения, мы меняем сеть каждые несколько итераций. Каждые 10 пакетов наша сеть случайным образом выбирает новый размер изображения. «Поскольку наша модель уменьшает выборку в 32 раза, мы получаем следующие кратные 32: {320, 352, ..., 608}. Таким образом, наименьший вариант равен 320 × 320, а самый большой - 608 × 608. Мы изменяем размер сеть к этому измерению и продолжить обучение. "

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

Итак, как YOLOv2 меняет это на лету ?

Я прочитал файл конфигурации для yolov2, но все, что я получил, было random=1 оператором ...

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

В YoLo, если вы используете только слои свертки, размер выходного грида изменяется.

Например, если у вас есть размер:

  1. 320x320, выходной размер 10x10

  2. 608x608, выходной размер 19x19

Затем вы вычисляете потери по этим w.r.t для наземной сетки истинности, которая аналогично корректируется.

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

См. Бумагу yolov1 для функции потерь:

Функция потери из бумаги

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

Ссылка на бумагу: https://arxiv.org/pdf/1506.02640.pdf

В пояснении автора автор упоминает тоже самое.

Время: 14: 53

Ссылка на видео

0 голосов
/ 21 сентября 2018

, если у вас есть только сверточные слои, количество весов не изменяется с размером 2D-части слоев (но оно также изменится, если вы также измените размер каналов).

дляНапример (воображаемая сеть), если у вас есть входные изображения 224x224x3 и сверточный слой 3x3x64, у вас будет 64 различных ядра сверточного фильтра 3 * 3 * 3 = 1728 весов.Это значение вообще не зависит от размера изображения, так как ядро ​​наносится на каждую позицию изображения независимо, это самая важная вещь свертки и сверточных слоев и причина, почему CNN могут заходить так глубоко, ипочему в более быстрой R-CNN вы можете просто обрезать регионы из вашей карты объектов.

Если бы были какие-либо полностью связанные слои или что-то подобное, это не сработало бы так, так как там, большее измерение 2D-слоя привело бы кк большему количеству соединений и большему весу.

В yolo v2 есть одна вещь, которая может выглядеть по-прежнему не совсем правильно.Например, если вы удвоите размер изображения в каждом измерении, вы получите в 2 раза больше объектов в каждом измерении, прямо перед конечным фильтром 1x1xN, как если бы ваша сетка была 7x7 для исходного размера сети, сеть с измененным размеромможет иметь 14x14.Но тогда вы получите результаты регрессии 14x14 * B * (5 + C), просто отлично.

...