tensorflow红绿灯检测训练完模型无法识别

问题遇到的现象和发生背景

训练完模型无法正常识别
pre-trained model用的这个

img

问题相关代码,请勿粘贴截图

代码运行都没有问题

运行结果及报错内容

测试结果

img

训练损失

img

测试准确率。。

img

我的解答思路和尝试过的方法

额,尝试增加了训练次数好像不太行
是不是我选的训练好的模型不适合训练我这个

我想要达到的结果

能识别红绿灯

上面那个是禁止通行指示牌识别不出来,这个是红灯的也识别不出。

img

你可以用YOLO模型试试

朋友,你这个感觉很像我们当初电赛那个数字识别中途遇到的情况,你试着将检查点模型(.ckpt)保存为.pb文件,再回到TensorFlow目标检测文件夹,并将export_inference_graph.py文件复制到包含模型配置文件的文件夹中。
如果你的操作也有类似的,那估计是其他问题,你这个其实基本实现红绿灯分类的功能,但是模型数据不够,那就跟我们去年一样,得自己去创建一个自己的数据集并将其转换为TFRecord文件,修改模型配置文件,并开始训练模型。接下来,您需要保存模型并将其部署到项目中。

可以参考这个写好的程序

你这loss问题很大,虽然整体有在下降,但是震荡的厉害,问题可能出在数据集,不知道你的数据集是否足够大,标签是否正确,从map和iou来看,你的网络的大输出口的pr不错,但是中小输出就不行了,你的数据集里面的交通标志占据整张图片百分比比较大的多,大图里面小目标少是吗,不然不会出现这么悬殊的差距的。如果数据集没有问题的话,尝试下增大下batch size,这个太小也会这样。
另外你需要检查一下是有检测到结果,没有绘制,还是网络检测不到,尝试下将你的得分阈值降低看看,0.8在目标检测里面算是一个很高的阈值了,除非你的数据分布较为统一,检测到训练集的图片,不然这个阈值真的很大了。
最后就是你的网络选择的问题,如果是开源网络,作者应该有和其他网络的对比,你看下作者的对比是否有足够高的map。如果你确认目前的网络不适合你的话,目前来说,目标检测效果比较好的就是yolo系列了,如果你代码功底好,darknet熟悉推荐yolov4,如果你像偷懒,马上能上手的话推荐yolov5

原因
可能是数据集太少和数据预处理的问题

解决方法
1、建议增大数据集
2、对数据进行预处理下。

建议使用pytorch yolov5

利用CNN进行红绿灯识别
用开源数据集训练
https://blog.csdn.net/qibin0506/article/details/87818281