人工智能|CV目标检测模型小抄(1)

前言 写完 CV领域经典backbone模型小抄(1) 之后,我们知道,backbone加上分类头就可以做分类任务了,那么如果backbone加上一些目标检测和实例分割头,其实也可以做实例分割任务。
该文用来记录一些常见的目标检测方法。
CV领域经典backbone模型小抄(1)
CV目标检测模型小抄(1)
CV实例分割模型小抄(1)
本文不断更新ing…

CNN Faster RCNN合集 Two stage的算法,需要先生成anchor/proposal, 然后预测出目标。
RCNN
Ross Girshick的作品
论文: Rich feature hierarchies for accurate object detection and semantic segmentation
有篇知乎文章也讲得不错 RCNN- 将CNN引入目标检测的开山之作
截图来自: Faster RCNN理论合集_RCNN_霹雳吧啦Wz 2:40时刻
人工智能|CV目标检测模型小抄(1)
文章图片

RCNN 利用 Selective Search 算法得到两千个候选区域, 然后将它们缩放到227227,然后讲候选区域输入到AlexNet中获得4096维特征。(2000各区域就有20004096个特征),然后交给svm分类器,有多少个类别就有多少个分类器。
由于候选区域很多,因此需要采用 非极大值抑制 的方法,具体就是,寻找得分最大的目标,计算与其他区域的(A∩B / A∪B)IOU值,若大于阈值则删除。 最后一步是使用回归器去修正候选框的位置,有多少个类别就有多少个回归器,回归器利用的也是上述提到的4096维度的输出特征。
截图来自: Faster RCNN理论合集_RCNN_霹雳吧啦Wz 13:37时刻
人工智能|CV目标检测模型小抄(1)
文章图片

不过该网络输出很慢,一张图片需要1分钟左右,训练过程繁琐,需要较大内存。



Fast RCNN
同样是Ross Girshick的作品
论文: Fast R-CNN, ICCV 2015
有篇知乎帖子也不错 目标检测之Fast RCNN
人工智能|CV目标检测模型小抄(1)
文章图片

使用VGG16作为backbone
通过Selective Search的2000个区域,然后再采样正样本和负样本。



Faster RCNN
依然是Ross Girshick的作品
Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks, 有一个讲Faster RCNN的帖子 【论文解读】精读Faster RCNN
代码: torchvision/models/detection/faster_rcnn.py,
也有一个知乎帖子讲Faster RCNN的代码 捋一捋pytorch官方FasterRCNN代码
另外还有一个大佬的代码 deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn/, 他还录制了6个小时的讲解视频…Faster RCNN源码解析(pytorch)
从标题我们也可以看出,作者用 Region Proposal Networks 替代了 Selective Search算法(因为它处理一张图需要2s左右)
人工智能|CV目标检测模型小抄(1)
文章图片

原始论文也是使用VGG16作为backbone
截图: Faster RCNN理论合集_FasterRCNN_霹雳吧啦Wz 15:32时刻
人工智能|CV目标检测模型小抄(1)
文章图片

anchor是靠人工先验定义的,通过RPN输出候选区域,然后再去采样。
原文是RPN+Fast RCNN分步骤训练的,不过现在大多是联合训练(例如pytorch官方)。
另外,如果Faster RCNN后半段换成FPN, 在pascal和coco的AP可以提两三个点。关于 FPN可查看: FPN结构详解_霹雳吧啦Wz, 十几分钟的讲解视频, 原论文Feature Pyramid Networks for Object Detection, CVPR 2017
人工智能|CV目标检测模型小抄(1)
文章图片
预测头预测个数:

  • 类别:k × ( c + 1 ) k \times (c+1) k×(c+1)
  • 位置:k × 4 × ( c + 1 ) k \times 4 \times (c+1) k×4×(c+1)
其中k为proposal数目,c为预测的类别数目, 这里通常会加上背景类, 故加1



SSD 人工智能|CV目标检测模型小抄(1)
文章图片
ECCV 2016, one stage.
论文: SSD: Single Shot MultiBox Detector
讲解视频: SSD算法理论_霹雳吧啦Wz
代码: deep-learning-for-image-processing/pytorch_object_detection/ssd/, 配对的代码讲解视频 SSD源码解析(Pytorch)_霹雳吧啦Wz
预测头预测个数:
  • 类别:k × ( c + 1 ) k \times (c+1) k×(c+1)
  • 位置:k × 4 k \times 4 k×4
其中k为default Box(类似于Faster RCNN总的proposal)数目,c为预测的类别数目, 这里通常会加上背景类, 故加1



RetinaNet 人工智能|CV目标检测模型小抄(1)
文章图片

one-stage首次超过two-stage, 大神何恺明的作品(Tsung-Yi Lin,Priya Goyal Ross,Girshick,Kaiming He ,Piotr Dollar)
  • 论文: Focal Loss for Dense Object Detection
  • 代码: facebookresearch/Detectron, 包括Mask RCNN在内的很多模型的优秀仓库, 另一个大佬的代码 deep-learning-for-image-processing/pytorch_object_detection/retinaNet/
  • 模型讲解: RetinaNet网络结构详解
可惜与yolov3对比,速度太慢了…
截图来自: RetinaNet网络结构详解 2:15时刻
人工智能|CV目标检测模型小抄(1)
文章图片
预测头预测个数:
  • 类别:c × A c \times A c×A
  • 位置:4 × A 4 \times A 4×A
其中,A 是default box的个数, c是要分辨的类别个数(不包括背景)
与FastRCNN和SSD不同的是,RetinaNet使用所有的正负样本而不进行正负样本采样。



Yolo YoloV1
2016 CVPR
  • 论文: You Only Look Once: Unified, Real-Time Object Detection
人工智能|CV目标检测模型小抄(1)
文章图片



Yolov2
【人工智能|CV目标检测模型小抄(1)】


Transformer

    推荐阅读