Я пытаюсь импортировать архитектуру на основе ResNet в качестве средства извлечения для SSD .Поскольку моему приложению требуется работа в реальном времени, я пытался использовать разные глубины ResNet (resnet-10, resnet-16, resnet-24 и т. Д.).
Я прочитал Определение нового Faster R-CNN или SSD Feature Extractor учебник, и попытался провести себя через object_detection/models/ssd_resnet_v1_ppn_feature_extractor
(и fpn тоже).
Дело в том, что я получаю архитектуру resnet-10 (например) из пакета Python tenorflowcv , который реализован через Keras, и я определяю функцию resnet10_base
как переопределение get_resnet , как показано ниже, так что он игнорирует последние слои, которые делают его классификатором.
Мое переопределение get_resnet
:
01 def resnet10_base(model_name='resnet10', root=os.path.join("~", ".tensorflow", " models")):
02 layers = [1,1,1,1]
03 assert (sum(layers) * 2 + 2 == blocks)
04
05 init_block_channels = 64
06 channels_per_layers = [64, 128, 256, 512]
07
08 channels = [[ci] * li for (ci, li) in zip(channels_per_layers, layers)]
09
10 if pretrained:
11 if (model_name is None) or (not model_name):
12 raise ValueError("Parameter `model_name` should be properly initialized fo r loading pretrained model.")
13 from .model_store import download_state_dict
14 net.state_dict, net.file_path = download_state_dict(
15 model_name=model_name,
16 local_model_store_dir_path=root)
17
18 return net
И я не могу понять, как создать функцию extract_features()
, которую запрашивает SSDKerasFeatureExtractor
.Например, мне нужно создать TFSession и запустить там сеть?Или я должен вернуть тензор?Как мне этого добиться?
Заранее спасибо, извините за неудобства.