1.VGG-16
(1)网络结构
(2)网络的改进方法
首先,网络规模进一步增大,参数数量约为1.38亿;其次,由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
(3)普遍规律:-随网络深入,高和宽衰减,通道数增多。
2.残差网络
残差网络的优势:
梯度消失问题:
残差块:
残差网络卷积层主要有3×3的过滤器,并遵循两个简单的设计规则:首先,对输出特征图的尺寸相同的各层,都有相同数量的过滤器;其次,如果特征图的大小减半,那么过滤器的数量就增加一倍,以保证每一层的时间复杂度相同。
ResNet模型比VGG网络更少的过滤器和更低的 复杂性。ResNet具有34层的权重层,有36亿 FLOPs,只是VGG-19(19.6亿FLOPs)的18%。
3.常用数据集
(1)MNIST
MNIST 数据集主要由一些手 写数字的图片和相应的标签组成,图片一共有 10 类,分别对应从 0~9。
原始的 MNIST 数据库一共包含下面 4 个文件:
MNIST数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样 本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。
MNIST数据集加载:
(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
PASCAL VOC数据集一共分成20类,分别是:person,bird, cat, cow, dog, horse, sheep,aeroplane, bicycle, boat, bus, car, motorbike, train,bottle, chair, dining table, potted plant, sofa, tv/monitor。
文件格式:
标注格式:
里面是图像对应的XML标注信息描述,每张图像有一个与之对应同名的描述XML文件,XML前面部分声明图像数据来源,大小等元信息。
(4)MS COCO数据集
该数据集是PASCAL的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集。数据集以scene understanding为目标,主要从复杂的日常场景中截取。包含目标分类(识别)、检测、分割、语义标注等数据集。ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆。
该数据集提供的标注类别有80 类,有超过33 万张图片,其中20 万张有 标注,整个数据集中个体的数目超过150 万个。
(5)ImageNet数据集与ILSVRC
ImageNet数据集:始于2009年,李飞飞与Google的合作:总图像数据:14,197,122;总类别数:21841;带有标记框的图像数:1,034,908。
ISLVRC 2012子数据集:训练集:1,281,167张图片+标签;类别数:1,000;验证集:50,000张图片+标签;测试集:100,000张图片。
4.数据集与评价指标
(1)算法评估
概念:TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数
FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数
FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数
TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数
混淆矩阵:
P(精确率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑃),标识“挑剔”的程度
R(召回率): 𝑇𝑃/(𝑇𝑃 + 𝐹𝑁)。召回率越高,准确度越低标识“通过”的程度
精度(Accuracy): (𝑇𝑃 + 𝑇𝑁)/(𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁)
P-R曲线:表示了召回率和准确率之间的关系
结论:精度(准确率)越高,召回率越低。
置信度与准确率:可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择让系统识别能出多少个图片,当然阈值的变化会导致Precision与Recall值发生变化。
P - R曲线
AP计算:
mAP:均值平均准确率:
其中𝑁代表测试集中所有图片的个数,𝑃(𝑘)表示在能识别出𝑘个图片的时候Precision的值,而 Δ𝑟(𝑘)则表示识别图片个数从𝑘 − 1变化到𝑘时(通过调整阈值)Recall值的变化情况。
mAP计算:每一个类别均可确定对应的AP;多类的检测中,取每个类AP的平均值,即为mAP。
5.目标检测与YOLO
(1)目标检测问题:目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,并且物体还可以是多个类别。
目标检测问题发展:分为R-CNN、SPP NET、Fast R-CNN、Faster R-CNN、最终实现YOLO
数据集输出表达:按照是否有目标进行分类或按照有什么目标进行分类。
定位方式有两种:一种是对角线顶点坐标 1/对角线顶点坐标2;另一种是中心点坐标/长/宽。
解决方案:
YOLO家族发展:
(2)目标检测基本思想
滑动窗口存在的问题:滑动次数太多,计算太慢;目标大小不同,每一个滑动位置需要用很多框
滑动窗口的改进:一般图片中,大多数位置都不存在目标。可以确定那些更有可能出现目标的位置,再有针对性的用CNN进行检测——两步法(Region Proposal)。两步法依然很费时!进一步减少出现目标的位置,而且将目标分类检测和定位问题 合在一个网络里——一步法(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个包围框(bounding box, bb),预测不同大小和宽高比, 对应检测不同目标。每个bb有5个分量, 分别是物体的中心位置(𝑥, 𝑦)和它的高 (ℎ) 和宽 (𝑤) ,以及这次预测的置信度。
(4)包围框与置信度
YOLO的包围框:有 𝑠 2个框,每个框的bb个数为𝐵,分类器可以识别出𝐶种不同的物体, 那么所有整个ground truth的长度为𝑆 × 𝑆 × (𝐵 × 5 + 𝐶) YOLO v1中,这个数量是30 YOLO v2和以后版本使用了自聚类的anchor box为bb, v2版本为𝐵 = 5, v3中 𝐵 =9
处理细节——归一化:四个关于位置的值,分别是𝑥, 𝑦, ℎ和𝑤,均为整数,实际预测中收敛慢因此,需要对数据进行归一化,在0-1之间。
处理细节——置信度:
置信度计算公式:
Pr(𝑜𝑏𝑗)是一个grid有物体的概率;IOU是预测的bb和真实的物体位置的交并比。
处理细节——训练值:目标中点对应格子为1,其它为0
处理细节——训练数据与网络输出:
6.损失函数
YOLO损失函数(一共五项):
YOLO损失函数——边界框对应损失项:
YOLO损失函数—— 𝝀取值:
7.训练与NMS
(1)NMS核心思想是:选择得分最高 的作为输出,与该输出重叠的 去掉,不断重复这一过程直到 所有备选处理完。
(2)NMS算法要点:首先丢弃概率小于预定IOU阈值(例如0.5)的所有边界框;对于剩余的边界框;选择具有最高概率的边界框并将其作为输出预测;计算 “作为输出预测的边界框”,与其他边界框的相关联IoU值;舍去IoU大于阈值的边界框;其实就是舍弃与“作为输出预测的边界框” 很相近的框框;重复步骤2,直到所有边界框都被视为输出预测或被舍弃。
(3)数据集训练:YOLO先使用ImageNet数据集对前20层卷积网络进行预训练,然后使用完整的网络,在PASCAL VOC数据集上进行对象识别和定位的训练和预测。训练中采用了drop out和数据增强来防止过拟合。YOLO的最后一层采用线性激活函数(因为要回归bb位置),其它层都是采用Leaky ReLU激活函数:
8.扩展:YOLO新版
(1)YOLO v3网络结构
骨干网络结构:
YOLO v3整体网络结构:
YOLO v3预测框:
每个cell生成三个预测框(anchor),维数为85 = 5 + 80
对一个图像产生10647个预测框: 3 × (13 × 13 + 26 × 26 + 52 × 52)
YOLO v3损失函数:分为正样本回归、正样本置信度+分类和负样本置信度三部分
YOLO v3训练过程:
YOLO v3模型效果:
YOLO v3模型效果:
YOLO v5网络结构:
新引入了CSP结构
YOLO v5预测框:
对一个图像产生25200个预测框:3 × 20 × 20 + 40 × 40 + 80 × 80
根据不同的数据集来自适应计算不同训练集中的最佳锚框值。
YOLO v5预测框:标签与anchor的分配:
使用anchor和目标框的高宽比进行筛选的。具体的分配规则如下:
其中𝑎𝑛𝑐ℎ𝑜𝑟𝑡 在yolov5中默认设置为4。 这代表着在grid ceil 中预测的框的大 小为对应anchor的1/4或者4倍。通过上 面的方式,就可确定了哪一层的哪一个 anchor对应的输出channel上的
YOLO v5预测框:标签与anchor的分配:
2和3面积比小于4,匹配
YOLO v5训练过程:YOLO v5损失函数:➢ 类似v3, 分为三类,回归损失采用CIOU 损失。
CIOU损失:
CIoU Loss最终定义为:
YOLO v5数据预处理:
数据增强:𝑌𝑜𝑙𝑜𝑣5的输入端采用了和𝑌𝑜𝑙𝑜𝑣4一样的𝑀𝑜𝑠𝑎𝑖𝑐数据增强的方式,采用了4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接,使模型在更小的范围内识别目标。
Focus结构:进入Backbone前,对图片进行切片操作,具体操作是在一张图片中 每隔一个像素拿到一个值,类似于邻近下采样,这样就拿到了四张 图片(4个通道),一共12个通道(RGB)
YOLO v5模型效果
9.语义分割问题
(1)语义分割:找到同一画面中的不同类型目标区
和其他问题的区别:实例分割:同一类型目标要分出来具体实例(谁是谁)
目标检测:标出来外包围矩形
10.语义分割基本思想
语义分割目标:对图中每一个像素进行分类,得到对应标签
基本思想:滑动窗口,滑动窗口的缺点:滑动次数太多,计算太慢,重复计算太多。
FCN网络结构
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
11.反卷积与反池化
(1)基本概念:𝟏 × 𝟏卷积
转置卷积
上池化(unpooling )
12.FCN具体实现
(1)FCN网络结构:卷积部分
FCN中第6、7、8层都是通过1 × 1卷积得到的,第6层的输出通道是4096,第7层的输出通道是4096 ,第8层的输出是1000(类),即1000个特征图(称为heatmap)
输出的特征图(称为heatmap),颜色越贴近红色表示对应数值越大
(2)反卷积部分:跳级结构
蓝色:卷积层;绿色:Max Pooling层;黄色: 求和运算;灰色: 裁剪
(3)FCN-32s
(4)FCN-16s
(5)FCN-8s
反卷积部分:跳级结构
13.Deeplab目标分割实例
步骤:
首先导入模型,之后查看导入模型结果,之后打开输入图像,再进行预处理,然后进行模型语义分割;最后绘制最后结果。