使用TensorFlow构建MobileNet-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

在此之前,我讨论了MobileNet的架构

接下来,我们将看到如何使用TensorFlow从头开始实现这个架构

实现:

MobileNet架构

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

图显示了我们将在代码中实现的MobileNet架构。网络从Conv.BatchNorm.ReLU块开始,并遵循多个MobileNet块。它以平均池和完全连接层结束,Softmax被激活。

我们可以看到,架构有一个模式-Conv dw/s1,后跟Conv/s1,依此类推。这里dw是深度层和步幅数,后跟Conv层和步长数。这两条线是MobileNet块。

过滤器形状列提供了核心尺寸和要使用的过滤器数量的详细信息。列的最后一位数字表示过滤器的数量。我们可以看到过滤器的数量从32增加到64,从64增加到128,从128增加到256,以此类推。

最后一列显示了当我们深入网络时,图像大小是如何变化的。输入尺寸为224*224像素,有三个通道,输出层分类为1000。

普通CNN架构块(左)和MobileNet架构(右)之间的差异:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

构建网络时需要记住的几点:

所有层都遵循批次标准化和ReLU非线姓。

与具有Conv2D层的普通CNN模型不同,MobileNet具有深度Conv层,如图所示。

工作流

从TensorFlow库导入所有必要的层

为MobileNet块编写辅助函数

构建模型的主干

使用助手函数构建模型的主要部分

导入图层

将张量流导入为tf

#导入所有必要的图层

从tensorflow.keras.layers导入输入,深度Conv2D

从tensorflow.keras.layers导入Conv2D,BatchNormalization

从tensorflow.keras.layers导入ReLU.AvgPool2D.Flatten.Dense

从tensorflow.keras导入模型

Keras已经内置了DepthwiseConv层,所以我们不需要从头开始创建它。

MobileNet阻止

MobileNet块的表示

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

要为MobileNet块创建函数,我们需要以下步骤:

功能输入:

a. 张量(x)

b. 卷积层滤波器数(滤波器)

c. 卷积层步长(步长)

功能:

a. 应用3×3逐步卷积层,然后批量标准化层和ReLU激活

b. 应用具有1×1卷积层的过滤器,然后批量标准化层和ReLU激活

返回张量(输出)

这三个步骤在下面的代码块中实现。

#MobileNet区块

def mobilnet _ block(x,过滤器,步幅):

x=深度Conv2D(内核_大小=3,步幅=步幅,填充=”相同”)(x)

x=BatchNormalization()(x)

x=ReLU()(x)

x=Conv2D(过滤器=过滤器,内核大小=1,步幅=1)(x)

x=BatchNormalization()(x)

x=ReLU()(x)

返回x

构建模型的主干

如图2所示,第一层为Conv/s2,滤波器形状为3×32。

模型的主干

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

#模型的主干

输入=输入(形状=(224224,3))

x=Conv2D(滤波器=32,内核大小=3,步幅=2,填充=”相同”)(输入)

x=BatchNormalization()(x)

x=ReLU()(x)

模型的主要部分:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

#模型的主要部分

x=mobilnet _ block(x,过滤器=64,跨距=1)

x=mobilnet _ block(x,过滤器=128,跨距=2)

x=mobilnet _ block(x,过滤器=128,跨距=1)

x=mobilnet _ block(x,过滤器=256,跨距=2)

x=mobilnet _ block(x,过滤器=256,步幅=1)

x=mobilnet _ block(x,过滤器=512,跨距=2)

对于范围(5)中的_:

x=mobilnet _ block(x,过滤器=512,跨距=1)

x=mobilnet _ block(x,过滤器=1024,跨距=2)

x=mobilnet _ block(x,过滤器=1024,步长=1)

x=AvgPool2D(池_大小=7,步幅=1,数据_格式=’通道_第一’)(x)

输出=密集(单位=1000,激活=’softmax’)(x)

模型=模型(输入=输入,输出=输出)

模型.summary()

模型摘要的片段

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

#绘制模型

tf.keras.utils.plot _ model(模型,到_文件=’model.png’,显示_形状=True,显示_ dtype=False,显示_层_名称=True.rankdir=’TB’,展开_嵌套=False.dpi=96)

模型图的片段:

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

TensorFlow的MobileNet模型用于实现:

将张量流导入为tf

#导入所有必要的图层

从tensorflow.keras.layers导入输入,深度Conv2D

从tensorflow.keras.layers导入Conv2D,BatchNormalization

从tensorflow.keras.layers导入ReLU.AvgPool2D.Flatten.Dense

从tensorflow.keras导入模型

#MobileNet区块

def mobilnet _ block(x,过滤器,步幅):

x=深度Conv2D(内核_大小=3,步幅=步幅,填充=”相同”)(x)

x=BatchNormalization()(x)

x=ReLU()(x)

x=Conv2D(过滤器=过滤器,内核大小=1,步幅=1)(x)

x=BatchNormalization()(x)

x=ReLU()(x)

返回x

#模型主干

输入=输入(形状=(224224,3))

x=Conv2D(滤波器=32,内核大小=3,步幅=2,填充=”相同”)(输入)

x=BatchNormalization()(x)

x=ReLU()(x)

#模型的主要部分

x=mobilnet _ block(x,过滤器=64,跨距=1)

x=mobilnet _ block(x,过滤器=128,跨距=2)

x=mobilnet _ block(x,过滤器=128,跨距=1)

x=mobilnet _ block(x,过滤器=256,跨距=2)

x=mobilnet _ block(x,过滤器=256,步幅=1)

x=mobilnet _ block(x,过滤器=512,跨距=2)

对于范围(5)中的_:

x=mobilnet _ block(x,过滤器=512,跨距=1)

x=mobilnet _ block(x,过滤器=1024,跨距=2)

x=mobilnet _ block(x,过滤器=1024,步长=1)

x=AvgPool2D(池_大小=7,步幅=1,数据_格式=’通道_第一’)(x)

输出=密集(单位=1000,激活=’softmax’)(x)

模型=模型(输入=输入,输出=输出)

模型.summary()

#绘制模型

tf.keras.utils.plot _ model(模型,到_文件=’model.png’,显示_形状=True,显示_ dtype=False,显示_层_名称=True.rankdir=’TB’,展开_嵌套=False.dpi=96)

结论

MobileNet是最小的深度神经网络之一。它快速高效,可以在没有高端GPU的设备上运行。

当使用Keras(在TensorFlow上)这样的框架时,这些网络的实现非常简单。

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 使用TensorFlow构建MobileNet-600学习网