【问题标题】:No detections using custom SSD Mobilenet model with OpenCV DNN module使用带有 OpenCV DNN 模块的自定义 SSD Mobilenet 模型没有检测到
【发布时间】:2021-10-14 18:05:31
【问题描述】:

我一直在 Raspberry Pi 4 上使用 OpenCV 的 DNN 模块,它需要一个冻结的推理图(.pb 文件)和相应的文本图文件(.pbtxt 文件)。

使用来自TF1 model zoo 的预训练ssd_mobilenet_v3_small_coco 并使用来自OpenCVtf_text_graph_ssd.py 脚本生成pbtxt 文件,这可以在Raspberry 上成功运行平均 5 FPS。

然后我想尝试通过只为一个班级训练这个模型来加快这个速度。 在解决了错误和依赖版本之后,我开始接受培训。我建立了一个数据集,标记了图像,创建了所有必要的文件。使用 ssdlite_mobilenet_v3_small_320x320_coco.config from sample configs设置所有路径,将微调检查点指向模型文件夹,将类数设置为 1,批量设置为 16.

model_train.py 运行,它似乎产生了结果,尽管我不太确定如何解释它们。我已经对其进行了 100K 步的训练,然后导出了一个冻结的推理图,并再次使用 tf_text_graph_ssd.py 生成了一个 pbtxt 文件。 我在我的树莓派应用程序上运行这些,它没有抛出任何错误,运行速度为 10FPS,但绝对没有检测到。

所以要么我在训练中做错了,要么在导出或 pbtxt 生成中做错了。不知道从这里去哪里。希望有人能指出我正确的方向。以下是 Tensorboard 输出的一些截图。

损失图:

精度图:

评估图像选项卡:

【问题讨论】:

    标签: python tensorflow opencv machine-learning neural-network


    【解决方案1】:

    回答我自己的问题,因为我确实弄明白了,它可能对其他人有所帮助。

    我试图使用export_inference_graph.py 生成的冻结推理图并尝试从中生成文本图。)

    事实上,我应该一直使用export_tflite_ssd_graph.py 导出冻结推理图,然后使用此冻结推理图和tf_text_graph_ssd.py 生成相应的文本图。

    一旦我这样做了,我就有了正确的 pb 和 pbtxt,可以完美地与 OpenCV 的 DNN 模块一起运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2021-02-02
      • 2018-03-22
      • 1970-01-01
      相关资源
      最近更新 更多