FairMOT
复赛期间对于多目标跟踪任务使用的baseline。
本质属于联合学习检测和嵌入模型(Joint Detection and Embedding,JDE)
改进点
网络结构
使用anchor free替换anchor base。
anchor base可能导致多个anchor对应一个目标,对于reid分支会造成歧义
多特征融合
类似FPN,将高层信息不断的上采样和底层信息融合,文中称之为深层聚合算子(Deep Layer Aggregation,DLA),改进是在ResNet基础上做的
添加一个和检测头平行的reid分支,提取每个目标的reid特征(文中是128,但程序里是512)
实现检测和reid的联合训练
loss
检测分支
同普通的anchor free损失
heatmap loss:计算所有像素点的损失
+focal loss:在heatmap计算出每个位置存在目标的置信度后,添加一个focal loss
offset(中心偏移)和size(框大小)loss:直接使用L1 loss(绝对值损失)
reid分支
使用CE loss:将每个ID视为一类,来训练reid特征向量
参考链接
多目标跟踪 | FairMOT:统一检测、重识别的多目标跟踪框架,全新Baseline
PANDA比赛
round1
训练
图片切割为2560*2560
只保留IOU大于0.5的目标
如果添加0.5和0.1等多尺度训练效果会更好
原因:
尽可能的保证图像中的目标在切割时不要被切断,因此将原图缩放后在切割是很有必要的,不然原图下近处的目标会被切断,无法参与训练。
前后处理
图片缩放到为1,0.5,0.1三个尺度,然后按照overlap=0.5的步长统一切割为2560*2560
对于每个patch的预测结果,如果其距离patch边界小于10个像素就直接剔除
综合所有patch的预测结果,并进行nms
置信度阈值由0.5变为0,提高4个点
NMS的IOU换为DIOU,提高1个点
原因:
多尺度可以保证,即可以检测到远处的小目标,也可以检测到近处的大目标(因为0.1尺度下,近处的目标就不会被分割开了)
剔除边缘的目标:靠近边缘的预测结果,可以视为当前目标只有部分在该patch内,那么显然根据部分信息得到的预测框必然精度不高,而且overlap=0.5,该目标必然会在另一个overlap里完全出现,不必担心漏检该目标
置信度为0:经过实验,阈值设置高了,会导致大量漏检,因此设为0可以减少漏检,同时结合2减少误检,效果有所提升
网络结构
cascade rcnn
检测效果好
在mmdetection框架下,相比于FCOS等anchor free的模型,在开启FP16时,训练稳定且可以将batch提高,减少内存,而其他模型FP16会导致loss为nan(初步猜测是因为梯度消失),或者内存减少不明显,因此该模型对于显存较小的机器很友好
DCN
在stage2,3,4的最后添加DCN模块
可以提取出适应目标形状的特征,相较于传统卷积,提取的特征更能覆盖目标
round2
训练
同round1,在原尺度切片
同round1,标签增加了ID类,用于跟踪
前后处理
与round1完全相同
网络结构
FairMOT
原因:
使用anchor free作为检测模型,可以更好的和reid结合
将检测和reid放在一个网络,相比D&T两阶段跟踪结构,速度更快