博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习利器:TensorFlow与深度卷积神经网络
阅读量:6814 次
发布时间:2019-06-26

本文共 1761 字,大约阅读时间需要 5 分钟。

前言

\\

图像识别技术越来越多地渗透到我们的日常生活中,人可以很快递判别图像类型,比如,很容易地识别一个图片是狮子还是其它动物,可以很容易地对人脸进行识别。但是对于机器来说,去识别一个图片是什么,是一个非常困难的问题。但在过去的几年中,图像识别技术取得了巨大的进展,在一些固定领域可以达到,甚至超越人类的识别精度,该技术称为深度卷积神经网络(Deep Convolutional Neural Network)。

\\

目前,学术界主要通过ImageNet的Benchmark问题,去验证图像识别技术的发展程度,卷积神经网络模型包括:QuocNet, AlexNet, Inception (GoogLeNet), BN-Inception-v2,以及最新的Inception-v3模型。其中,AlexNet的top-5的错误率为15.3%;Inception(GoogLeNet)降到6.67%;BN-Inception-v2降到4.9%;Inception-v3降到3.46%。

\\

如果用户有业务图片数据,如何利用开源现有的模型进行训练呢?如何进行花图片识别,人物图片识别,车辆图片识别,医学图片识别呢?本文主要介绍TensorFlow开源模型Cifar10,Inception V3,Vgg19的主要架构和代码。如果用户需要对业务图片识别,可再已有模型的基础上持续改进,进行训练及调优,加速研发,满足业务需求。

\\

卷积神经网络回顾

\\

卷积神经网络是基于人工神经网络的深度机器学习方法,成功应用于图像识别领域。CNN采用了局部连接和权值共享,保持了网络的深层结构,同时又减少了网络参数,使模型具有良好的泛化能力又较容易训练,CNN的训练算法是梯度下降的错误反向传播(Back Propagate,BP)算法的一种变形。

\\

卷积神经网络通常采用若干个卷积和子采样层的叠加结构作为特征抽取器。卷积层与子采样层不断将特征图缩小,但是特征图的数量往往增多。特征抽取器后面接一个分类器,分类器通常由一个多层感知机构成。在特征抽取器的末尾,我们将所有的特征图展开并排列成为一个向量,称为特征向量,该特征向量作为后层分类器的输入,如下图所示:

\\

(点击放大图像)

\\

\\

卷积过程有三个二维矩阵参与,它们分别是两个特征图和一个卷积核:原图inputX、输出图outputY、卷积核kernelW。卷积过程可以理解为卷积核卷积核kernalW覆盖在原图inputX的一个局部的面上,kernalW对应位置的权重乘于inputX对应神经元的输出,对各项乘积求和并赋值到outputY矩阵的对应位置。卷积核在inputX图中从左向右,从上至下每次移动一个位置,完成整张inputX的卷积过程,如下图所示:

\\

(点击放大图像)

\\

\\

子采样有两种方式,一种是均值子采样,一种是最大值子采样,如下图所示:

\\

(点击放大图像)

\\

\\

在最大值子采样中的卷积核中,只有一个值为1,其他值为0,保留最强输入值,卷积核在原图上的滑动步长为2,相当于把原图缩减到原来的1/4。均值子采样卷积核中的每个权重为0.25,保留的是输入图的均值数据。

\\

卷积核的本质是神经元之间相互连接的权重,而且该权重被属于同一特征图的神经元所共享。在实际的网络训练过程中,输入神经元组成的特征图被切割成卷积核大小的小图。每个小图通过卷积核与后层特征图的一个神经元连接。一个特征图上的所有小图和后层特征图中某个神经元的连接使用的是相同的卷积核,也就是同特征图的神经元共享了连接权重。

\\

TensorFlow API构建卷积神经网络

\\

在TensorFlow中,卷积神经网络(Convolutional neural networks,CNNs)主要包含三种类型的组件,主要API如下:

\\
  • 卷积层(Convolutional Layer),构建一个2维卷积层,常用的参数有:\
\conv = tf.layers.conv2d(\        inputs=pool,\        filters=64,\        kernel_size=[5, 5],\        padding=\"same\

转载地址:http://kqzzl.baihongyu.com/

你可能感兴趣的文章
Echarts 基本设置 设置图表位置
查看>>
AliOS Things网络适配框架 - SAL
查看>>
Hystrix之外健壮微服务的新选择:Sentinel 发布首个生产版本
查看>>
数组 将一个数组的元素和另一个素组的元素相加,然后赋给第三个数组
查看>>
缓存服务varnish
查看>>
配置电信网通双线双IP的解决办法(Linux Ip Route2,基于源地址进行路由选择)
查看>>
Python常用模块汇总
查看>>
Java的类加载机制 为什么会出现锁机制?
查看>>
sa提开放系统下的虚拟新贵Virtualbox权技巧之xp_regwrite替换sethc.exe
查看>>
SpringBoot开发案例之整合Dubbo提供者(一)
查看>>
变态的程序
查看>>
腾讯抄你肿么办 ?
查看>>
java多线程的Fork/Join
查看>>
Java SE7新特性之try-with-resources语句
查看>>
利用ADOX修改ACCESS表字段名(VC/MFC)
查看>>
ftp 服务器的配置
查看>>
JavaScript的浏览器兼容性问题小结。
查看>>
Oracle Hint的用法
查看>>
Postfix邮件系统
查看>>
《编写可读代码的艺术》读书文摘--第一部分 表面层次的改进
查看>>