Обнаружение объектов с помощью более быстрого R-CNN
Оглавление
Сводка
Выше приведены примеры изображений и заметок объектов для набора данных Продуктового набора данных (слева) и набора данных Pascal VOC (справа), используемого в этом руководстве.
Более быстрый R-CNN — это алгоритм обнаружения объектов, предложенный Shaoqing Ren, Kaiming He, Ross Girshick и Jian Sun в 2015 году. Исследовательская статья называется "Быстрый R-CNN: к Real-Time обнаружению объектов с помощью региональных сетей предложений", и архивируется в https://arxiv.org/abs/1506.01497. Быстрее R-CNN строится на предыдущих работах, чтобы эффективно классифицировать предложения объектов с помощью глубоких сверточных сетей. По сравнению с предыдущей работой, Более быстрый R-CNN использует сеть предложений региона и не требует внешнего метода для предложений кандидатов в регионе.
Это руководство структурировано в три основных раздела. В первом разделе приводится краткое описание того, как запустить Более быстрый R-CNN в CNTK в предоставленном примере набора данных. Второй раздел содержит подробные сведения обо всех шагах, включая настройку и параметризацию более быстрого R-CNN. В заключительном разделе рассматриваются технические сведения о алгоритме и сети предложений в регионе, чтение и расширение входных данных, а также различные варианты обучения для Ускорения R-CNN.
Быстрый запуск
В этом разделе предполагается, что система настроена для использования API Python CNTK. Далее предполагается, что вы используете Python 3.5 в Windows или 3.5/3.6 в Linux. Подробные инструкции см. в пошаговые инструкции. Чтобы запустить более быстрый R-CNN, установите следующие дополнительные пакеты в среде cntk Python.
pip install opencv-python easydict pyyaml
Запуск примера toy
Мы используем набор данных о том, что образы, полученные из холодильника, используются для демонстрации Fast R-CNN (аналогично примеру Fast R-CNN). Набор данных и предварительно обученная модель AlexNet можно скачать, выполнив следующую команду Python из папки Examples/Image/Detection/FastRCNN:
python install_data_and_model.py
После выполнения скрипта под папкой Examples/Image/DataSets/Grocery
будет установлен набор данных toy. Модель AlexNet будет загружена в папку PretrainedModels
.
Рекомендуется хранить скачанные данные в соответствующей папке, так как файлы конфигурации предполагают, что расположение по умолчанию.
Обучение и оценка более быстрого запуска R-CNN
python run_faster_rcnn.py
Результаты комплексного обучения в Продуктовой программе с помощью AlexNet в качестве базовой модели должны выглядеть примерно так:
AP for gerkin = 1.0000
AP for butter = 1.0000
AP for joghurt = 1.0000
AP for eggBox = 1.0000
AP for mustard = 1.0000
AP for champagne = 1.0000
AP for orange = 1.0000
AP for water = 0.5000
AP for avocado = 1.0000
AP for tomato = 1.0000
AP for pepper = 1.0000
AP for tabasco = 1.0000
AP for onion = 1.0000
AP for milk = 1.0000
AP for ketchup = 0.6667
AP for orangeJuice = 1.0000
Mean AP = 0.9479
Визуализация прогнозируемых ограничивающих прямоугольник и меток на изображениях, открытых FasterRCNN_config.py
из папки и заданных FasterRCNN
__C.VISUALIZE_RESULTS = True
Образы будут сохранены в папке FasterRCNN/Output/Grocery/
при запуске python run_faster_rcnn.py
.
Пошаговые инструкции
Установка
Чтобы запустить код в этом примере, требуется среда Python CNTK (см. здесь справку по настройке). Установите следующие дополнительные пакеты в среде Python cntk.
pip install opencv-python easydict pyyaml
Предварительно скомпилированные двоичные файлы для регрессии ограничивающего прямоугольного поля и не максимального подавления
Examples\Image\Detection\utils\cython_modules
Папка содержит предварительно скомпилированные двоичные файлы, необходимые для запуска более быстрого R-CNN. Версии, которые сейчас содержатся в репозитории, — это Python 3.5 для Windows и Python 3.5, 3.6 для Linux, все 64-разрядные версии. Если вам нужна другая версия, ее можно скомпилировать, выполнив описанные ниже действия.
- Linux: https://github.com/rbgirshick/py-faster-rcnn
- Windows: https://github.com/MrGF/py-faster-rcnn-windows
Скопируйте созданные cython_bbox
двоичные файлы и cpu_nms
(или) gpu_nms
из $FRCN_ROOT/lib/utils
$CNTK_ROOT/Examples/Image/Detection/utils/cython_modules
.
Пример модели данных и базовых показателей
Мы используем предварительно обученную модель AlexNet в качестве основы для обучения Faster-R-CNN (для VGG или других базовых моделей см. использование другой базовой модели. Пример набора данных и предварительно обученной модели AlexNet можно скачать, выполнив следующую команду Python из папки FastRCNN :
python install_data_and_model.py
- Узнайте, как использовать другую базовую модель
- Узнайте, как запустить более быстрый R-CNN на данных Pascal VOC
- Узнайте, как запустить более быстрый R-CNN на собственных данных
Конфигурация и параметры
Параметры группируются в три части:
- Параметры детектора (см. )
FasterRCNN/FasterRCNN_config.py
- Параметры набора данных (см. пример
utils/configs/Grocery_config.py
) - Параметры базовой модели (см. пример
utils/configs/AlexNet_config.py
)
Три части загружаются и объединяются в get_configuration()
метод в run_faster_rcnn.py
. В этом разделе мы рассмотрим параметры детектора. Здесь описаны параметры набора данных, параметры базовой модели. В следующем примере мы рассмотрим содержимое FasterRCNN_config.py
сверху вниз. В конфигурации используется EasyDict
пакет, позволяющий легко обращаться к вложенным словарям.
# If set to 'True' training will be skipped if a trained model exists already
__C.CNTK.MAKE_MODE = False
# E2E or 4-stage training
__C.CNTK.TRAIN_E2E = True
# set to 'True' to use deterministic algorithms
__C.CNTK.FORCE_DETERMINISTIC = False
# set to 'True' to run only a single epoch
__C.CNTK.FAST_MODE = False
# Debug parameters
__C.CNTK.DEBUG_OUTPUT = False
__C.CNTK.GRAPH_TYPE = "png" # "png" or "pdf"
# Set to True if you want to store an eval model with native UDFs (e.g. for inference using C++ or C#)
__C.STORE_EVAL_MODEL_WITH_NATIVE_UDF = False
Первый блок параметров содержит инструкции более высокого уровня, касающиеся процесса обучения. __C.CNTK.TRAIN_E2E
позволяет выбрать сквозную или 4-этапную схему обучения. Здесь описаны сведения о двух схемах обучения. __C.CNTK.FAST_MODE = True
выполняется только одна эпоха; Полезно проверить, работает ли программа установки, и все параметры верны. __C.CNTK.DEBUG_OUTPUT = True
создает дополнительное сообщение отладки в выходных данных консоли. В нем также отображаются графы вычислений CNTK для моделей обучения и eval (обратите внимание на требования к построениям графов CNTK). Полученные графы хранятся в папке FasterRCNN/Output
. __C.STORE_EVAL_MODEL_WITH_NATIVE_UDF = True
будет хранить вторую модель оценки, которая использует только машинный код (без слоев Python). Например, эту модель можно загрузить и оценить с помощью C++ или C#.
# Learning parameters
__C.CNTK.L2_REG_WEIGHT = 0.0005
__C.CNTK.MOMENTUM_PER_MB = 0.9
# The learning rate multiplier for all bias weights
__C.CNTK.BIAS_LR_MULT = 2.0
# E2E learning parameters
__C.CNTK.E2E_MAX_EPOCHS = 20
__C.CNTK.E2E_LR_PER_SAMPLE = [0.001] * 10 + [0.0001] * 10 + [0.00001]
Второй блок содержит параметры обучения. Это в основном обычные параметры обучения CNTK. Единственным исключением является __C.CNTK.BIAS_LR_MULT
мультипликатор скорости обучения, используемый для всех предвзятости в сети. Он по сути обучает предвзятые отклонения с дважды текущей скоростью обучения, которая также делается в исходном коде Более быстрый R-CNN. Количество эпох и частоты обучения на выборку указывается отдельно для двух различных схем обучения (4-этапные параметры не указаны выше).
# Maximum number of ground truth annotations per image
__C.INPUT_ROIS_PER_IMAGE = 50
__C.IMAGE_WIDTH = 850
__C.IMAGE_HEIGHT = 850
# Sigma parameter for smooth L1 loss in the RPN and the detector (DET)
__C.SIGMA_RPN_L1 = 3.0
__C.SIGMA_DET_L1 = 1.0
# NMS threshold used to discard overlapping predicted bounding boxes
__C.RESULTS_NMS_THRESHOLD = 0.5
# all bounding boxes with a score lower than this threshold will be considered background
__C.RESULTS_NMS_CONF_THRESHOLD = 0.0
# Enable plotting of results generally / also plot background boxes / also plot unregressed boxes
__C.VISUALIZE_RESULTS = False
__C.DRAW_NEGATIVE_ROIS = False
__C.DRAW_UNREGRESSED_ROIS = False
# only for plotting results: boxes with a score lower than this threshold will be considered background
__C.RESULTS_BGR_PLOT_THRESHOLD = 0.1
__C.INPUT_ROIS_PER_IMAGE
указывает максимальное количество заметок правды земли на изображение. В настоящее время для CNTK требуется задать максимальное число. Если есть меньше заметок, они будут заполнены внутри. __C.IMAGE_WIDTH
и __C.IMAGE_HEIGHT
являются измерениями, которые используются для изменения размера и заполнения входных изображений. __C.RESULTS_NMS_THRESHOLD
— это порог NMS, используемый для отмены перекрывающихся прогнозируемых ограничивающих прямоугольника в оценке. Более низкий порог дает меньше удалений и, следовательно, более прогнозируемые ограничивающие прямоугольники в окончательных выходных данных.
# Use horizontally-flipped images during training?
__C.TRAIN.USE_FLIPPED = True
# If set to 'True' conv layers weights from the base model will be trained, too
__C.TRAIN_CONV_LAYERS = True
# RPN parameters
# IOU >= thresh: positive example
__C.TRAIN.RPN_POSITIVE_OVERLAP = 0.7
# IOU < thresh: negative example
__C.TRAIN.RPN_NEGATIVE_OVERLAP = 0.3
# If an anchor statisfied by positive and negative conditions set to negative
__C.TRAIN.RPN_CLOBBER_POSITIVES = False
# Max number of foreground examples
__C.TRAIN.RPN_FG_FRACTION = 0.5
# Total number of examples
__C.TRAIN.RPN_BATCHSIZE = 256
# NMS threshold used on RPN proposals
__C.TRAIN.RPN_NMS_THRESH = 0.7
# Number of top scoring boxes to keep before apply NMS to RPN proposals
__C.TRAIN.RPN_PRE_NMS_TOP_N = 12000
# Number of top scoring boxes to keep after applying NMS to RPN proposals
__C.TRAIN.RPN_POST_NMS_TOP_N = 2000
# Proposal height and width both need to be greater than RPN_MIN_SIZE (at orig image scale)
__C.TRAIN.RPN_MIN_SIZE = 16
__C.TRAIN.USE_FLIPPED = True
будет дополнять обучающие данные, перевернув все изображения каждой другой эпохи, т. е. первая эпоха имеет все регулярные изображения, вторая — все изображения перевернуты, и т. д. __C.TRAIN_CONV_LAYERS
определяет, будут ли свертальные слои из входных данных на карту сверточных признаков обучены или исправлены. Исправление коэффициентов конвового слоя означает, что весы из базовой модели принимаются и не изменяются во время обучения. (Вы также можете указать, сколько уровней conv требуется обучить, см. раздел "Использование другой базовой модели". Для параметров rpn обратитесь к комментариям рядом с их определением или обратитесь к исходному исследовательском документу для получения дополнительных сведений. Также для следующих параметров детектора:
# Detector parameters
# Minibatch size (number of regions of interest [ROIs]) -- was: __C.TRAIN.BATCH_SIZE = 128
__C.NUM_ROI_PROPOSALS = 128
# Fraction of minibatch that is labeled foreground (i.e. class > 0)
__C.TRAIN.FG_FRACTION = 0.25
# Overlap threshold for an ROI to be considered foreground (if >= FG_THRESH)
__C.TRAIN.FG_THRESH = 0.5
# Overlap threshold for an ROI to be considered background (class = 0 if
# overlap in [LO, HI))
__C.TRAIN.BG_THRESH_HI = 0.5
__C.TRAIN.BG_THRESH_LO = 0.0
# Normalize the targets using "precomputed" (or made up) means and stdevs
__C.BBOX_NORMALIZE_TARGETS = True
__C.BBOX_NORMALIZE_MEANS = (0.0, 0.0, 0.0, 0.0)
__C.BBOX_NORMALIZE_STDS = (0.1, 0.1, 0.2, 0.2)
Запуск более быстрого R-CNN на Pascal VOC
Чтобы скачать данные Pascal и создать файлы заметок для Pascal в формате CNTK, выполните следующие скрипты:
python Examples/Image/DataSets/Pascal/install_pascalvoc.py
python Examples/Image/DataSets/Pascal/mappings/create_mappings.py
dataset_cfg
Изменение метода run_faster_rcnn.py
на get_configuration()
from utils.configs.Pascal_config import cfg as dataset_cfg
Теперь вы намерены обучать данные Pascal VOC 2007 с помощью python run_faster_rcnn.py
. Будьте осторожны, что обучение может занять некоторое время.
Более быстрый запуск R-CNN на основе собственных данных
Подготовка собственных данных и аннотирование их с помощью ограничивающих прямоугольников с наземными истинами описывается в описании обнаружения объектов с помощью Fast R-CNN. После хранения образов в описанной структуре папок и примечаниях к ним выполните команду
python Examples/Image/Detection/utils/annotations/annotations_helper.py
после изменения папки в этом скрипте на папку данных. Наконец, создайте MyDataSet_config.py
в папке utils\configs
следующие существующие примеры, как в этом фрагменте кода:
...
# data set config
__C.DATA.DATASET = "YourDataSet"
__C.DATA.MAP_FILE_PATH = "../../DataSets/YourDataSet"
__C.DATA.CLASS_MAP_FILE = "class_map.txt"
__C.DATA.TRAIN_MAP_FILE = "train_img_file.txt"
__C.DATA.TRAIN_ROI_FILE = "train_roi_file.txt"
__C.DATA.TEST_MAP_FILE = "test_img_file.txt"
__C.DATA.TEST_ROI_FILE = "test_roi_file.txt"
__C.DATA.NUM_TRAIN_IMAGES = 500
__C.DATA.NUM_TEST_IMAGES = 200
__C.DATA.PROPOSAL_LAYER_SCALES = [8, 16, 32]
...
__C.CNTK.PROPOSAL_LAYER_SCALES
используется в generate_anchors()
(см. ).utils/rpn/generate_anchors.py
Начиная с базового размера 16
трех привязок с пропорциями 0.5, 1.0
и 2.0
создаются в результате (8 x 24, 16 x 16, 24 x 8
). Они умножаются на каждый масштаб слоя предложения, что приводит к девяти привязкам (64 x 192
... , ). 768 x 256
Это абсолютные пиксельные координаты w.r.t. входного изображения. Все привязки применяются в каждой пространственной позиции карты сверточных признаков для создания интересующих кандидатов областей. Адаптируйте эти уровни предложений в соответствии с размерами объектов в наборе данных и размером входного изображения, который вы используете. Например, для набора данных Продуктового продукта, который мы используем__C.DATA.PROPOSAL_LAYER_SCALES = [4, 8, 12]
, и размер 850 x 850
входного изображения (см. ).utils/configs/Grocery_config.py
Чтобы обучить и оценить более быстрый R-CNN на основе данных, измените dataset_cfg
метод run_faster_rcnn.py
на get_configuration()
from utils.configs.MyDataSet_config import cfg as dataset_cfg
и выполните команду python run_faster_rcnn.py
.
Технические сведения
Как и большинство детекторов объектов на основе DNN Быстрее R-CNN использует обучение передачи. Она начинается с базовой модели, которая является моделью, обученной для классификации изображений. Базовая модель разделена на две части, первая из которых состоит из всех сверточных слоев до (и за исключением) последнего слоя пула, а вторая часть — оставшаяся часть сети из (и исключение) последнего слоя пула до (снова исключая) окончательный уровень прогнозирования. Выходные данные первой части иногда называются картой сверточных признаков. Он используется в качестве входных данных на уровень пула roi, который выполняет операцию объединения с частью входной карты, которая соответствует предложениям региона на исходном изображении. Предложения по регионам являются вторыми входными данными на уровень пула roi. В Более быстрых R-CNN эти предложения создаются небольшой подсетью, называемой сетью предложений региона (RPN, см. следующий раздел).
Выходные данные уровня пула roi всегда будут иметь одинаковый фиксированный размер, так как он объединяет любые входные данные (сверточная карта признаков + предложение региона) к одному и тому же размеру выходных данных. Обратите внимание, что размер входных данных, т. е. размер сверточных подвигов карты и, следовательно, размер входного изображения может быть произвольным. Для обучения алгоритму используются четыре функции потери, два для RPN и два для детектора (см. также следующий раздел). Следующий метод содержится FasterRCNN_train.py
и показывает высокоуровневую конструкцию модели Ускорения R-CNN. Полный код и см. в FasterRCNN_train.py
utils/rpn/rpn_helpers.py
ней.
def create_faster_rcnn_model(features, scaled_gt_boxes, dims_input, cfg):
# Load the pre-trained classification net and clone layers
base_model = load_model(cfg['BASE_MODEL_PATH'])
conv_layers = clone_conv_layers(base_model, cfg)
fc_layers = clone_model(base_model, [cfg["MODEL"].POOL_NODE_NAME], [cfg["MODEL"].LAST_HIDDEN_NODE_NAME], clone_method=CloneMethod.clone)
# Normalization and conv layers
feat_norm = features - Constant([[[v]] for v in cfg["MODEL"].IMG_PAD_COLOR])
conv_out = conv_layers(feat_norm)
# RPN and prediction targets
rpn_rois, rpn_losses = create_rpn(conv_out, scaled_gt_boxes, dims_input, cfg)
rois, label_targets, bbox_targets, bbox_inside_weights = \
create_proposal_target_layer(rpn_rois, scaled_gt_boxes, cfg)
# Fast RCNN and losses
cls_score, bbox_pred = create_fast_rcnn_predictor(conv_out, rois, fc_layers, cfg)
detection_losses = create_detection_losses(...)
loss = rpn_losses + detection_losses
pred_error = classification_error(cls_score, label_targets, axis=1)
return loss, pred_error
После обучения сеть преобразуется в модель оценки, удаляя все части, которые не требуются для оценки, например функции потери. Окончательная модель оценки имеет три выходных данных (дополнительные сведения см. в FasterRCNN_train.py
следующих статьяхcreate_faster_rcnn_eval_model()
):
rpn_rois
— абсолютные пиксельные координаты кандидатов roiscls_pred
- вероятности класса для каждого roIbbox_regr
— коэффициенты регрессии на класс для каждого ROI.
Чтобы использовать модель оценки из Python, можно использовать из FasterRCNN_Evaluator
FasterRCNN_eval.py
. Вы можете загрузить модель один раз, а затем оценить отдельные изображения по мере использования. Метод process_image()
вычислителя принимает путь к изображению в качестве аргумента, вычисляет модель на этом изображении и применяет регрессию ограничивающего прямоугольного поля к результирующим роузам. Он возвращает регрессированные roIs и соответствующие вероятности класса:
evaluator = FasterRCNN_Evaluator(model, cfg)
regressed_rois, cls_probs = evaluator.process_image(img_path)
Сеть предложений в регионе
Быстрее R-CNN использует так называемое предложение региона netwrok (RPN), которое создает интересующие кандидаты регионы (ROIs) на основе входного изображения. Это выступает против Fast R-CNN, который требует, чтобы предложения региона были предоставлены внешним источником. RPN по сути строится тремя слоями сверток и новым слоем, называемым слоем предложений. Новые слои реализуются как определяемая пользователем функция (UDF) в Python или C++ (см. дополнительные сведения ниже). Код Python, создающий RPN в CNTK, находится в utils/rpn/rpn_helpers.py
папке utils/rpn
.
Входные данные для RPN — это сверточная карта признаков, то же самое, что входные данные на уровень пула ROI. Эти входные данные передаются в первый слой свертки RPN, и результат распространяется на два других слоя сверток. Один из последних прогнозирует оценки классов для каждого региона кандидата, т. е. для каждой привязки в каждой пространственной позиции (9 привязок x 2 оценивает ширину x высоту x). Эти два показателя преобразуются (с помощью узла softmax) в оценки объектности для каждого кандидата, которые интерпретируются как вероятность того, что регион-кандидат содержит объект переднего плана или нет. Другой сверточный слой прогнозирует коэффициенты регрессии для фактической позиции ROI еще раз для каждого кандидата (9 якорей x 4 коэффициента x ширины x высоты).
Коэффициенты регрессии и оценки объектности (вероятности переднего плана и фона) передаются на уровень предложений. Этот слой сначала применяет коэффициенты регрессии к созданным привязкам, обрезает результат к границам изображения и отфильтровывает области кандидатов, которые слишком малы. Затем он сортирует кандидатов по вероятности переднего плана, применяет не максимальное подавление (NMS) для уменьшения числа кандидатов и, наконец, выборки требуемого количества roIs для его выходных данных.
Во время обучения Более быстрый R-CNN требуется два дополнительных новых слоя: целевой слой привязки и целевой слой предложения. Целевой слой привязки создает целевые значения для оценки объектности и коэффициенты регрессии RPN, используемые в функциях потери RPN. Аналогичным образом целевой слой предложения создает метки целевого класса для roIs и коэффициенты целевой регрессии на класс для окончательного детектора, который используется в функциях потери детектора.
Во время оценки требуется только уровень предложений (так как не требуются целевые объекты для функций потери). Уровень предложений в CNTK доступен в Python, а также на C++, целевые слои в настоящее время доступны только в Python. Таким образом, обучение Более быстрой R-CNN в настоящее время необходимо выполнить из API Python. Для хранения модели оценки после обучения, использующего набор __C.STORE_EVAL_MODEL_WITH_NATIVE_UDF = True
реализации уровня собственных предложений.
Источник чтения и мини-пакета
При масштабировании изображений или перелистывания изображений для расширения данных также необходимо применить те же преобразования к заметкам о действительности на земле. (Перелистывание также должно применяться к кэшируемым предложениям в 4-этапном обучении, см. следующий раздел.) Так как эти присоединенные преобразования изображений и заметок в настоящее время не поддерживаются встроенными средствами чтения CNTK, мы используем пользовательское средство чтения Python и UserMinibatchSource
более быстрый R-CNN. Они содержатся в utils/od_reader.py
и utils/od_mb_source.py
соответственно.
Обучение E2E и 4 этапа
Более быстрый исследовательский документ R-CNN описывает два метода обучения сети. Комплексное обучение обучает всю сеть в одном обучении с использованием всех четырех функций потери (потеря rpn регрессии, потеря объекта rpn, потеря регрессии детектора, потеря класса детектора). Мы используем комплексное обучение по умолчанию, вы можете выбрать между ними, задав соответствующий параметр__C.CNTK.TRAIN_E2E
.FasterRCNN_config.py
Схема обучения на 4 этапе чередуется между обучением только сети предложений региона (сохранение детектора фиксированной) и обучением только детектора (исправление весов RPN). Эта схема обучения реализована в train_faster_rcnn_alternating()
FasterRCNN_train.py
. Это немного более сложно и часто использует клонирование частей модели, чтобы обеспечить замораживание и обучение весов выборочно. Кроме того, в 4-м этапе обучения предложения из RPN буферизуются после этапов 1 и 3 и используются на последующем этапе.
Использование другой базовой модели
Чтобы использовать другую базовую модель, необходимо выбрать другую конфигурацию модели в методе get_configuration()
run_faster_rcnn.py
. Две модели поддерживаются сразу:
# for VGG16 base model use: from utils.configs.VGG16_config import cfg as network_cfg
# for AlexNet base model use: from utils.configs.AlexNet_config import cfg as network_cfg
Чтобы скачать модель VGG16, используйте сценарий скачивания в <cntkroot>/PretrainedModels
:
python download_model.py VGG16_ImageNet_Caffe
Если вы хотите использовать другую базовую модель, необходимо скопировать файл конфигурации utils/configs/VGG16_config.py
и изменить его в соответствии с базовой моделью:
# model config
__C.MODEL.BASE_MODEL = "VGG16"
__C.MODEL.BASE_MODEL_FILE = "VGG16_ImageNet_Caffe.model"
__C.MODEL.IMG_PAD_COLOR = [103, 116, 123]
__C.MODEL.FEATURE_NODE_NAME = "data"
__C.MODEL.LAST_CONV_NODE_NAME = "relu5_3"
__C.MODEL.START_TRAIN_CONV_NODE_NAME = "pool2" # __C.MODEL.FEATURE_NODE_NAME
__C.MODEL.POOL_NODE_NAME = "pool5"
__C.MODEL.LAST_HIDDEN_NODE_NAME = "drop7"
__C.MODEL.FEATURE_STRIDE = 16
__C.MODEL.RPN_NUM_CHANNELS = 512
__C.MODEL.ROI_DIM = 7
Для изучения имен узлов базовой модели можно использовать plot()
метод из cntk.logging.graph
. Обратите внимание, что модели ResNet в настоящее время не поддерживаются, так как объединение roi в CNTK пока не поддерживает среднее пулирование roi.