第四周上课内容总结[神经网络与深度学习]

 一、基本卷积神经网络

1.AlexNet

问题提出:

 网络结构:如下图所示

 网络说明:该网络一共有8层可学习层——5层卷积层和3层全连接层,如下图所示,左侧为连接                    数,右侧为参数。

  改进:(1)池化层均采用最大池化

             (2)选用ReLU作为非线性环节的激活函数

             (3)网络规模扩大,参数数量接近6000万

             (4)出现“多个卷积层+一个池化层”的结构

        对其进行详细说明,如下:

①改进输入样本,最简单、通用的图像数据变形的方式。

        从原始图像(256,256)中,随机的crop出 一些图像(224,224)。【平移变换,crop 】

        水平翻转图像。【反射变换,flip】

        给图像增加一些随机的光照。【光照、彩 色变换,color jittering】

②改进激活函数。

        采用ReLU替代Tan Sigmoid;

        用于卷积层和全连接层之后。     

 ③添加Dropout:

        在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数。

 ④采用双GPU策略:

        AlexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信。

 普遍规律:随网络深入,宽、高衰减,通道数增加。

2.VGG-16

可视化:

网络提出: 

网络结构:

网络说明: 

        改进:网络规模进一步增大,参数数量约为1.38亿;由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。

        普遍规律:随网络深入,高和宽衰减,通道数增多。

3.残差网络

非残差网络的缺陷:

 梯度消失问题:

 构造残差网络:

        残差块:

         残差网络:

 

        普通网络的基准模型受VGG网络的启发

        卷积层主要有3×3的过滤器,并遵循两个简 单的设计规则:①对输出特征图的尺寸相同的各层,都有相同数量的过滤器; ②如果特征 图的大小减半,那么过滤器的数量就增加一倍,以保证每一层的时间复杂度相同。

        ResNet模型比VGG网络更少的过滤器和更低的 复杂性。ResNet具有34层的权重层,有36亿 FLOPs,只是VGG-19(19.6亿FLOPs)的18%。

 二、常用数据集

1.1MNIST

MNIST 数据集主要由一些手写数字的图片和相应的标签组成,图片一共有 10 类,分别对应从 0~9

 原始的 MNIST 数据库一共包含下面4个文件:

 MNIST数据集是由0〜9手写数字图片和数字标签所组成的,由60000个训练样本和10000个测试样 本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。

 MNIST数据集加载的代码实现:

def load_data_fashion_mnist(batch_size, resize=None): #@save
    """下载Fashion-MNIST数据集,然后将其加载到内存中。"""
    trans = [transforms.ToTensor()]
    if resize:
        trans.insert(0, transforms.Resize(resize))
    trans = transforms.Compose(trans)
    mnist_train = torchvision.datasets.FashionMNIST(
        root="../data", train=True, transform=trans, download=True)
    mnist_test = torchvision.datasets.FashionMNIST(
        root="../data", train=False, transform=trans, download=True)
    return (data.DataLoader(mnist_train, batch_size, shuffle=True,
                            num_workers=get_dataloader_workers()),
            data.DataLoader(mnist_test, batch_size, shuffle=False,
                            num_workers=get_dataloader_workers()))

1.2Fashion-MNIST数据集

        FashionMNIST 是一个替代 MNIST 手写数字集 的图像数据集。 它是由 Zalando旗下的研究部门提供,涵盖了来自 10 种类别的 共 7 万个不同商品的正面图片;

        FashionMNIST 的大小、格式和训练集/测试集划分与原始的 MNIST 完全一致。60000/10000 的训练测试数据划分,28x28 的灰度图片。你可以直接用它来测试你的机器学习和深度学习 算法性能,且不需要改动任何的代码。

        以下是数据集中的类,以及来自每个类的10个随机图像:

