深度学习总结(lecture 6)VGG13、16、19

lecture 6:VGG13、16、19

目录

1、VGG结构

这里写图片描述
这里写图片描述
 LeNet5用大的卷积核来获取图像的相似特征
 AlexNet用9*9、11*11的滤波器
 VGG 巨大的进展是通过依次采用多个 3×3 卷积,模仿出更大的感受野(receptive field)效果,例如 5×5 与 7×7。
 这些思想也被用在更多的网络架构中,如 Inception 与 ResNet。

VGG16的效果最好
这里写图片描述
这里写图片描述

  • VGG16 的第 3、4、5 块(block):256、512、512个 3×3 滤波器依次用来提取复杂的特征。
  • 其效果就等于是一个带有 3 个卷积层的大型的 512×512 大分类器。

2、VGG结构解释

(1)VGG全部使用3*3卷积核、2*2池化核,不断加深网络结构来提升性能。
(2)A到E网络变深,参数量没有增长很多,参数量主要在3个全连接层。
(3)训练比较耗时的依然是卷积层,因计算量比较大。
(4)VGG有5段卷积,每段有2~3个卷积层,每段尾部用池化来缩小图片尺寸。
(5)每段内卷积核数一样,越靠后的段卷积核数越多:64–128–256–512–512。

3、3*3卷积核的优点

(1)多个一样的3*3的卷积层堆叠非常有用
(2)两个3*3的卷积层串联相当于1个5*5的卷积层,即一个像素会跟周围5*5的像素产生关联,感受野大小为5*5。
(3)三个3*3的卷积层串联相当于1个7*7的卷积层,但3个串联的3*3的卷积层有更少的参数量,有更多的非线性变换(3次ReLU激活函数),使得CNN对特征的学习能力更强。
这里写图片描述
两个3*3的卷积层串联相当于1个5*5的卷积层

4、VGG的 Multi-Scale方法

这里写图片描述
这里写图片描述

  •  LRN层作用不大。
     越深的网络效果越好。
     1*1的卷积也是很有效的,但是没有3*3的卷积好
     大的卷积核可以学习更大的空间特征

5、VGG应用

VGG9、VGG11、VGG13、VGG16、VGG19

出现了梯度消失的问题
只在第一个卷积(name=’block1_conv1’)后面加了BatchNormalization就解决了

def VGG16(input_shape=(64,64,3), classes=6):

    X_input = Input(input_shape)

    "block 1"
    X = Conv2D(filters=4, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block1_conv1')(X_input)
    X = BatchNormalization(axis=3)(X)
    X = Conv2D(filters=4, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block1_conv2')(X)
    X = MaxPooling2D((2,2), strides=(2,2), name='block1_pool')(X)

    "block 2"
    X = Conv2D(filters=8, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block2_conv1')(X)
    X = BatchNormalization(axis=3)(X)
    X = Conv2D(filters=8, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block2_conv2')(X)
    X = MaxPooling2D((2,2), strides=(2,2), name='block2_pool')(X)

    "block 3"
    X = Conv2D(filters=16, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block3_conv1')(X)
    X = Conv2D(filters=16, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block3_conv2')(X)
    X = Conv2D(filters=16, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block3_conv3')(X)
    X = MaxPooling2D((2,2), strides=(2,2), name='block3_pool')(X)

    "block 4"
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block4_conv1')(X)
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block4_conv2')(X)
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block4_conv3')(X)
    X = MaxPooling2D((2,2), strides=(2,2), name='block4_pool')(X)

    "block 5"
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block5_conv1')(X)
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block5_conv2')(X)
    X = Conv2D(filters=32, kernel_size=(3,3), strides=(1,1), activation='relu', padding='same', name='block5_conv3')(X)
    X = MaxPooling2D((2,2), strides=(2,2), name='block5_pool')(X)

    "flatten, fc1, fc2, fc3"
    X = Flatten(name='flatten')(X)
    X = Dense(256,    activation='relu',    name='fc1')(X)
    X = Dense(256,    activation='relu',    name='fc2')(X)
    X = Dense(classes, activation='softmax', name='fc3')(X)

    model = Model(inputs=X_input, outputs=X, name='VGG16')

    return model
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于深度学习给特斯拉汽车学习端对端的自动驾驶,训练模型根据车辆的前置相机所拍摄的路况图像,实现对车辆转向角度的预测.zip # Deep Learning for Self-Driving Cars : DeepTesla http://selfdrivingcars.mit.edu/deeptesla/ ## 题目描述 本项目中,你需要利用MIT 6.S094 这门公开课中的Tesla数据集训练深度学习模型,根据车辆的前置相机所拍摄的路况图像,实现对车辆转向角度的预测。 ![](./images/img/gif_tesla_vgg.gif) ## 数据 主要包括tesla在两种不同驾驶模式(human driving和autopilot)下的前置相机录制的视频和车辆的转向控制信号。数据可以从这里下载:[百度云](https://pan.baidu.com/s/1c2J2IFA) 数据格式如下: - 前置相机记录的视频: 截图如下 ![](./images/img/frame_1173.jpg) - 行驶过程中的控制信号: CSV格式 ts_micro | frame_index | wheel ------------------|-------------|------- 1464305394391807 | 0 | -0.5 1464305394425141 | 1 | -0.5 1464305394458474 | 2 | -0.5 其中,`ts_micro`是时间戳,`frame_index`是帧编号,`wheel`是转向角度(以水平方向为基准,+为顺时针,-为逆时针) ## 建议 * [课程讲义](https://www.dropbox.com/s/q34bi7t0udms01x/lecture3.pdf?dl=1)提供了很好的入门介绍,原链接在dropbox,国内用户可以从[百度云](https://pan.baidu.com/s/1i472Jad)下载。 * [课程项目介绍](http://selfdrivingcars.mit.edu/deeptesla/)阐述了实现思路(ConvNetJS)。 * [课程网页应用](http://selfdrivingcars.mit.edu/deepteslajs/)提供了试验环境,可以测试模型的效果。 * 除了课程介绍之外的几个有用的课程和论文: - [End to End Learning for Self-Driving Cars](https://images.nvidia.com/content/tegra/automotive/images/2016/solutions/pdf/end-to-end-dl-using-px.pdf) - [Dataset and code for 2016 paper "Learning a Driving Simulator" ](https://github.com/commaai/research/blob/master/train_steering_model.py) - [CS231n Convolutional Neural Networks for Visual Recognition](http://cs231n.github.io/neural-networks-1/) * 我们建议将你的网络输入课程所提供的[网页应用](http://selfdrivingcars.mit.edu/deepteslajs/)中,利用ConvNetJS来测试、查看模型的预测效果(并不必须),关于ConvNetJS的资料,可以参考[karpathy/convnetjs/](http://cs.stanford.edu/people/karpathy/convnetjs/)。 ## 要求 * 本项目要求使用python3 + keras + tensorflow + jupyter notebook来完成。项目目录如下图所示 - epochs/ 这里包含训练所需的视频和转向信号(无需修改) - images/ 这里包含生成结果视频所需的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值