RoboMaster 小车目标识别方案-视觉组 [CPU 0.018s]

开始做的动机

某日在RoboMaster论坛上,看到有小伙伴使用TensorFlow Object Detection API 制作了小车装甲板识别的帖子,刚好最近在看人脸识别网络的内容,识别小车的装甲板和识别人脸是不是有什么关联呢?

我的代码:链接: https://pan.baidu.com/s/1lFGqNJYdTyVuCztG8LSXow 密码: ajqo

数据集

看了之前提到的文章,我得到一个很好的启示:要把官方数据集内含有小车的部分截取下来作为数据集比较靠谱,因为原始数据集是1920x1080的大小,我们截取的小车大于在400x300左右,较小的尺寸方便训练

把官方文件夹内的一个文件夹移动到,我的项目中,然后再使用ProcessXML.py解析数据集用于训练

label.txt内前面是图片的名字后面的数字每四个一组分别为[x1,y1,x2,y2]左上角和右下角

[官方数据集下载地址]:链接: https://pan.baidu.com/s/1knd-TlmdDaSZsLYuNQ8ASA 密码: 27oq

截取之后的效果图:(在validation_data.py可以查看效果)
RoboMaster 小车目标识别方案-视觉组 [CPU 0.018s]_第1张图片
那么首先就要读懂官方数据集的格式,方便我们做裁剪
RoboMaster 小车目标识别方案-视觉组 [CPU 0.018s]_第2张图片
这是官方数据集的一个文件排布,四个文件夹是一场比赛的截图和对应的标签,我们随便从一个文件里入手,内部打开是XML文件和对应的图片,使用python对应的XML这个包可以轻松地把我们需要的信息解析出来,我也写了代码

随便找个人脸识别模型改改看

我参照了这个人脸识别算法:传送门


可以看到,它是框取了人脸位置外加5个landmark定位,对于小车这个识别来说,框取就好了landmark可能不需要,所以我们要观察一下他的网络输出和损失函数做出对应的修改,其实说是修改,就是仅仅删除而已,把算lanmark的部分删掉,然后再观察一下网络结构,这个网络结构还是很简单的,用了FPN得到三种不同深度下提取的feaure map,再分别用对应的Head去提取,所以简单地删掉LandmarkHead就好了

开始训练

在这里插入图片描述
大约80多个epoch
由于我在家里,实在不想训练完整过程,加上数据集我是解析了大约500张,所以中途停止了训练,把训练过程保存的模型拿来测试一下
RoboMaster 小车目标识别方案-视觉组 [CPU 0.018s]_第3张图片
这张图片是选取原贴公众号里面的一张图片,并不是训练集里面的,可以看到训练一半时可以达到需求

项目内文件的功能

  • ProcessXML.py:解析官方数据集
  • train.py :用于训练
  • detect.py:用于检测
  • validation_data.py:用于验证分割好的数据集

参考:
RM论坛上的原贴
人脸识别代码

你可能感兴趣的:(杂记)