使用自定义SSD Mobilenet模型和OpenCV DNN模块进行检测时未发现任何目标

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

使用来自TF1模型动物园的预训练ssd_mobilenet_v3_small_coco模型,并使用来自OpenCVtf_text_graph_ssd.py脚本生成pbtxt文件,这在Raspberry上以平均5 FPS的速度运行良好。

之后,我想通过仅针对一个类别训练这个模型来加速检测过程。经过一番努力解决错误和依赖版本问题后,我终于成功进行了训练。我构建了一个数据集,标记了图像,创建了所有必要的文件。使用来自样本配置ssdlite_mobilenet_v3_small_320x320_coco.config设置了所有路径,将微调检查点指向模型文件夹,将类别数量设置为1,批量大小设置为16

model_train.py运行后似乎产生了结果,尽管我还不太确定如何解读这些结果。我训练了10万步,然后导出了一个冻结的推理图,并再次使用tf_text_graph_ssd.py生成pbtxt文件。我在Raspberry Pi应用上运行这些文件,没有报错,运行速度达到10FPS,但完全没有检测到任何目标。

所以,要么是我在训练过程中出了问题,要么是在导出或生成pbtxt文件的过程中出了问题。我不知道接下来该怎么办。希望有人能指点我正确的方向。下面是一些Tensorboard输出的截图。

损失图表:
损失图表

精度图表:
精度图表

评估图像标签:
评估图像标签


回答:

我自己回答了这个问题,因为我确实找到了解决方法,希望这能帮助到其他人。

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

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

一旦我这样做了,我就得到了正确的pb和pbtxt文件,它们与OpenCV的DNN模块完美运行。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注