Skip to content

4. 算法原理以及算法效果(车载目标检测)

Kehan.Xue edited this page Aug 27, 2020 · 6 revisions

目标检测

目标检测部分包括对机器人检测和装甲板检测,要求准确率和检测帧率可以达到实时效果,我们的目标检测算法基于anchor-base算法框架SSD(Single Shot MultiBox Detector),SSD框架对于轻量级主干网络,小目标检测效果不够理想,但是我们经过结构调整之后,整体算法效果有了惊人提升,我们采用的backbone基于mobilenet-v3,并进行一些改进,使其可以适应size为512×512大小图片输入,并且添加了PaFpn结构,来对输出的多尺度特征层进行融合,令小尺度的特征层具有丰富的语义信息,大尺度特征则有更为丰富的特征信息, 解决了SSD框架小目标检测效果差的问题。


图 4.1 目标检测算法神经网络结构图

Backbone

我们删除了原文中一些block,使得小特征不会在计算中丢失,并且加快了推理速度。


图 4.2 mobilenet-V3 改进版(橙色为特征输出)
### 网络结构
结构层数 ker in hidden out stride acti res
1(conv) 3 3 / 16 2 / /
2(block) 3 16 64 24 2 Relu F
3(block) 5 24 72 40 2 Relu F
4(block) 3 40 240 80 2 hswish F
5(block) 3 80 200 80 1 hswish T
6(block) 3 80 480 112 1 hswish F
7(block) 3 112 672 160 1 hswish F
8(block) 5 160 672 160 2 hsiwsh T
9  (conv) 1 160 / 960 1 / /
extra--layer
10(block) 3 960 256 512 2 / /
11(block) 3 512 128 256 2 / /
12(block) 3 256 128 256 2 / /
13(block) 3 256 64 128 2 / /

Necks

我们在实验过程中发现了无fpn结构网络对于小目标识别效果较差这个问题,Fpn结构可以有效地提升浅层特征的语义信息,同样也可以丰富深层特征的特征信息,使得定位更加精确,相比不采用fpn结构,采用fpn结构之后小目标识别的效果显著提升,经过算法对比,采用pafpn结构对于我们的网络结构检测效果提升明显。更多关于fpn结构的相关信息请查阅相关论文。PaFpn 论文地址


图 4.3 paFpn网络结构图

网络结构

层数 input hidden(down) output(up)
1 672 128 128
2 960 128 128
3 512 128 128
4 256 128 128
5 256 128 128
6 128 128 128

BoxHead

我们的BoxHead结构是对提取的特征进行回归,得到分类结果和包围框结果。


图 4.4 BoxHead 结构图

anchors

anchors锚点, 共计有 4774个

layer priorbox  size
1 [16,16]   [21,21]
2 [40, 40]  [76,76] [13,13] [120,120] [80,80] [20,20]
3 [148, 148] [186,186] [74,74] [105,105] [296,296] [207,207]
4 [236,236] [276,276] [118,118] [168,168] [330,330] [472,472]
5 [324,324][365,365]
6 [412,412][459,459]

数据处理

神经网络的训练数据来自于大疆机甲大师开源数据集,以及在自己场地上录制的部分数据集,在用官方数据集训练完成backbone之后,针对人工智能挑战赛,进行微调boxHead的操作。 由于官方数据集分辨率较高,直接输入,运算量较大,不利于推理加速,因此采用将官方数据集切割为512512大小的样本来进行训练。为了达到多尺度训练效果,训练集中增添了300300大小数据和100*100大小数据。

数据集样例:


图 4.5 DJI Robomaster 开源数据集样例图片

数据输入:


图 4.6 用于网络训练的图片样例

算法效果

算法对比

mAp Ap(car) mAp(finetune) Ap(car)(finetune)
SSD-mobileNetv2 0.37 0.63 0.79 0.82
SSD-mobileNetV2-pafpn 0.46 0.74 0.88 0.90
SSD-mobileNetV3 0.45 0.77 0.87 0.86
SSD-mobileNetV3-pafpn 0.55 0.81 0.90 0.90

场地实际效果


图 4.7 真实机器人测试效果

运行时间

我们将模型进行如下流程的转换:pytorch ==> onnx ==> tensorrt。转换完成之后,在device上运行,测试检测单张图片运行时间 (不计入IO时间)

device fp32 fp16
jetson  nano 12-11ms 6-7ms
jetson  tx2 / /
jetson xaiver / /
rtx2060 3-4ms 1-2ms

未来工作(3d-detection)

大致思路: 由回归包围框4个点变为回归包围箱的8个点,由已知的机器人尺寸,一起计算epnp,得到三维位置和姿态