第四课课堂笔记
目标检测演进的介绍
目标检测的目的是从一张图像中检测出目标区域,直观来讲就是用不同大小、长宽比的窗口对图像扫描并进行分类。这是早期比较经典的r-cnn方法的思路,但是这样非常耗时,发现不同的滑动窗需要重复利用卷积进行计算,为了减少这种不必要的计算,直接在卷积的特征图上进行滑窗分类,这是fast rcnn的思路,即使用卷积网络实现密集预测,后来为了进一步加快思路,设计anchor铺满特征图,这些anchor就是检测框的初始状态,这就是faster-rcnn的思路。
faster-rcnn可以说深度学习目标检测的开山代表性工作,是two stage的工作,与之相对是one-stage的工作,two stage是先找到一些可能候选框,在候选框中利用roi align或者roi pooling提取特征,进行位置回归和分类。one-stage就直接基于单点特征直接进行预测。two stage 是一种级联的思路,后续有cascade rcnn, htc这之类更多级联的方法。此外faster rcnn是一种anchor base的方法,后续有anchor-free的方法,如centernet和fcos。最近transformer的大火,一些基于transformer的检测工作也有不少,例如detr,deformable detr
目标检测基本知识和经典框架
学习目标检测需要了解检测框的相关概念,如anchor,region,RoI,以及非极大值抑制这种常见的后处理,已经MAP,AP这些评测指标
经典的检测方法,如rcnn家族,其改进的路径为,改进backbone,例如使用resnet,resnext,使用特征金字塔,产生更好的区域特征抽取算法(RoI align 替换 RoI pooling), Mask R-CNN 加入分割同时支持实例分割
one-stage的检测方法,代表的工作为yolo,以及SSD,但是单阶段方法正负样本悬殊,例如ssd就用了难例挖掘,后来retinanet使用focal loss来处理这个问题
不过ssd,faster-rcnn预测检测都是基于anchor来处理,后来一些研究者设计了anchor-free的方法,该方法不依赖锚框,模型基于特征直接预测对应位置是否有物体,以及边界框的位置,该边界框的预测完全基于模型学习,不需要人生调整超参数,YOLO v1也是一种无锚的算法,但是当时backbone,data augmentation之类的技术不完善,性能不好。
一些基于transformer的检测方法也不断涌现,该方法脱离密集预测范式,将检测建模为从特征序列到框序列的翻译问题,用 Transformer 模型解决