前言

纯粹的装甲板灯条识别的误识别率难以有效降低,考虑在识别出灯条后,做ROI处理截取出数字的区域,进行分类来判断目标是否有效并判断兵种。
疫情在家期间缺少数据,张学长仅能提供一些数字3的图片,我自己也尝试过使用mnist数据集加上人工合成负样本(纯黑图像+盐噪声)作为数据集来训练,效果不佳。
现在拿到了新的数据集,但是由于不是官方的数字贴纸,加上相机型号和场地光线的影响,与机器人实际比赛中获取的数据应该还是有一定出入,后续还需要重新训练。总之先将疫情在家的代码重新整理修改了一遍,提高了易用性,完善了模块结构和代码注释,方便下一次训练和部署。
完整的项目已经放在码云和Github上,更详细的说明参考本目录下的语雀文档。
如果只需要部署在机器人上和雷达站上的话看部署部分即可。生产环境每一帧需要分类的图像可能只有1张或几张甚至没有,不像训练的时候有几千张,这种情况下上GPU可能还不如CPU划算,内存和显存交换的时间都够分类好几次了,选用CPU还是GPU视具体情况而定。
LibTroch和OpenCV联合编译的时候存在一定冲突,这两个库都定义了 Scalar 这个类,因此数字识别相关部分代码请放在 .cpp 文件中;否则放在 .h 文件中的在预编译时会产生冲突
如果还需要训练的话先安装Python 3、PyTorch、CUDA、cuDNN等环境。Windows和Linux均可。

项目链接

码云:https://gitee.com/starrysky9959/Digital-recognition
Github:https://github.com/starrysky9959/digital-recognition