计算机视觉
前言:依据李沐视频整理
图像增广
图像增广在对训练图像进行一系列的随机变化之后,生成相似但不同的训练样本,从而扩大了训练集的规模。 此外,应用图像增广的原因是,随机改变训练样本可以减少模型对某些属性的依赖,从而提高模型的泛化能力。也就是增加一个已有数据集,使得有更多的多样性。例如:
- 在语言里面加入各种不同的背景噪声
- 改变图片的颜色和形状
常用的图像增广方法
翻转
1 |
|
切割
1 |
|
颜色
我们可以改变图像颜色的四个方面:亮度、对比度、饱和度和色调。
1 |
|
结合一下多种方法
1 |
|
微调
也叫迁移学习(transfer learning),将从源数据集学到的知识迁移到目标数据集
最后一层 不能直接使用,因为标号可能变了
特征提取模块可能仍然对我的数据有用
一个目标数据集上的正常训练任务 但是用更强的正则化
- 使用更小的学习率
- 使用更少的数据迭代
源数据集远复杂于目标数据,通常微调效果更好
固定一些层
- 低层次的特征跟家通用
- 高层次的特征则更跟数据集相关
1 |
|
目标检测和边界框
在图像分类任务中,我们假设图像中只有一个主要物体对象,我们只关注如何识别其类别。 然而,很多时候图像里有多个我们感兴趣的目标,我们不仅想知道它们的类别,还想得到它们在图像中的具体位置。 在计算机视觉里,我们将这类任务称为目标检测(object detection)或目标识别(object recognition)。
边界框
一个边缘框可以通过四个数字定义,边界框是矩形的,由矩形左上角的以及右下角的(x)和(y)坐标决定。 另一种常用的边界框表示方法是边界框中心的((x, y))轴坐标以及框的宽度和高度。
锚框
目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。 不同的模型使用的区域采样方法可能不同。 这里我们介绍其中的一种方法:以每个像素为中心,生成多个缩放比和宽高比(aspect ratio)不同的边界框。 这些边界框被称为锚框(anchor box)
目标检测过程
简化的过程:
-
首先生成大量锚框
-
赋予标号,
-
每个锚框作为一个样本进行训练
杰卡德系数(Jaccard)可以衡量锚框和真实边界框之间的相似性。 给定集合A和B,他们的杰卡德系数是他们交集的大小除以他们并集的大小,也就是交并比(IoU)
在预测时,使用NMS来去除冗余的预测。
比较知名目标检测数据的有COCO(cocodataset.org)
R-CNN
区域卷积神经网络(region-based CNN或regions with CNN features,R-CNN)
R-CNN包括以下四个步骤:
- 对输入图像使用选择性搜索来选取多个高质量的提议区域 。这些提议区域通常是在多个尺度下选取的,并具有不同的形状和大小。每个提议区域都将被标注类别和真实边界框;
- 选择一个预训练的卷积神经网络,并将其在输出层之前截断。将每个提议区域变形为网络需要的输入尺寸,并通过前向传播输出抽取的提议区域特征;
- 将每个提议区域的特征连同其标注的类别作为一个样本。训练多个支持向量机对目标分类,其中每个支持向量机用来判断样本是否属于某一个类别;
- 将每个提议区域的特征连同其标注的边界框作为一个样本,训练线性回归模型来预测真实边界框。
Fast R-CNN
Fast R-CNN引入了兴趣区域汇聚层(RoI pooling):将卷积神经网络的输出和提议区域作为输入,输出连结后的各个提议区域抽取的特征
兴趣区域(ROI)池化层
给定一个锚框,均匀分割成n * m 块,输出每块里的最大值,不管锚框多大,总是输出nm个值.
作用:让每个锚框编程自己想要的模样,接着使用CNN对图片抽取特征,最后使用ROI池化层对每个锚框生成固定锚框特征。
Faster R-CNN
为了较精确地检测目标结果,Fast R-CNN模型通常需要在选择性搜索中生成大量的提议区域。 Faster R-CNN 提出将选择性搜索替换为区域提议网络(region proposal network),从而减少提议区域的生成数量,并保证目标检测的精度。
使用一个区域提议网络来替代启发式搜索来获得更好的锚框
Mask R-CNN
如果在训练集中还标注了每个目标在图像上的像素级位置,那么Mask R-CNN能够有效地利用这些详尽的标注信息进一步提升目标检测的精度。如果有像素级别的标号,使用FCN来利用这些信息
Mask R-CNN是基于Faster R-CNN修改而来的。 具体来说,Mask R-CNN将兴趣区域汇聚层替换为了 兴趣区域对齐层,使用双线性插值(bilinear interpolation)来保留特征图上的空间信息,从而更适于像素级预测。
单发多框检测
单发多框检测(SSD) 该模型简单、快速且被广泛使用。尽管这只是其中一种目标检测模型,但本节中的一些设计原则和实现细节也适用于其他模型。
此模型主要由基础网络组成,其后是几个多尺度特征块。 基本网络用于从输入图像中提取特征,因此它可以使用深度卷积神经网络。
简单的来总结就是:
-
ssd通过单神经网络来检测模型
-
以每个像素为中心的产生多个锚框
-
在多个端的输出上进行多尺度的检测
YOLO
名字由来于you only look once,是Joseph Redmon和Ali Farhadi等人于2015年提出的基于单个神经网络的目标检测系统。在2017年CVPR上,Joseph Redmon和Ali Farhadi又发表的YOLO 2,进一步提高了检测的精度和速度。yolo将图片均匀分成s*s个锚框,每个锚框预测B个边缘框。
//todo 有需要的话,后面再单独写一篇YOLO的文章
分割
语义分割:
语义分割将图片中的每个像素分类到对应的类别
应用:
背景虚化
路面分割
实例分割 区别狗1 狗2
最重要的语义分割数据集Pascal VOC2012
转置卷积
卷积不会增大输入的高宽,通常要么不变,要么减半
转置卷积则可以用户来增大输入高宽
为什么叫做转置
转置卷积也是一种卷积
同反卷积的关系
数学上的反卷积是指卷积的逆运算
反卷积很少用在深度学习中
我们说的反卷积神经网络指用了转置卷积的神经网络
全连接卷积神经网络
也就是FCN
是用深度神经网络来做语义分割的奠基性工作
他用转置卷积层来替换CNN最后的全连接层,从而可以实现每个像素的预测
样式迁移
将样式图片的样式迁移到内容图片上,得到合成图片