#tensorflow #object-detection #object-detection-api
#tensorflow #обнаружение объекта #object-detection-api
Вопрос:
Я копался в API обнаружения объектов Tensorflow, чтобы проверить поколения привязки для архитектуры SSD. В этом py-файле, где блоки привязки генерируются «на лету», я не могу понять использование base_anchor_size
. В соответствующей статье нет упоминания о такой вещи. Короче говоря, два вопроса:
- Для чего используется
base_anchor_size
параметр? Важно ли это? - Как этот параметр влияет на обучение в случаях, когда исходное входное изображение имеет
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