Использование базового размера привязки в однократном детекторе с несколькими блоками

#tensorflow #object-detection #object-detection-api

#tensorflow #обнаружение объекта #object-detection-api

Вопрос:

Я копался в API обнаружения объектов Tensorflow, чтобы проверить поколения привязки для архитектуры SSD. В этом py-файле, где блоки привязки генерируются «на лету», я не могу понять использование base_anchor_size . В соответствующей статье нет упоминания о такой вещи. Короче говоря, два вопроса:

  1. Для чего используется base_anchor_size параметр? Важно ли это?
  2. Как этот параметр влияет на обучение в случаях, когда исходное входное изображение имеет square форму, и в случае, когда оно не квадратное?

Ответ №1:

В архитектуре SSD существуют шкалы для привязок, которые фиксированы заранее, например, линейные значения в диапазоне 0,2-0,9. Эти значения относятся к размеру изображения. Например, при заданном изображении 320×320 наименьший привязка (с соотношением 1: 1) будет 64×64, а наибольший привязка будет 288×288. Однако, если вы хотите вставить в свою модель изображение большего размера, например, 640×640, но без изменения размеров привязки (например, поскольку это изображения удаленных объектов, поэтому нет необходимости в больших объектах; не изменяя размеры привязки, вы можете не настраивать модель на новое разрешение), тогда вы можете просто использовать base_anchor_size=0.5 , что означает, что масштабы привязки будут равны 0,5 * [0,2-0,9] относительно размера входного изображения.

Значение по умолчанию для этого параметра равно [1.0, 1.0] , что означает, что он не оказывает никакого влияния.

Записи соответствуют [height, width] относительному максимальному квадрату, который вы можете поместить в изображение, то есть [min(image_height,image_width),min(image_height,image_width)] . Итак, если, например, ваше входное изображение имеет формат VGA, то есть 640×480, то base_anchor_size принимается относительным к [480,480] .

Комментарии:

1. Спасибо за ответ. Итак, 1) Если я прав, то блоки в каждом слое имеют только один соответствующий масштаб, за исключением случая, когда есть два блока с ar = 1. 2) Мы не предоставляем base_anchor_size, так что по умолчанию всегда будет [1.0, 1.0] в каждом случае. Есть ли какой-либо фрагмент кода, который обрабатывает это заранее?

2. 1) Да. 2) Да, значение по умолчанию равно [1.0, 1.0]. Я не понял вопроса «заранее».

3. 1> Означает ли это, что мой наименьший объект, который можно обнаружить на изображении 320X320, будет иметь размер 64X64 (при ar = 1 и масштабе 0,2 -0,9)? 2> Можете ли вы хоть раз объяснить, каким будет размер привязки на слое (Conv 4-3), т. е. масштаб = 0,2 при соотношении сторон 1: 2? Будет ли это 32X64? @netanel-sam