CV目标检测模型小抄(1)

前言

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

CV目标检测模型小抄(1)
Transformer系列目标检测模型小抄(1)

CV语义分割模型小抄(1)
CV实例分割模型小抄(1)

多模态模型小抄(1)

下一篇: CV目标检测模型小抄(2)

卷积操作后大小计算 卷积与转置卷积——pytorch

标注工具: 一篇博文 太全了!计算机视觉2D/3D标注工具汇总,超好用!

其他数据增强: 《混合数据增强》最新综述
一文看尽深度学习中的各种数据增强


模型

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时刻

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

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


Fast RCNN

同样是Ross Girshick的作品
论文: Fast R-CNN, ICCV 2015
有篇知乎帖子也不错 目标检测之Fast RCNN

使用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左右)


原始论文也是使用VGG16作为backbone

截图: Faster RCNN理论合集_FasterRCNN_霹雳吧啦Wz 15:32时刻

anchor是靠人工先验定义的,通过RPN输出候选区域,然后再去采样。

原文是RPN+Fast RCNN分步骤训练的,不过现在大多是联合训练(例如pytorch官方)。

另外,如果Faster RCNN后半段换成FPN, 在pascal和coco的AP可以提两三个点。关于 FPN可查看: FPN结构详解_霹雳吧啦Wz, 十几分钟的讲解视频, 原论文Feature Pyramid Networks for Object Detection, CVPR 2017

预测头预测个数:

  • 类别: 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

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


one-stage首次超过two-stage, 大神何恺明的作品(Tsung-Yi Lin,Priya Goyal Ross,Girshick,Kaiming He ,Piotr Dollar)

可惜与yolov3对比,速度太慢了…

截图来自: RetinaNet网络结构详解 2:15时刻

预测头预测个数:

  • 类别: 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


将图像分成 S × S S \times S S×S的网格, 如果目标的中心点落在某个网格中, 则由这个网格生成的Bounding Box负责预测该目标。

截图来自: YOLO系列理论合集(YOLOv1~v3)_霹雳吧啦Wz yolov1, 10:28时刻

yolov1无 anchor概念,是直接预测出bounding box

对群体性的小目标检测效果不理想。



Yolov2

2017 CVPR





截图来自: YOLO系列理论合集(YOLOv1~v3)_霹雳吧啦Wz yolov2, 17:36时刻


backbone: Darknet-19, 每一个卷积块由 2d卷积层+BN层+LeakyRelu构成。
预测头的输出是 5 × ( 5 + c ) 5 \times (5+c) 5×(5+c), 其中外面的5是因为每个网格预测5个bounding box, 里面的5是x, y, w, h, 和置信度confidence, 另外c代表预测类别数目(不包括背景类)。


截图来自: YOLO系列理论合集(YOLOv1~v3)_霹雳吧啦Wz yolov3, 16:19时刻

yolov2一些问题: 算法面试干货:Yolo系列的8个高频提问(yolov2)



YoloV3

2018 CVPR

没有引入独创的模块或创新点,整合了当前一些主流的结构而已,比如FPN,不过FPN是讲两个特征图在相同维度进行更相加,yolov3是在channel方向上进行concat。
backbone: Darknet-53



作者通过聚类, 得到(10×13),(16×30),(33×23),(30×61),(62×45),(59×
119),(116 × 90),(156 × 198),(373 × 326)这9个bounding box priors(其实和anchor差不多)

预测头(yoloV3有三个预测头, 每个预测头有不同尺度的特征图)输出个数是 N × N × [ 3 × ( 4 + 1 + c ) ] N \times N \times [3 \times (4+1+c)] N×N×[3×(4+1+c)], 其中N代表特征图的尺度(如13*13),小括号之外中括号的3是因为每个grid网格预测三个bounding box, 括号内的4是预测的x,y, w,h, 1是confidence score(objectness prediction), c代表预测类别(不包括背景类), 原作者说过这么一句话
“for the 4 bounding box offsets,1 objectness prediction, and 80 class predictions.”, 这里用的是coco数据集,有80各类,故此时的c等于80。

yolo-spp模块加了一些trick,比如Mosaic数据增强, spp模块。
关于yolo系列网络结构配置文件.cfg的解读可看 YOLOv3 SPP源码解析(Pytorch版), 配置文件解析


yoloV4

2020 CVPR
Alexey Bochkovskiy

截图来自 YOLOv4网络详解_霹雳吧啦Wz 7:36时刻



截图来自 YOLOv4网络详解_霹雳吧啦Wz 9:52时刻


预测头输出的结果和yolov3同, 都是 3 × ( 4 + 1 + c c l s ) 3 \times (4+1+c_{cls}) 3×(4+1+ccls)



yoloV5

非官方也非Alexey Bochkovskiy大神版,是ultralytics版。
github: ultralytics/yolov5

截止2022.07.21还无论文。

backbone: new csp-darknet53
Neck: SPPF, new csp-PAN
head: yolov3 head

截图来自:YOLOv5网络详解_霹雳吧啦Wz 9:23时刻

预测头输出的结果和yolov3,v4同, 都是 3 × ( 4 + 1 + c c l s ) 3 \times (4+1+c_{cls}) 3×(4+1+ccls)



yoloX

当前(2022.7.22)只有640*640分辨率尺度的模型,暂无1280的,需要1280的请转移到yolov5,或者大佬可以自行修改。

YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5
非官方版本, 2021 CVPR, 旷视的作品

该模型是在U版yolov5 v5.0的版本进行修改得到。

anchor-free
decoupled detection head

截图来自: YOLOX模型讲解_霹雳吧啦Wz 6:59时刻


截图来自: YOLOX模型讲解_霹雳吧啦Wz 10:28时刻

正负样本匹配SimOTA策略, 将匹配正负样本匹配的过程看成最优传输问题。



yolov6

yolov6 是美团视觉智能部研发的一款目标检测框架,致力于工业应用。
代码: meituan/YOLOv6
但是感觉名气不大?2022.7.21日还没有看到相应的论文



yoloV7

Chien-Yao Wang, Alexey Bochkovskiy and Hong-Yuan Mark Liao



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值