我正在使用Tensorflow的对象检测API训练神经网络来检测汽车。我使用以下senddex的youtube视频来学习和执行该过程。
https://www.youtube.com/watch?v=srPndLNMMpk&t=65s
他的视频的文字版本:
他的系列的第1至6部分。
我的训练数据有约300张图像测试数据有20张图像
由于我使用的是转移学习的概念,所以我选择了ssd_mobilenet_v1.model。
Tensorflow版本1.10(在CPU上)Python版本3.6
我训练了大约8000步,损失了约1。
一切正常,直到我尝试导出推理图。
我运行以下命令:
python3 export_inference_graph.py \
--input_type image_tensor \
--pipeline_config_path training/ssd_mobilenet_v1_pets.config \
--trained_checkpoint_prefix training/model.ckpt-7882 \
--output_directory car_inference_graph
执行此命令后,我得到
警告:
WARNING:tensorflow:From
/home/mydir/Desktop/models/research/object_detection/exporter.py:280:
get_or_create_global_step (from
tensorflow.contrib.framework.python.ops.variables) is deprecated and will be
removed in a future version.
Instructions for updating:
Please switch to tf.train.get_or_create_global_step
WARNING:tensorflow:From
/home/mydir/Desktop/models/research/object_detection/exporter.py:434:
print_model_analysis (from tensorflow.contrib.tfprof.model_analyzer) is
deprecated and will be removed after 2018-01-01.
Instructions for updating:
Use `tf.profiler.profile(graph, run_meta, op_log, cmd, options)`. Build
`options` with `tf.profiler.ProfileOptionBuilder`. See README.md for details
106 ops no flops stats due to incomplete shapes.
Parsing Inputs...
Incomplete shape.
然后是此后的模型报告列表。 (如果需要,我可以发布)
我虽然导出了car_inference_graph文件夹,但其中包含检查点文件等。里面应该有它。
但是当我在汽车图像(测试图像或新图像)上运行此模型时,它无法检测到汽车。即没有边界框!
我不确定此警告是否影响了检测,如果确实如此,请帮助我解决问题!
谢谢!
PS:为帮助确定“无边界框”的原因,值得一提的是,它甚至没有在训练模型的图像中显示汽车周围的边界框。这意味着推断图或边界框函数本身的输出存在问题。
我刚刚发现“ .pbtxt”文件的名称是:macncheese,而不是名称:car。碰巧是引起问题的原因吗?
答案 0 :(得分:1)
在标记过程中使用的标签名称和pbtxt条目应完全匹配。对于您的情况,由于名称不同,您将不得不在pbtxt文件中更改名称并重新运行培训。
答案 1 :(得分:0)
有趣的是,看看您是否已解决此问题-我遵循了同一教程,并认为我遇到了完全相同的问题。
只有我有正确的pbtxt文件。我对造成这种情况的想法一无所知,接下来的步骤将是尝试其他模型,并可能移出旧文件夹。