Я пытаюсь обучить классификатор пользовательских объектов в Darknet YOLO v2 https://pjreddie.com/darknet/yolo/
Я собрал набор данных для изображений, большинство из которых имеют размер 6000 x 4000 пикселей, а также некоторые более низкие разрешения.
Нужно ли мне изменять размер изображений перед тренировкой, чтобы получить квадрат?
Я обнаружил, что в конфиге используются:
[net]
batch=64
subdivisions=8
height=416
width=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1
вот почему мне было интересно, как использовать его для разных размеров наборов данных.

Очень часто перед тренировкой размер изображений изменяется. 416x416 немного больше обычного. Большинство моделей imagenet изменяют размер и квадрат изображения, например, до 256x256. Так что я ожидал того же и здесь. Попытка тренироваться на 6000x4000 потребует целого ряда графических процессоров. Стандартный процесс - это квадрат изображения по наибольшему размеру (высоте или ширине), заполнение нулями на более короткой стороне, а затем изменение размера с помощью стандартных инструментов изменения размера изображения, таких как PIL.
В общем, если только модель не была обучена для этого разрешения. Шаблоны, которые модель должна искать на каждом уровне сети в модели с более высоким разрешением, отличаются от модели с более низким разрешением.
так что для обнаружения одного изображения размером 6000x4000 нам нужно установить наш файл cnfg таким большим, как этот? я немного запутался. Я не хочу делать тайлинг, но тоже получил бы высокую точность
Редко работать с изображениями такого размера, вы, вероятно, не сможете уместить этот размер на большинстве графических процессоров, и вам придется разбить его на несколько частей. Процесс нетривиальный и, вероятно, выходит за рамки предварительно обученной модели. Вы не должны сильно терять точность при изменении размера изображения, вы потеряете точность только в том случае, если будете работать с очень крошечными функциями и ограничивающими рамками, и тогда вам, вероятно, потребуется разбить изображение и обработать его на сегменты. Если размер ваших ящиков составляет разумный процент от размера холста изображения, то изменение размера - правильный подход.
Вам не нужно изменять его размер, потому что Darknet сделает это вместо вас!
Это означает, что вам действительно не нужно этого делать, и вы можете использовать изображения разных размеров во время тренировки. То, что вы разместили выше, - это просто конфигурация сети. Также должно быть полное определение сети. А высота и ширина говорят вам, какое разрешение сети. И он также сохраняет соотношение сторон, проверьте, например, это.
Небольшое обновление / комментарий: я обнаружил, что есть другие репозитории на основе даркнета (например, это), которые не поддерживают соотношение сторон. Отметьте это: github.com/AlexeyAB/darknet/issues/232#issuecomment-33695548 5
Вам не нужно изменять размер изображений, вы можете напрямую изменить значения в файле darknet.cfg.
darknet.cfg (yolo-darknet.cfg), вы можете все cfg, размеры изображений составляют (416 416) -> (вес, высота), вы можете изменить значения, чтобы даркнет автоматически изменял размер изображений перед тренировкой.Вам не нужно изменять размер изображений базы данных. Архитектура YOLO от PJReddie делает это сама, сохраняя безопасное соотношение сторон (никакая информация не пропадает) в соответствии с разрешением в файле .cfg. Например, если у вас размер изображения 1248 x 936, YOLO изменит его размер до 416 x 312, а затем заполнит дополнительное пространство черными полосами, чтобы оно поместилось в сеть 416 x 416.
По умолчанию API даркнета изменяет размер изображений как при выводе, так и при обучении, но теоретически любой размер ввода w, h = 32 x X, где X принадлежит натуральному числу, должен, W - ширина, H - высота. По умолчанию X = 13, поэтому размер ввода w, h = (416, 416). Я использую это правило с yolov3 в opencv, и оно работает лучше, чем больше X.
Как насчет того, чтобы сделать прогноз на изображении 6000x4000 после обучения данных с помощью модели. это сработает?