2019年初的目标检测算法综述:Object Detection in 20 Years: A Survey
本文只讲基于深度学习的主要算法。
前言
如图,深度学习算法之后的目标检测算法主要有两个分支,two-stage和one-stage算法。
two-stage算法主要是RCNN系列,包括RCNN, Fast-RCNN,Faster-RCNN,其中RCNN和Fast-RCNN之间过渡了一个SPPNet。之后在Faster-RCNN框架的基础上,又出现了更好的backbone网络Pyramid Networks。之后的Mask-RCNN融合了Faster-RCNN架构、ResNet和FPN(Feature Pyramid Networks)backbone,以及FCN里的segmentation方法,在多完成了segmention的同时也提高了detection的AP。
one-stage算法最早是YOLO(后面又更新了YOLO2,YOLO3),该算法速度极快,AP也极低。之后出现了速度和AP兼具的SSD(在SSD基础上又出现了DSSD,RefineNet,RFB-SSD,FSSD等改进网络)。还有解决了one-stage算法里正负样本极不平衡问题的Retina-Net。
two-stage算法和one-stage算法的区别在于,two-stage算法会先使用一个网络生成proposal,如selective search和RPN网络,前者是基于一些人造特征来的,RPN是一个也需要进行训练的网络,RPN出现后,ss方法基本就被摒弃。RPN网络接在图像特征提取网络backbone后(和之后的fast-RCNN网络架构共用特征提取层),会设置RPN loss(bbox regression loss+classification loss)对RPN网络进行训练,RPN生成的proposal再送到后面的网络中进行更精细的bbox regression和classification。One-stage追求速度舍弃了two-stage架构,即不再设置单独网络生成proposal,而是直接在feature map上进行密集抽样,产生大量