2.CIFAR-10数据集

        CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每 个类有6000个图像。有50000个训练图像和10000个测试图像;

        数据集分为五个训练批次和一个测试批次,每个批次有10000 个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。

        以下是数据集中的类,以及来自每个类的10个随机图像:

 3.PASCAL VOC数据集

        PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning,VOC的全称是Visual Object Classes;.

        是目标分类(识别)、检测、分割最常用的数据集之一;

        第一届PASCAL VOC举办于2005年,2012年终止。常用的是 PASCAL 2012。

        PASCAL VOC数据集一共分成4个大类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前面部分声明图像数据来源,大小等元信息, 举例如下:

         Pascal VOC2012 Main中统计的训练、验证、验证与训练、测试图像:

        20类图像实例:

 4.MS COCO数据集(http://cocodataset.org)

        PASCAL的全称是Microsoft Common Objects in Context,起源 于微软于2014年出资标注的Microsoft COCO数据集;

        数据集以scene understanding为目标,主要从复杂的日常场景中截取;

        包含目标分类(识别)、检测、分割、语义标注等数据集;

        ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆;

        提供的标注类别有80 类,有超过33 万张图片,其中20万张有 标注,整个数据集中个体的数目超过150 万个。

         MS COCO数据集的示例:

 5.ImageNet数据集与ILSVRC

        始于2009年,李飞飞与Google的合作: “ImageNet: A Large-Scale Hierarchical Image Database”;

        总图像数据:14,197,122;

        总类别数:21841;

        带有标记框的图像数:1,034,908

ISLVRC 2012子数据集

        训练集:1,281,167张图片+标签;

        类别数:1,000;

        验证集:50,000张图片+标签;

        测试集:100,000张图片

三、算法评估

1.算法评估相关概念

        TP: 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数;

        FP: 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;

        FN:被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;

              (划分为负例,即没识别出来)

        TN: 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数;

        P(精确率): TP/(TP+FP)

        R(召回率): TP/(TP+FN)。召回率越高,准确度越低

P-R曲线:P-R的关系曲线图,表示了召回率和准确率之间的关系,精度(准确率)越高,召回率越低

举例说明: 假设一个测试集,其中图片只由大雁和飞机两种图片组成

    

        True positives : 飞机的图片被正确的识别成了飞机。

        False positives: 大雁的图片被错误地识别成了飞机。

        False negatives: 飞机的图片没有被识别出来,系统错误地认 为它们是大雁。

        True negatives: 大雁的图片没有被识别出来,系统正确地认 为它们是大雁。

        假设使用CNN得到飞机分类结果如下:

调整阈值可改变准确率或召回值 

        在刚才例子中,对应某阈值,前四个样本(左侧)被分类为飞机 改变阈值会改变划分,进一步影响准确率或召回值。

        可以通过改变阈值(也可以看作上下移动蓝色的虚线),来选择 让系统识别能出多少个图片,当然阈值的变化会导致Precision与 Recall值发生变化。比如,把蓝色虚线放到第一张图片下面,也就 是说让系统只识别出最上面的那张飞机图片,那么Precision的值就 是100%,而Recall的值则是20%。如果把蓝色虚线放到第二张图片 下面,也就是说让系统只识别出最上面的前两张图片,那么 Precision的值还是100%,而Recall的值则增长到是40%。

        不同阈值条件下,Precision与Recall的变化情况:

 AP计算:

        mAP:均值平均准确率

AP=\sum_{k=1}^{N}P(k)\Delta r(k)

其中𝑁代表测试集中所有图片的个数,𝑃(𝑘)表示在能识别出𝑘个图片的时候 Precision的值,而 Δ𝑟(𝑘)则表示识别图片个数从𝑘 − 1变化到𝑘时(通过调整阈值)Recall值的变化情况.

        每一个类别均可确定对应的AP ;

        多类的检测中,取每个类AP的平均值,即为mAP。

 三、目标检测与YOLO概述

1.目标检测问题:

        目标检测是在给定的图片中精确找到物体所在位置,并标注出物体的类别。 物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图 片的任何地方,并且物体还可以是多个类别。

2.数据集输出表达:

输出结构:

 其中P_{c} = 1 :图片中有目标;P_{c} = 0 :图片中无目标

目标检测实例:实际图像中有多个目标

3.目标检测技术发展:

        YOLO:一步法(two-stage):无需候选框,直接出最终结果,速度快,基本可以实时完成。

        YOLO的发展历程:

         YOLO家族性能比较图示

 四、目标检测基本思想

1.滑动窗口

存在以下问题:

(1)滑动次数太多,计算太慢 :假设图片为𝑤宽,ℎ高,识别一幅图片需要𝑇时间,则需要: 𝑤 ∗ ℎ ∗ 𝑇的总时间。 例如:图片大小448 × 448,识别一个目标需要0.05s,则: 总时间= 448 ∗ 448 ∗ 0.05 ≈ 10000𝑠,约3小时!

(2)目标大小不同,每一个滑动位置需要用很多框:图片宽度和高度都不相同,比例也不相同,因此需要取很多框。 例如:标准框100*50大小, • 取50*50,50*25,200*50,200*100等不同大小,在面积和宽高比变化 • 假设面积变化3类(0.5,1,2), 宽高比3类(0.5,1,2),则共有9种。 总时间是原来的9倍: 总时间= 10000 × 9 = 90000𝑠,约1天3小时!

滑动窗口的改进:

        一般图片中,大多数位置都不存在目标。

        可以确定那些更有可能出现目标的位置,再有针对性的用CNN进 行检测——两步法(Region Proposal)

        两步法依然很费时!

        进一步减少出现目标的位置,而且将目标分类检测和定位问题 合在一个网络里——一步法(YOLO)

分类问题扩展为回归+分类问题:

存在一些问题:

       (1) 有一个框里有多个,有个多个框里有一个,怎么办?

        解决方案:多个框里有一个目标,取目标中心点所在框 一个框里有多个,暂不能解决。

        (2)多类目标怎么办?

        解决方案:使用独热编码扩展类别数。

        (3)小目标怎么办?

        解决方案:使用单独网络拟合小目标,即设置多个bounding box

五、YOLO网络结构

1.YOLO网络结构概略图:

YOLO官方的模型结构图 :

        网络结构包含24个卷积层和2个全连接层;其中前20个卷积层用来做预训 练,后面4个是随机初始化的卷积层,和2个全连接层。

 2.YOLO网络输入:

        YOLO v1在PASCAL VOC数据集上进行的训练,因此输入图片为 448 × 448 × 3。实际中如为其它尺寸,需要resize或切割成要求尺寸。

3.YOLO模型处理:7×7网格划分

        将图片分割为s^{2}个grid(𝑆 = 7),每个grid cell的大小都是相等的;

        每个格子都可以检测是否包含目标;

        YOLO v1中,每个格子只能检测一种 物体(但可以不同大小)。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值