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