一 基本卷积神经网络
1.AlexNet
网络结构
网络一共有8层可学习层——5层卷积层和3层全连接层;池化层均采用最大池化;选用ReLU作为非线性环节激活函数;网络规模扩大,参数数量接近6000万;
出现“多个卷积层+一个池化层”的结构;
随网络深入,宽、高衰减,通道数增加。
改进方式:输入样本、激活函数、Dropout、双GPU策略。
2.VGG-16
网络结构
网络规模进一步增大,参数数量约为1.38亿;
由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
随网络深入,高和宽衰减,通道数增多。
3.残差网络ResNet
核心网络
残差网络消除了梯度消失,发现并不是网络越深越好
普通网络的基准模型受VGG网络的启发
卷积层主要有3×3的过滤器,并遵循两个简单的设计规则:①对输出特征图的尺寸相同的各层,都有相同数量的过滤器; ②如果特征图的大小减半,那么过滤器的数量就增加一倍,以保证每一层的时间复杂度相同。
ResNet模型比VGG网络更少的过滤器和更低的复杂性。ResNet具有34层的权重层,有36亿 FLOPs,只是VGG-19(19.6亿FLOPs)的18%。
4.常用数据集
MNIST数据集
MNIST 数据集是由 0 〜 9 手写数字图片和数字标签所组成的,由 60000 个训练样本和 10000 个测试样
本组成,每个样本都是一张 28 * 28 像素的灰度手写数字图片。
Fashion-MNIST数据集
FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。它是由 Zalando 旗下的研究部门提供,涵盖了来自 10 种类别的共 7 万个不同商品的正面图片。
FashionMNIST 的大小、格式和训练集 / 测试集划分与原始的MNIST 完全一致。 60000/10000 的训练测试数据划分, 28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码。
CIFAR-10数据集
CIFAR-10 数据集由 10 个类的 60000 个 32x32 彩色图像组成,每个类有6000 个图像。有 50000 个训练图像和 10000 个测试图像。
数据集分为五个训练批次和一个测试批次,每个批次有 10000个图像。测试批次包含来自每个类别的恰好1000 个随机选择的图像。
PASCAL VOC数据集
PASCAL 的全称是 Pattern Analysis, Statistical Modelling and Computational Learning
VOC 的全称是 Visual Object Classes;
目标分类(识别)、检测、分割最常用的数据集之一;
第一届PASCAL VOC举办于2005年,2012年终止。常用的是PASCAL 2012。
MS COCO数据集
PASCAL 的全称是 Microsoft Common Objects in Context ,起源于微软于2014 年出资标注的 Microsoft COCO 数据集。
数据集以 scene understanding 为目标,主要从复杂的日常场景中截取;
包含目标分类(识别)、检测、分割、语义标注等数据集;
mageNet 竞赛停办后, COCO 竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆。
提供的标注类别有 80 类,有超过 33 万张图片,其中 20 万张有标注,整个数据集中个体的数目超过150 万个。
ImageNet数据集
始于 2009 年,李飞飞与 Google 的合作:“ImageNet: A Large-Scale Hierarchical Image Database”
总图像数据: 14,197,122
总类别数:21841
带有标记框的图像数: 1,034,908
训练集: 1,281,167 张图片 + 标签
类别数: 1,000
验证集: 50,000 张图片 + 标签
测试集: 100,000 张图片
二 深度学习视觉应用(目标检测 )
1.数据集与评价指标
(1)算法评估
概念:
TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数
TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
P(精确率): TP/(TP+FP)
R(召回率): TP/(TP+FN)。召回率越高,准确度越低
P-R曲线:P-R的关系曲线图,表示了召回率和准确率之间的关系 , 精度(准确率)越高,召回率越低
(2)AP计算
mAP :均值平均准确率
其中 𝑁 代表测试集中所有图片的个数, 𝑃(𝑘) 表示在能识别出 𝑘 个图片的时候Precision的值,而 Δ𝑟(𝑘) 则表示识别图片个数从 𝑘 − 1 变化到 𝑘 时(通过调整阈值)Recall值的变化情况。
2.目标检测与YOLO
(1)目标检测问题
目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,并且物体还可以是多个类别。
目标检测实例:实际图像中有多个目标
(2)目标检测基本思想
基本原理:
可以做的问题是分类问题,把目标检测化简为分类问题。利用一个窗口从左到右、从上到下滑动,可以对于葫芦娃的脸进行分类,能够识别出来脸,就做到了目标检测。
实际上这么做存在问题:滑动次数太多,计算太慢;目标大小不同,每一个滑动位置需要用很多框,图片宽度和高度都不相同,比例也不相同,因此需要取很多框,消耗时间更多;。这些问题都导致这样的基本思路用在目标检测中,会导致检测时间十分漫长,基本不可用。
滑动窗口进行改进
一般图片中,大多数位置都不存在目标。
可以确定那些更有可能出现目标的位置,再有针对性的用 CNN 进行检测——两步法(Region Proposal)。两步法依然比较费时!
进一步减少出现目标的位置,而且将目标分类检测和定位问题合在一个网络里——一步法( YOLO)。很多系统基本上都采用YOLO,因为YOLO十分迅速。
二步法中的每个滑动窗口之间存在大量重叠,直接将图片划分成不重叠的窗口,进行检测。
(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个包围框(boundingbox, bb),预测不同大小和宽高比,对应检测不同目标。每个bb有5个分量,分别是物体的中心位置(𝑥, 𝑦) 和它的高(ℎ) 和宽 (𝑤) ,以及这次预测的置信度。在下图中,每个框代表1个预测的bb,粗细代表不同的置信度,越粗得越高。
输出表示
在上面的例子中,图片被分成了49个框,每个框预测2个bb,因此上面的图中有98个bb。
总结
神经网落在目标检测上的应用:YOLO已经成为目标检测领域的主流方法并已经成功的应用到实际生活中了。