前言:学长讲的目标检测入门,我就随手记了个大框架,感觉深度学习迭代太快,具体模型特点还是各自看论文吧~
本文可能存在拼写/部分错误,重点是框架啊哈哈哈。 另,欢迎指正!
目标检测框架
目标检测框架组成
Backbone
- 提取:目标独有(黑盒子)的特征
- 特征提取器:VGG,ResNet
Head
- 识别/分割/掩码-马赛克等具体任务
Neck
- FPN结构(2016)
- ASFF
- RFB
- SPP
提升检测效率
目的:提取有效特征
全卷积FCN
全连接转化为1*1的全卷积
- 优点:可以接受任意大小的输入图像,更加高效
- 缺点:得到结果不够精细,缺乏空间一致性
多特征检测—不同尺度的特征图相加SSD
2016 Single Shot MultiBox–SSD
多尺度融合—特征金字塔FPN
同Neck部分
注意力机制
目的:更快get目标
- 自上而下——主动——聚焦式注意力【normal】
- 自下而上——被动——显著性注意力
- 例如:SENet(2018),SKNet(2019),CBAM
目标检测的评价参数
- TP—IoU>0.5的检测框数量
True Positive (TP): (同一Ground Truth只计算一次) - FP—IoU<=0.5的检测框数量
False Positive (FP): 检测到同一个GT的多余检测框的数量 - FN—没有检测到的GT数量
- TN—不会使用到mAP中
Acc
所有样本
A
c
c
=
T
P
+
T
N
T
P
+
T
N
+
F
P
+
F
N
Acc=\frac{TP+TN}{TP+TN+FP+FN}
Acc=TP+TN+FP+FNTP+TN
Precision—查准率
所有正样本(检测出来的)
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
P
Precision=\frac{TP}{TP+FP}
Precision=TP+FPTP
Recall—查全率
所有正确识别的概率
P
r
e
c
i
s
i
o
n
=
T
P
T
P
+
F
N
Precision=\frac{TP}{TP+FN}
Precision=TP+FNTP
AP—PR曲线下面积
A P = ∑ P r ∑ r AP=\frac{\sum P_r}{\sum r} AP=∑r∑Pr
mAP—mean Average Precision
m A P = A P t o t a l c l a s s mAP=\frac{AP}{total_{class}} mAP=totalclassAP
IoU
交并比(IOU)是度量两个检测框(对于目标检测来说)的交叠程度。
I
o
U
=
a
r
e
a
(
B
p
∩
B
g
t
)
a
r
e
a
(
B
p
∪
B
g
t
)
B
g
t
目
标
实
际
的
边
框
;
B
p
预
测
的
边
框
IoU=\frac{area(B_p\cap B_{gt})}{area(B_p\cup B_{gt})} \\B_{gt}目标实际的边框;B_p预测的边框
IoU=area(Bp∪Bgt)area(Bp∩Bgt)Bgt目标实际的边框;Bp预测的边框
目标检测的平台
- detection2
- pytorch
- MMdetection
- pytorch
- 港中文-商汤
- github/open-mmlab/mmdetection
- maskrcnn-benchmark
- SimpleDet
- pytorch
- 图森未来
- Tensorpack
- tensorflow
目标检测方法
{ 阶 段 { o n e − s t a g e : Y O L O 1 ( 2016 ) , S S D , P o l a r − N e t ( 2019 ) t w o − s t a g e : R − C N N 2014 , D y n a m i c R − C N N 2020 锚 框 { a n c h o r : F a s t e r − R − C N N , S S D , Y O L O v 2 + a n c h o r − f r e e : F C O S \begin{cases} 阶段\begin{cases} one-stage:YOLO1(2016),SSD,Polar-Net(2019) \\two-stage:R-CNN2014,Dynamic R-CNN2020 \end{cases} \\锚框\begin{cases} anchor:Faster-R-CNN,SSD,YOLOv2+ \\anchor-free:FCOS \end{cases} \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧阶段{one−stage:YOLO1(2016),SSD,Polar−Net(2019)two−stage:R−CNN2014,DynamicR−CNN2020锚框{anchor:Faster−R−CNN,SSD,YOLOv2+anchor−free:FCOS
目标检测过程
数据集打标签
- LabelIme:曲面边缘
- OpenCV/CVAT:MASK-R-CNN
- VOTT,VIA
- PixelAnnotationTool:超分辨率
数据集类型
- 语义分割:semantic segmentation
- 实例分割:instance
- 常用:VOC&COCO
数据集的文件格式,需要转换为模型输入的格式(比如记录锚框位置信息的XML)
环境配置注意
- CUDA的版本需要对应硬件GPU,cudan