如何使用Tensorflow';s对象检测API?

如何使用Tensorflow';s对象检测API?,tensorflow,deep-learning,conv-neural-network,object-detection-api,Tensorflow,Deep Learning,Conv Neural Network,Object Detection Api,我正在训练中使用 在该文件中,定义冻结层以在训练中微调模型。 我需要在微调中尝试改变冻结层 例如,如果我使用,我可以在哪里更改冻结层?您当然可以这样做 通过读取用于培训的文件,有一个名为冻结变量的字段,这应该是一个包含所有要冻结的变量的列表,例如,在培训期间排除这些变量 假设要冻结第一个块的第一个单元中第一个瓶颈的权重,可以通过添加 freeze_variables: ["resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/weights"] 因此,您

我正在训练中使用

在该文件中,定义冻结层以在训练中微调模型。 我需要在微调中尝试改变冻结层


例如,如果我使用,我可以在哪里更改冻结层?

您当然可以这样做

通过读取用于培训的文件,有一个名为
冻结变量
的字段,这应该是一个包含所有要冻结的变量的列表,例如,在培训期间排除这些变量

假设要冻结第一个块的第一个单元中第一个瓶颈的权重,可以通过添加

freeze_variables: ["resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/weights"]
因此,您的配置文件如下所示:

train_config: {
  batch_size: 1
  freeze_variables: ["resnet_v1_50/block1/unit_1/bottleneck_v1/conv1/weights"]
  ...
通过检查tensorflow图,可以验证权重实际上已冻结

如图所示,配重不再具有
列车
操作

通过为
冻结变量
选择特定的模式,您可以非常灵活地冻结变量(您可以从tensorflow图中获取图层名称)


顺便说一句,是实际的过滤操作

如果你冻结了一个图层,在训练期间是否应该对其进行微调?你问题的标题不是很清楚。冻结层不应在训练期间进行修改。您的意思可能是
如何使用TF OD API在培训中冻结层?
谢谢您的解释。您说过我们可以在配置文件中包含。但是在这个配置文件中
https://github.com/tensorflow/models/blob/master/research/object_detection/samples/configs/faster_rcnn_resnet50_coco.config
,没有这样的
冻结层
实现。这是我的问题,在Tensorflow中,冻结是在哪里实现的,用于
faster\u rcnn\u resnet50
。哦,我误解了这一点。但是由于proto支持它,即使示例配置不包含它,您也可以添加它。您的意思是
Tensorflow异议检测API
不会将学习转移到几个层?如果没有这样的
freeze\u变量,它将重新传输所有层:在train config文件中,是吗?不,这不是我的意思。它可以将学习转移到任何层次。如果没有
freeze_variables
,所有层的权重将在训练期间更新。@xanjay,我不知道这12的确切含义,但我认为它只是用于语法。如果您查看train.proto,您将看到通常默认值是以[default=…]格式提供的<代码>冻结变量
没有默认值。为了找出可能的值,你可以像我一样,通过查看tensorflow图。实际上,你可以冻结任何可训练变量,唯一的问题是指定确切的变量名。