Mobilenet SSD Размер входного изображения

Я хотел бы обучить модель SSD Mobilenet на пользовательском наборе данных.

Я изучил процесс переподготовки модели и заметил блок image_resizer{} в файле конфигурации:

https://github.com/tensorflow/models/blob/d6d0868209833e014074d6cb4f32558e7acf2a6d/research/object_detection/samples/configs/ssd_mobilenet_v1_pets.config

Должно ли соотношение сторон здесь быть 1:1, например 300x300, или я могу указать пользовательское соотношение?

Все мои изображения из набора данных имеют размер 960x256 - так что я могу просто ввести этот размер для высоты и ширины? Или мне нужно изменить размеры всех изображений, чтобы иметь соотношение сторон 1:1?

1 ответ

Выберите высоту и ширину в файле модели (согласно вашей ссылке), чтобы они соответствовали форме входного изображения, на котором вы хотите, чтобы ваша модель тренировалась и работала. Модель изменит размер входных изображений до указанного размера, если это необходимо.

Таким образом, это может быть размер ваших входных изображений (если ваше оборудование может обучать и управлять моделью с таким размером):

image_resizer {
    fixed_shape_resizer {
        height: 256
        width: 960
    }
}

Выбор будет зависеть от размера обучающих изображений и ресурсов, необходимых для обучения (и использования) модели этого размера.

Я обычно использую 512x288, так как эта модель успешно работает на Raspberry Pi. Я готовлю обучающие изображения в разных масштабах и именно этого размера. Таким образом, изменение размера изображения не работает во время обучения.

Для вывода я ввожу изображения с разрешением 1920x1080, поэтому средство изменения размера изображения масштабирует их до 512x288 перед передачей в Mobilenet, сохраняя соотношение сторон.

Однако в моей области соотношение сторон не имеет значения, поскольку такие искажения возникают естественным образом.

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

Если вы оставите все как есть, сеть изменит ваши входные изображения до 300x300, независимо от их фактического размера. Другая вещь, которую вы можете попробовать, это заменить блок image_resizer следующим изменением:

image_resizer 
{
  keep_aspect_ratio_resizer 
  {
    min_dimension: 600
    max_dimension: 1024
  }
}

, который будет питать сеть с вашими входными изображениями без формы, в диапазоне [min_dim, max_dim]. Однако я не знаю, сработает ли это, потому что я считаю, что детектор ssd требует изменения размера входных изображений в виде квадратов, что означает одинаковую высоту и ширину, например, 224x224 или 128x128. Вам не нужно вносить какие-либо ручные изменения в ваши жесткие изображения.

Другие вопросы по тегам