Faster-RCNN bbox / нормализация изображения

Я играю с py-быстрее-rcnn на настраиваемом наборе данных (около 3000 изображений, 7 разных классов, включая фон) и следую этим руководствам:

https://github.com/zeyuanxy/fast-rcnn/blob/master/help/train/README.md (учебник Fast-RCNN) https://github.com/deboc/py-faster-rcnn/tree/master/help (учебник Faster-RCNN)

Я использую решение end2end с сетью VGG16. Все работает нормально, ожидайте моих результатов, поэтому у меня есть несколько вопросов:

  • Какие виды нормализации необходимы для изображений и аннотаций bbox?
  • Это похоже на предыдущий вопрос: есть два варианта конфигурации: BBOX_NORMALIZE_TARGETS и BBOX_NORMALIZE_TARGETS_PRECOMPUTED. Должен ли я рассчитывать среднее значение и стандартное отклонение перед тренировкой и использовать эти параметры для нормализации bbox?
  • Я изменил num_output на слоях cls_score и bbox_pred (согласно этой теме: https://github.com/rbgirshick/py-faster-rcnn/issues/1), но в решении end2end также есть слои rpn_cls_score и rpn_bbox_pred. Должен ли я также изменить num_outputs из них? Если бы я мог, то как я мог бы рассчитать количество выходов для 7 классов?

person Norbert    schedule 27.12.2016    source источник


Ответы (1)


Нет, вам не нужно ничего предварительно вычислять. В lib / roi_data_layer / roidb.py он вычисляет среднее и стандартное отклонение для вашего набора данных, если вы устанавливаете BBOX_NORMALIZE_TARGETS_PRECOMPUTED на False, в противном случае он будет использовать значения по умолчанию, которые указаны в lib / fast_rcnn / config.py. RPN не зависит от количества классов. Он рассматривает только те области, которые содержат какой-либо объект, как положительный, а все остальное как отрицательное.

person Bharat    schedule 30.12.2016
comment
Спасибо за вашу помощь! Я попытался установить для BBOX_NORMALIZE_TARGETS_PRECOMPUTED значение false, но это вызвало ошибку утверждения: Файл /home/spirit/py-faster-rcnn/tools/../lib/fast_rcnn/train.py, строка 35, в init assert cfg.TRAIN.BBOX_NORMALIZE_TARGETS_PRECOMPUTED AssertionError - person Norbert; 02.01.2017
comment
Я заглянул в код, где происходит утверждение и есть комментарий: # RPN может использовать только предварительно вычисленную нормализацию, потому что нет # фиксированной статистики для вычисления априори - person Norbert; 02.01.2017
comment
Я думаю, вы установили BBOX_NORMALIZE_TARGETS в False, что должно быть правдой. В любом случае, эти вещи не нужны для RPN (это необходимо только тогда, когда у вас есть предложения по региону от какого-либо другого алгоритма, например, выборочного поиска). Это сработает, даже если вы закомментируете весь код нормализации. Вся нормализация для fast-rcnn выполняется внутри generate_anchors, anchor_target_layer для обучения RPN, а также offer_target_layer и offer_layer для обучения детектора. Эти файлы находятся в папке RPN. - person Bharat; 02.01.2017
comment
Я предполагаю, что stds и средства для RPN указывают предварительную статистику предложенных ящиков? Тогда нет смысла инициализировать эти значения в соответствии с определенным набором данных. - person Shaohua Li; 30.08.2017
comment
Я обнаружил, что эта часть (BBOX_NORMALIZE_STDS и BBOX_NORMALIZE_MEANS) не упоминается в исходной статье. Почему это полезно? - person huangbiubiu; 17.12.2018