目录
1 深度学习视觉应用
1.1 数据集与评价指标
1.1.1 算法评估相关概念
- TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
- FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
- FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数
- TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
(1)混淆矩阵
- P(精确率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑃),标识“挑剔”的程度
- R(召回率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑁)。召回率越高,准确度越低
- 标识“通过”的程度
- 精度(Accuracy): (𝑇𝑃 + 𝑇𝑁)/(𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁)
-
P-R曲线,表示了召回率和准确率之间的关系。精度(准确率)越高,召回率越低
- 假设一个测试集,其中图片只由大雁和飞机两种图片组成,
True positives : 飞机的图片被正确的识别成了飞机。False positives: 大雁的图片被错误地识别成了飞机。False negatives: 飞机的图片没有被识别出来,系统错误地认为它们是大雁。True negatives: 大雁的图片没有被识别出来,系统正确地认为它们是大雁。
(2)置信度与准确率
调整阈值可改变准确率或召回值。可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择 让系统识别能出多少个图片,当然阈值的变化会导致Precision与 Recall值发生变化。比如,把蓝色虚线放到第一张图片下面,也就 是说让系统只识别出最上面的那张飞机图片,那么Precision的值就 是100%,而Recall的值则是20%。如果把蓝色虚线放到第二张图片 下面,也就是说让系统只识别出最上面的前两张图片,那么 Precision的值还是100%,而Recall的值则增长到是40%。
(3)AP
mAP:均值平均准确率,每一个类别均可确定对应的AP 多类的检测中,取每个类AP的平均值,即为mAP。
适用方面:实际图像分类任务(多类)
1.2 目标检测与YOLO
1.2.1 目标检测问题
目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。
物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图
片的任何地方,并且物体还可以是多个类别。
目标检测问题发展
- R-CNN
- SPP NET
- Fast R-CNN
- Faster R-CNN
- 最终实现YOLO
YOLO是一个集大成的方法,不了解之前的方法,很难掌握YOLO的思路。
YOLO家族发展
1.2.2 一步法(two-stage)
无需候选框,直接出最终结果。突出优点:快!
分类问题扩展为回归
+
分类问题
问题
1
:有一个框里有多个,有个多个框里有一个,怎么办?
多个框里有一个目标,取目标中心点所在框
一个框里有多个,暂不能解决
问题
2
:多类目标怎么办?
使用独热编码扩展类别数
1.2.3 YOLO网络结构
YOLO官方的模型结构:
网络结构包含24个卷积层和2个全连接层;其中前20个卷积层用来做预训练,后面4个是随机初始化的卷积层,和2个全连接层。
YOLO
网络输入:
YOLO v1在PASCAL VOC数据集上进行的训练,因此输入图片为448 × 448 × 3。实际中如为其它尺寸,需要resize或切割成要求尺寸
YOLO
模型处理:
𝟕 × 𝟕
网格
划分 。
将图片分割为
𝑆
2
个grid(
𝑆 = 7
),每个grid cell的大小都是相等的
➢
每个格子都可以检测是否包含目标
➢
YOLO v1中,每个格子只能检测一种物体(但可以不同大小)。
YOLO网络输出:
输出是一个
7 × 7 × 30
的张量。对应 7 × 7个cell 。每个cell对应2个包围框(bounding box, bb),预测不同大小和宽高比, 对应检测不同目标。每个bb有5个分量, 分别是物体的中心位置(𝑥, 𝑦)和它的高 (ℎ) 和宽
(𝑤)
,以及这次预测的置信度。 在右图中,每个框代表1个预测的bb,粗细代表不同的置信度,越粗得越高。
1.2.4 包围框与置信度
YOLO
的包围框
我们有
𝑠
2
个框,每个框的bb个数为
𝐵
,分类器可以识别出
𝐶
种不同的物体,
那么所有整个ground truth的长度为
𝑆 × 𝑆 × (𝐵 × 5 + 𝐶)
YOLO v1
中,这个数量是
30
YOLO v2
和以后版本使用了自聚类的
anchor box
为
bb, v2
版本为
𝐵 = 5
, v3
中 𝐵 =9
处理细节
——
归一化
四个关于位置的值,分别是
𝑥, 𝑦, ℎ
和
𝑤
,均为整数,实际预测中收敛慢
因此,需要对数据进行归一化,在0-1之间。
处理细节
——
置信度
置信度计算公式:
𝐶 = Pr 𝑜𝑏𝑗 ∗ 𝐼𝑂𝑈
𝑡𝑟𝑢𝑡ℎ 𝑝𝑟𝑒𝑑
Pr(
𝑜𝑏𝑗
)是一个grid有物体的概率
IOU是预测的bb和真实的物体位置的交并比。
处理细节
——
训练值(
ground truth
)
Pr 𝑜𝑏𝑗
的
ground truth
:三个目标中点对应格子为
1
,其它为
0
训练数据与网络输出
1.2.5 损失函数
YOLO
损失函数
——
边界框对应损失项
YOLO
损失函数
——
𝝀
取值
1.2.6 训练和NMS
预训练与训练:
保留了这么多边界框,预测中
一个物体可能被多个边界框包
围;实际物体只对应一个边界
框,如何解决个问题呢?
NMS核心思想是:选择得分最高
的作为输出,与该输出重叠的
去掉,不断重复这一过程直到
所有备选处理完。
NMS
算法要点
1.
首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框:
2.
选择具有最高概率的边界框并将其作为输出预测;
3.
计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框” 很相近的框框。
4.
重复步骤2,直到所有边界框都被视为输出预测或被舍弃
NMS
算法
1.
它首先查看与每次检测相关的概率并
取最大的概率。图中选概率为
0.9
的方框;
2.
进一步查看图像中的所有其他框。与当前边界框较高的IoU
的边界框将被抑制。因此图中0.6
0.7
概率的边界框将被抑制。
3.
从概率最高的所有边界框中选择下一个,在例子中为0.8
的边界框;
4.
再次计算与该边界框相连边界框的IoU,去掉较高
IoU
值的边界框。
5.
重复这些步骤,得到最后的边界框
预训练与训练
YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练和预测
训练中采用了drop out和数据增强来防止过拟合。
YOLO的最后一层采用线性激活函数(因为要回归bb位置),其它层都是采用Leaky ReLU激活函数
1.3 语义分割
语义分割:找到同一画面中的不同类型目标区域
语义分割问题:和其他问题的区别
实例分割:同一类型目标要分出来具体实例(谁是谁)
目标检测:标出来外包围矩形
1.3.1 目标
对图中每一个像素进行分类,得到对应标签
1.3.2 基本思想
滑动窗口:滑动次数太多,计算太慢,重复计算太多
FCN网络结构:
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些
经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
1.3.3 FCN具体实现
FCN
网络结构:卷积部分
传统卷积神经网络。注意最后的全连接层
FCN中第6、7、8层都是通过
1 × 1
卷积得到的,第6层的输出通道是
4096
,第7层的输出通道是4096
,第8层的输出是
1000
(类),即1000个特征图(称为 heatmap)。输出的特征图(称为heatmap),颜色越贴近红色表示对应数值越大。
反卷积部分:跳级结构
蓝色:卷积层;绿色:Max Pooling层;黄色: 求和运算;灰色: 裁剪
仅作交流学习,如有错误,敬请批评指正!