通过一年多的研究和学习发现,给予深度学习方向的目标检测和目标跟踪算法有很多想通之处,目标跟踪中用到了很多在检测中的新技术,比如RPN,Anchor-based,Anchor-free等概念。所以研究目标检测算法,对跟踪算法的发展也有很强的实用性。以前通过博客学习到了很多,感谢所有分享自己知识的人,今天也来总结一下。以下内容按时间展开叙述,欢迎交流补充。
目标检测:
一、R-CNN(Rich feature hierarchies for accurate object detection and semantic segmentation)2013:
●Keywords: 深度学习,CNN,目标检测
●解决问题: 首次将CNN用于目标检测,代替传统HOG,SIFT等特征,极大提升性能(比VOC 2012提升30%)。
●整体框架: Selective Search->每个proposal进行 resize->CNN(AlexNet)->SVM->最后再NMS
●存在问题: SS生成很慢,每张图片需要使用Alexnet 2000+次,特征提取、图像分类、边框回归是三个独立的步骤,要分别进行训练,测试过程中的效率也较低。
●其他: Selective Search 伪代码 区域的合并规则是:优先合并颜⾊相近的,优先合并纹理相近的,优先合并合并后总⾯积⼩的,合并后,总⾯积在其BBOX中所占⽐例⼤的优先合并
二、Fast R-CNN(FastR-CNN)2015.9.27:
●Keywords: ROI Pooling,VGG16
●解决问题: 针对每张图片使用AlexNet 2000+次,提取重复特征改进。将特征提取、分类和回归)放到一个统一的网络结构中。处理时间较前者快了200+倍。
●整体框架: Selective Search-> 整个图像CNN(VGG16)-> ROI Pooling 统一候选区域特征图尺寸-> FC层到分类,回归分支-> NMS
●计算Loss: 其中分类为交叉熵,回归为Smooth-L1。
●存在问题: Selective Search算法处理一张图像大概需要2s的时间,。
三、Faster R-CNN(Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks)2016.1.6:
●Keywords: RPN,Anchor,利用CNN使区域推荐网络和分类回归网络共享了Backbone的参数。
●解决问题: 用RPN代替SS,将特征提取工作整合。Faster R-CNN的精度和Fast R-CNN差不多,较前者时间缩短10倍.
●整体框架: 整个图像CNN(VGG16)得到特征图->通过滑窗预设2000+Anchor和前f_map送入到RPN中,分别压缩通道为2k,4k进行粗分类,粗回归选择候选区域-> ROI Pooling 统一候选区域特征图尺寸-> FC层到分类,回归分支-> NMS。
●计算Loss: 同上
四、YOLO v1(You Only Look Once: Unified ,Real-Time Object Detection)2016.5.9:
●Keywords: One-stage预测,20分类
●解决问题: 快速,pipline简单.
●整体框架: 图像分成SxS个网格,每个格子生成两个BBOX 计算置信度标签,前项BBox有物体为1,
每个网格预测的class信息和预测的confidence信息相乘,得到每个BBox预测具体物体的概率和位置重叠的概率PrIOU,最后对于每个类别,对PrIOU进行排序,去除小于阈值的PrIOU,然后做非极大值抑制。
●存在问题: 输出层为全连接层,只支持与训练图像相同的输入分辨率。loss函数中,大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近
五、SSD(SSD: Single Shot Multi Box Detector)2016.12.29:
●Keywords: 多尺度特征图,Prior Box(与Anchor类似Anchor-based)
●特点: 数据增强:随机剪裁,以0.5的概率随机水平翻转。
●整体框架: 输入一幅图片(300x300),将其输入到预训练好的分类网络中来获得不同大小的特征映射,修改了传统的VGG16网络; 抽取不同层的feature map,生成不同Anchor然后分别进行检测和分类;将不同层feature map获得的bbox结合起来,经过NMS(非极大值抑制)方法来抑制掉一部分重叠或者不正确的bbox,生成最终的bbox集合(即检测结果);
六、YOLO v2(YOLO9000: Better, Faster, Stronger)2016.12.25:
●Keywords: Better, Faster, Stronger,Anchor-based ,9000分类
●解决问题: 优化YOLO v1,准确率提高,
●改进点: 1、YOLO-V2的主框架是基于Darknet-19 ,没有全连接层,可以用Anchor
2、BN层:有助于解决反向传播过程中的梯度消失和梯度爆炸问题,不再使用dropout
3、新的训练方法–联合训练算法,用巨量的分类数据集数据来扩充检测数据集,提高分辨率
4、Anchor-based, 通过预测偏移量,坐标值能够简化问题,学习起来更容易。Anchor设定虚线框为anchor box就是通过先验聚类方法产生的框,而蓝色的为调整后的预测框。算法通过使用维度聚类和直接位置预测这亮相anchor boxes的改进方法,
5、聚类数据集提取先验框的尺度信息。
6、不同尺寸,多尺度,图像金字塔,同一图片,缩小尺寸
七、FPN(Feature Pyramid Networks for Object Detection) 2017.4.19:
浅层特征和深层特征的合理利用问题
浅层特征包含纹理颜色等信息优点是空间分辨率高适合精准定位缺点是不变性差,鲁棒性差,例如旋转对其影响就很大。深层特征包含高层语义特征,对旋转外形变化都具有很好的不变性强,鲁棒性强,但是分辨率低,对平移和尺度也有不变性无法精准定位导致跟踪失败。
八、RetinaNet(Focal Loss for Dense Object Detection)2018.02.07:
●Keywords: 样本不平衡,一步检测,Anchor-based。
●解决问题: 样本不平衡,原一步检测方法的简单样本,难例样本贡献程度相同。导致一步检测精度上不去。
无用的易分反例样本会使得模型的整体学习方向跑偏,即只能分辨出没有物体的背景,而无法分辨具体的物体。
●整体框架: ResNet+FPN+Head
●标签打定方法: 不同分辨率的feature_map中,生成Anchor boxes。
●计算Loss: Loss=L分类+L回归+。其中分类损失采用Focal Loss。
原交叉熵,正样本概率越大损失越小。对于负样本概率越小则损失越小。此时的损失函数在大量简单样本的迭代过程中比较缓慢且可能无法优化至最优。
伽马:使得减少易分类样本的损失,使得模型更关注于困难的、错分的样本。为0时退化到交叉熵
阿尔法:平衡因子,用来平衡正负样本本身的数量比例不均
作者α=0.25,γ=2
九、YOLO v3(YOLOv3: An Incremental Improvement)2018:
●Keywords: FPN,Residual,Darknet-53
●解决问题: 小目标检测能力强
●改进点: 主干网络75个卷积层,无FC层用步长为2的卷积代替池化层,参考ResNet跨接
多尺度FPN;Softmax层被替换为一个1x1的卷积层+logistic激活函数的结构。一个物体同属于两类(针对训练集即是交通工具,又是公交车)分类损失采用binary cross-entropy loss。
十、FCOS(FCOS: Fully Convolutional One-Stage Object Detection)2019.08.20:
●Keywords: 全卷积,一步检测,Anchor-free
●解决问题: Anchor based方法诸多不足。
●整体框架: ResNet+FPN+Head
●标签打定方法: 不同分辨率的feature_map中,每个pixel映射回原图,若落在GT中则认定为某类正样本。回归标签为此pixel到GT四条边的了l,r,t,b。计算中心度centerness标签。
●计算Loss: Loss=L分类+L回归+L中心度;其中分类损失为Focal Loss,回归损失为IoU Loss,中心度损失为BCE Loss。
十一、ATTS(Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection)2020.06.20:
●Keywords: Anchor-free和Anchor-based
●解决问题: 主要就是研究anchor-free和anchor-based算法(Retina和FCOS),内容上主要包括2大方面:
1、对于基于anchor-based和anchor-free的目标检测算法之间的效果差距做了详细的对比实验,得出的结论就是如何确定正负样本是影响这2类算法的重要原因。
2、提出了ATSS方式来确定正负样本。
●主要工作: 1、RetinaNet在特征图上每个点铺设多个anchor,而FCOS在特征图上每个点只铺设一个中心点。
2、RetinaNet基于anchor和GT之间的IoU和设定的阈值来确定正负样本,而FCOS通过GT中心点和铺设点之间的距离和尺寸来确定正负样本。
3、RetinaNet通过回归矩形框的2个角点偏置进行预测框位置和大小的预测,而FCOS是基于中心点预测四条边和中心点的距离进行预测框位置和大小的预测。
●结论: 实验对比三点判断。如何确定正负样本才是造成FCOS和RetinaNet,设计Adaptive正负样本设定:
1、基于中心距离来选择候选正样本,靠近物体中心的anchor是更好的候选正样本
2、使用均值和方差的和作为IOU的阈值
3、正样本中心的限制,落框内才是正样本
十二、YOLO v4(Optimal Speed and Accuracy of Object Detection)2020.4.23:
●Keywords: 集大成的巅峰之作。
●解决问题: 降低了训练门槛,测试了各种tricks,在输入网络分辨率,卷积层数,参数数量和层输出(filters)的数量之间找到最佳平衡。
●整体框架: Backbone:CSPDarknet53;Neck:SPP,PAN;Head:YOLOv3
●改进点: 用于backbone的BoF:CutMix和Mosaic数据增强,DropBlock正则化,Class label smoothing,用于backbone的BoS:Mish激活函数,CSP,MiWRC,用于检测器的BoF:CIoU-loss,CmBN,DropBlock正则化,Mosaic数据增强,Self-Adversarial 训练,消除网格敏感性,对单个ground-truth使用多个anchor,Cosine annealing scheduler,最佳超参数,Random training shapes,用于检测器的Bos:Mish激活函数,SPP,SAM,PAN,DIoU-NMS
十三、DETR(End-to-End Object Detection with Transformers)2020.05.28:
十四、Deformable DETR (DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION)2020.12.30:
十五、Sparse R-CNN (Sparse R-CNN: End-to-End Object Detection with Learnable Proposals)2020.11.22:
未完待续。。。。。。。。。。。。。。。。。。。。。。。。
目标跟踪
●Keywords: 大数据集,Siamese结构,快
借鉴了检测算法中的RPN结构
Anchor-free,借鉴了FCOS中的中心度质量分数
对正负样本的划分上选择两个椭圆做判别,GT中心即为椭圆中心,GT宽高的1/2为外椭圆E1的半轴长,GT宽高的1/4为内椭圆E2的半轴长,如果点落在内椭圆内则判为正样本,落在外椭圆外判为负样本,落在两个椭圆的中间位置则忽略。
主要引用链接:
YOLO:https://zhuanlan.zhihu.com/p/136382095
R-CNN:https://zhuanlan.zhihu.com/p/30967656
未完待续。。。。。。。。。。。。。。。。。。。。。。。。