目录
1.基本卷积神经网络
1.1 AlexNet
1.1.1 网络结构
1.1.2 网络说明
AlexNet网络结构相对简单,使用了8层卷积神经网络,前5层是卷积层,剩下的3层是全连接层。
改进: (1) 池化层均采用最大池化; (2) 选用ReLU作为非线性环节激活函数; (3) 网络规模扩大,参数数量接近6000万; (4) 出现“多个卷积层+一个池化层”的结构。
普遍规律:随网络深入,宽、高衰减,通道数增加。
1.1.3网络改进
(1)改进输入样本
最简单、通用的图像数据变形的方式。
从原始图像(256,256)中,随机的crop出 一些图像(224,224)。【平移变换,crop 】
水平翻转图像。【反射变换,flip】
给图像增加一些随机的光照。【光照、彩 色变换,color jittering】
(2)改进激活函数
采用ReLU替代Tan Sigmoid;用于卷积层和全连接层之后。
(3)添加Dropout
在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数。
(4)采用双GPU策略
AlexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信。
1.2 VGG-16
1.2.1网络结构
1.2.2 网络说明
改进:网络规模进一步增大,参数数量约为1.38亿;由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
普遍规律:随网络深入,高和宽衰减,通道数增多。
1.3 残差网络
1.3.1 残差网络的必要性
非残差网络的缺陷:
残差网络的优势:
梯度消失问题:
1.3.2 构建残差网络
残差快:
残差网络:
1.3.3 网络说明
普通网络的基准模型受VGG网络的启发
卷积层主要有3×3的过滤器,并遵循两个简 单的设计规则:①对输出特征图的尺寸相同的各层,都有相同数量的过滤器; ②如果特征 图的大小减半,那么过滤器的数量就增加一倍,以保证每一层的时间复杂度相同。
ResNet模型比VGG网络更少的过滤器和更低的 复杂性。ResNet具有34层的权重层,有36亿 FLOPs,只是VGG-19(19.6亿FLOPs)的18%。
2.常用数据集
1. MNIST
- MNIST数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。
2. Fashion-MNIST数据集
- FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。它是由 Zalando旗下的研究部门提供,涵盖了来自 10 种类别的共 7 万个不同商品的正面图片。
- FashionMNIST 的大小、格式和训练集/测试集划分与原始的MNIST 完全一致。60000/10000 的训练测试数据划分,28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码
3. CIFAR-10数据集
- CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像
- 数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像
4. PASCAL VOC数据集
- PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning
- VOC的全称是Visual Object Classes
- 目标分类(识别)、检测、分割最常用的数据集之一
- 第一届PASCAL VOC举办于2005年,2012年终止。常用的是 PASCAL 2012
5. MS COCO数据集
- PASCAL的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集
- 数据集以scene understanding为目标,主要从复杂的日常场景中截取
- 包含目标分类(识别)、检测、分割、语义标注等数据集
- ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆
- 官网:http://cocodataset.org
6. ImageNet数据集
- 始于2009年,李飞飞与Google的合作:“ImageNet: A Large-Scale Hierarchical Image Database”
- 总图像数据:14,197,122
- 总类别数:21841
- 带有标记框的图像数:1,034,908
7. ISLVRC 2012子数据集
- 训练集:1,281,167张图片+标签
- 类别数:1,000
- 验证集:50,000张图片+标签
- 测试集:100,000张图片
3.算法评估
3.1 相关概念
TP:被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
FP:被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数
TN:被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
精确率P(Precision):TP/(TP+FP)
召回率R(Recall):TP/(TP+FN)。
P-R曲线:召回率越高,准确率越低。
示例:
有一个测试集含有5个飞机(正样本),5个大雁(负样本),需要做分类问题,判断图片是否是飞机。分类为飞机的照片中,含有3个飞机,1个大雁;分类为大雁的照片中,4个大雁,2个飞机。那么TP:3,FP:1,FN:2,TN:4。P=75%,R=60%。
最终神经网络会计算出一个概率,调整判断的阈值可以准确改变准确率或召回率,在刚才例子中,对应某阈值,样本被分类为飞机,改变阈值会改变划分,进一步影响准确率或召回值。
3.2 AP计算
mAP:均值平均准确率。
其中𝑁代表测试集中所有图片的个数 𝑃(𝑘)表示在能识别出 𝑘个图片的时候Precision 的值,而 Δ𝑟(𝑘)则表示识别图片个数从 𝑘−1变化到 𝑘时(通过调整阈值)Recall 值的变化情况 。
示例:
在上述例子中,AP的计算值为:
=(1∗(0.2−0))+(1∗(0.4−0.2))+(0.66∗(0.4−0.4))+(0.75∗(0.6−0.4))+(0.6∗(0.6−0.6))+(0.66∗(0.8−0.6))+(0.57∗(0.8−0.8))+(0.5∗(0.8−0.8))+(0.44∗(0.8−0.8))+(0.5∗(1−0.8))=0.782.
=(1∗0.2)+(1∗0.2)+(0.66∗0)+(0.75∗0.2)+(0.6∗0)+(0.66∗0.2)+(0.57∗0)+(0.5∗0)+(0.44∗0)+(0.5∗0.2)=0.782.
那些Recall值没有变化的地方,对增加AP值没有贡献。
mAP计算:每一个类别均可确定对应的AP。在多类检测中,取每个类AP的平均值,即位mAP。实际工业检测中,可能不用这些指标,用一些其他指标。
4.目标检测与YOLO
4.1 目标检测问题
目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。这实际上是一个分类和回归问题。问题:物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,并且物体还可以是多个类别。
4.2 目标检测技术发展
4.3 目标检测基本思想
基本的滑动窗口: 采用滑动窗口的目标检测算法思路非常简单,它将的基本原理就是采用不同大小和比例 (宽高比) 的窗口在整张图片上以设定的步长进行滑动,遍历图片的所有位置, 然后对这些窗口对应的区域做图像分类,这样就可以实现对整张图片的检测了。
实际上这么做存在问题:滑动次数太多,计算太慢;目标大小不同,每一个滑动位置需要用很多框,图片宽度和高度都不相同,比例也不相同,因此需要取很多框,消耗时间更多;。这些问题都导致这样的基本思路用在目标检测中,会导致检测时间十分漫长,基本不可用。
因此,可以对滑动窗口进行改进。
一般图片中,大多数位置都不存在目标。可以确定那些更有可能出现目标的位置,再有针对性的用 CNN 进行检测——两步法(Region Proposal)。两步法依然很费时!
进一步减少出现目标的位置,而且将目标分类检测和定位问题合在一个网络里——一步法( YOLO)。很多系统基本上都采用YOLO,因为YOLO十分迅速。
二步法中的每个滑动窗口之间存在大量重叠,直接将图片划分成不重叠的窗口,进行检测。
4.4 YOLO网络结构
YOLO网络结构概略图:
YOLO官方的模型结构图:
YOLO的结构非常简单,就是单纯的卷积、池化最后加了两层全连接,从网络结构上看,与前面介绍的CNN分类网络没有本质的区别,最大的差异是输出层用线性函数做激活函数,因为需要预测bounding box的位置(数值型),而不仅仅是对象的概率。所以粗略来说,YOLO的整个结构就是输入图片经过神经网络的变换得到一个输出的张量,如下图所示: