可以在Faster RCNN Inception v2模型中冻结BoxClassifier吗?

我正在使用TensorFlow对象检测API在自定义数据集上重新训练COCO预训练的Faster Rcnn Inception v2模型,最近发现我的一些模型BoxClassifierLoss在训练期间变得更糟(例如从0.17损失到0.38,经过100个时期后下降到0.24(此后又变得更糟或在没有改善的情况下波动)。

因此,我有兴趣冻结BoxClassifier,以保留看起来更好的初始权重。

我了解到train.proto中有一个'freeze_variables'参数,但是我不确定要确切冻结哪些变量。

qqwainier1 回答:可以在Faster RCNN Inception v2模型中冻结BoxClassifier吗?

您可以冻结model.ckpt个元(检查点文件)文件,这些文件存储在以下位置:

C:\tensorflow1\models\research\object_detection\training

这些检查点文件在训练期间会经常存储,因此当错误减少时,您可以检查该文件的详细信息,然后将同一检查点冻结为最终模型。

要冻结模型,可以使用以下命令:

python export_inference_graph.py --input_type image_tensor --pipeline_config_path training/faster_rcnn_inception_v2_pets.config --trained_checkpoint_prefix training/model.ckpt-XXXX --output_directory inference_graph

XXXX是文件名model.ckpt-XXXX.meta中的数字。 在我的情况下,它是model.ckpt-1970.metaXXXX = 1970

following image中检出我的文件夹结构。

,

据我所知,维诺德的答案与所提问题无关。 如果要冻结模型以导出模型,则可以使用export_inference_graph。 但我知道您希望在培训期间冻结变量

正如您自己提到的那样,您可以在update_trainable_variablesfreeze_variables中指定变量,以便选择哪些变量将被训练而哪些变量将不被训练。 本质上,这些变量被馈送到图形上的filter_variables函数,以便选择要包括在训练中或从训练中排除的变量。从描述中可以看出,它期望使用正则表达式的模式。为了知道变量的名称,包括或不包括它们-您可以检查图形。一种方法是使用TensorBoard的“图形”选项卡。

另一方面,我想说这可能不是您所要解决的方案。在培训课程开始时,自然会期望高损失或增加损失。但是,如果在进行了完整的培训之后,损失有所波动-那么您应该检查波动的幅度。如果波动很小,那是很自然的,如果幅度很大-那么训练配置中可能出了点问题。只能通过更多信息来进一步分析问题出在哪里,例如配置文件,损耗图,数据示例等。

本文链接:https://www.f2er.com/3165887.html

大家都在问