我想使用对象检测API和SLIM(link中的预训练模型来训练ssd inception_v3模型 我尝试使用config训练对象检测ssd inception v3模型:
model {
ssd {
num_classes: 1
image_resizer {
fixed_shape_resizer {
height: 240
width: 320
}
}
feature_extractor {
type: "ssd_inception_v3"
depth_multiplier: 1.0
min_depth: 16
conv_hyperparams {
regularizer {
l2_regularizer {
weight: 3.99999989895e-05
}
}
initializer {
truncated_normal_initializer {
mean: 0.0
stddev: 0.0299999993294
}
}
activation: RELU_6
batch_norm {
decay: 0.999700009823
center: true
scale: true
epsilon: 0.0010000000475
train: true
}
}
override_base_feature_extractor_hyperparams: true
}
...
在创建文件model.ckpt-0。*之后,我停止了过程,加载并打印了所有张量的名称。
之后,我使用
从https://github.com/tensorflow/models/tree/master/research/slim加载了预训练模型reader = pywrap_tensorflow.NewCheckpointReader(os.path.join(folder, 'model.ckpt'))
var_to_shape_map = reader.get_variable_to_shape_map()
当我比较输出时,我发现ssd incpetion v3模型没有很多层次。例如:
InceptionV3 / AuxLogits / Conv2d_2a_5x5 /权重 InceptionV3 / Mixed_7c / Branch_3 / Conv2d_0b_1x1 / weight
在ssd_inception_v3的模型中,我看到了5c之前的混合层。
SSD_inception和SLIM模型中的功能提取器有什么区别?通常,是否可以从SLIM加载分类器中用于分类器的权重进行检测。
答案 0 :(得分:1)
您可以看到ssd_inception_v3_feature_extractor中会发生什么。
它使用inception_v3.inception_v3_base
(请注意_base
)的InceptionV3的'Mixed_5d','Mixed_6e','Mixed_7c'的输出,并创建3个具有512、256、128通道数的附加特征图(此由feature_map_generators.multi_resolution_feature_maps
在feature_map_layout
中发生)。
可以通过配置来加载检测模型的分类器权重:
train_config{
...
fine_tune_checkpoint: <path_to_inception_checkpoint>
fine_tune_checkpoint_type: "classification"
}
当然,检查点必须与您使用的模型匹配,例如ssd_inception_v3
。