当前位置: 首页 > news >正文

怎么查网站的icp备案东莞购物网站建设

怎么查网站的icp备案,东莞购物网站建设,dedecms 食品网站,北海网站建设网MobileNet 文章目录MobileNet1. MobileNet概述2. 深度可分离卷积#xff08;depthwise separable convolution#xff09;2.1 深度可分离卷积通俗理解2.2 深度可分离卷积对于参数的优化3. MobileNet网络结构4. 代码实现4.1 卷积块4.2 深度可分离卷积块4.3 MobileNet定义4.4 完…MobileNet 文章目录MobileNet1. MobileNet概述2. 深度可分离卷积depthwise separable convolution2.1 深度可分离卷积通俗理解2.2 深度可分离卷积对于参数的优化3. MobileNet网络结构4. 代码实现4.1 卷积块4.2 深度可分离卷积块4.3 MobileNet定义4.4 完整代码1. MobileNet概述 网络专注于移动端或者嵌入式设备中的轻量级CNN相比于传统卷积神经网络在准确率小幅度降低的前提下大大减少模型参数与运算量。 传统卷积与DW卷积Depthwise Conv的差异在传统卷积中每个卷积核的channel与输入特征矩阵的channel相等每个卷积核都会与输入特征矩阵的每一个维度进行卷积运算输出特征矩阵channel等于卷积核的个数。而在DW卷积中每个卷积核的channel都是等于1的每个卷积核只负责输入特征矩阵的一个channel卷积核的个数输入特征矩阵的channel数输出特征矩阵的channel数 MobileNet模型是Google针对手机等嵌入式设备提出的一种轻量级的深层神经网络其使用的核心思想便是深度可分离卷积 depthwise separable convolution 2. 深度可分离卷积depthwise separable convolution 2.1 深度可分离卷积通俗理解 传统的三通道卷积过程如下 那么深度可分离卷积能用到轻量级的网络中保证效率减少参数量其具体是如何巧妙设计优化的下图为深度可分离卷积的运作过程。 深度可分离卷积分为两个部分Depthwise Convolution 深度卷积、Pointwise Convolution点卷积这是两个不同的卷积过程传统三通道卷积的过程是一个卷积核的厚度有三层每一层与输入的feature map的每一层做加权求和从而生成输出的一个通道故输出通道数取决于卷积核的数量卷积核的通道数等同于输入feature map的通道数对齐 而Depthwise Convolution不同其卷积核的厚度只有1对于输入的feature map特征图谱的每一个通道都有一个不同的厚度为1的卷积核相对应卷积核数量与输入通道数对应每个卷积核都只对对应通道的feature map做卷积操作这样得到的每一个通道的卷积操作得到一个1通道的feature map这样深度卷积之后的输出通道数与输入通道数一致。下图中绿色、红色、黄色表示的不同的通道数为1的卷积核。 点卷积Pointwise Convolution是采用1×11\times11×1大小的卷积核此时的卷积核是传统卷积核其通道数与输入通道数相同分别遍历输入的所有通道得到的输出通道取决于卷积核的个数点卷积与传统卷积方式相同只是卷积核使用1×11\times11×1起到一个改变通道数的作用直观意义上讲就是加厚输出的feature map其实际的意义在于由于深度卷积的方式对于特征提取不够明显再通过点卷积进行一些信息补偿在保证参数量减少的情况下尽可能的让网络的效果保持一个可观的水平。 2.2 深度可分离卷积对于参数的优化 举例说明优化的效果由于MobileNet是用于嵌入式设备等受限的设备上的网络其参数肯定是大幅度降低的。 有下列场景   使用3×33\times33×3大小的卷积层输入通道数为16输出通道数为32. 使用传统卷积的方式需要32个3×33\times33×3的卷积核对16个通道中的每一层数据进行卷积计算最后得到32个输出通道的feature map所需要的参数量为 16×32×3×3460816\times 32\times 3\times 34608 16×32×3×34608   采用深度可分离卷积由于输入的通道数为16那么采用16个3×33\times33×3大小的卷积核对16个通道的feature map分别卷积得到一个16通道的输出feature map为了得到所需要的32通道的输出采用点卷积的方式使用32个1×11\times11×1大小的卷积核遍历16个通道的输入feature map那么参数量为 16×3×316×32×1×165616\times 3\times 316\times 32\times 1\times 1656 16×3×316×32×1×1656   通过上述实验对比参数量确实大大减少。 注意深度可分离卷积指的是深度卷积Depthwise Conv点卷积Pointwise Conv而并不是一个dwDepthwise的缩写就是一个深度可分离卷积这个概念混淆度很高 3. MobileNet网络结构 一个深度可分离卷积的结构如下所示 首先对输入做深度卷积Depthwise Conv深度卷积的特点是是卷积核的个数与处理的输入通道数一致同时每个卷积核通道数都是1每个1通道卷积核去卷积输入feature map里的一个通道的数据导致深度卷积处理之后输入与输出的通道数总是不变的。 深度卷积之后就是BN层BN层为Batch Normalization对数据做归一化处理再通过激活函数接下来是一个1×11\times11×1的Conv层其就是点卷积的层使用1×11\times11×1的卷积核进行卷积操作改变通道数再进行归一化和激活输出。 BN的作用以及应用过程已经在笔者的博文《CV学习笔记-Inception》中详细介绍不再赘述。 MobileNet的网络结构图如下所示 在此不进行逐层分析仅对初始几层进行分析后面的读者可以自行推导计算过程一致。 首先输入为224×224×3224\times 224\times 3224×224×3卷积核的shape为3×3×3×323\times 3\times 3\times 323×3×3×32通过卷积核的shape能够看出本次卷积操作采用的是一个传统的卷积计算卷积核的通道数为3个数为32那么得到的输出为112×112×32112\times 112\times 32112×112×32stride步长为2此处的通道数32与卷积采用的卷积核个数32对应之后经过Conv dw层这个是深度卷积层dw即Depthwise输入feature map为112×112×32112\times 112\times 32112×112×32所用卷积核shape为3×3×323\times 3\times 323×3×32注意与上面一层的卷积层相区别少了一个维度因为每一个卷积核的通道数为1每个1通道卷积核只需要卷积feature map中的一个通道的数据故经过深度卷积之后的输出通道数不变输出的feature map为112×112×32112\times 112\times 32112×112×32然后通过一个点卷积层卷积核shape为1×1×32×641\times 1\times 32\times 641×1×32×64即使用64个1×1×1×321\times 1\times 1 \times 321×1×1×32的卷积核进行卷积操作点卷积卷积的方式与传统的卷积相同只是在尺寸上采用的1×11\times 11×1的卷积核用点卷积的方式改变通道数输出的feature map shape为112×112×64112\times 112\times 64112×112×64接下来就可以留给读者推算了深度可分离卷积部分已经作出了分析。 4. 代码实现 4.1 卷积块 代码按照传统的Conv-BN-Relu组合拳进行卷积块的定义padding采用same方式 def _conv_block(inputs, filters, kernel(3, 3), strides(1, 1)):x Conv2D(filters, kernel,paddingsame,use_biasFalse,stridesstrides,nameconv1)(inputs)x BatchNormalization(nameconv1_bn)(x)return Activation(relu6, nameconv1_relu)(x)4.2 深度可分离卷积块 深度可分离卷积分为深度卷积和点卷积x DepthwiseConv2D([params])即为深度卷积块的定义使用的是DepthwiseConv2D()在深度卷积完成BNRelu后紧接着接上了一个点卷积模块x Conv2D(pointwise_conv_filters,(1, 1))使用1×11\times 11×1卷积核来改变通道数。 def _depthwise_conv_block(inputs, pointwise_conv_filters,depth_multiplier1, strides(1, 1), block_id1):x DepthwiseConv2D((3, 3),paddingsame,depth_multiplierdepth_multiplier,stridesstrides,use_biasFalse,nameconv_dw_%d % block_id)(inputs)x BatchNormalization(nameconv_dw_%d_bn % block_id)(x)x Activation(relu6, nameconv_dw_%d_relu % block_id)(x)x Conv2D(pointwise_conv_filters, (1, 1),paddingsame,use_biasFalse,strides(1, 1),nameconv_pw_%d % block_id)(x)x BatchNormalization(nameconv_pw_%d_bn % block_id)(x)return Activation(relu6, nameconv_pw_%d_relu % block_id)(x)4.3 MobileNet定义 按照MobileNet的网络结构将其复现成python程序整合的就是上面定义的卷积模块和深度可分离卷积模块。预训练权重文件可以在网络上下载 def MobileNet(input_shape[224,224,3],depth_multiplier1,dropout1e-3,classes1000):img_input Input(shapeinput_shape)# 224,224,3 - 112,112,32x _conv_block(img_input, 32, strides(2, 2))# 112,112,32 - 112,112,64x _depthwise_conv_block(x, 64, depth_multiplier, block_id1)# 112,112,64 - 56,56,128x _depthwise_conv_block(x, 128, depth_multiplier,strides(2, 2), block_id2)# 56,56,128 - 56,56,128x _depthwise_conv_block(x, 128, depth_multiplier, block_id3)# 56,56,128 - 28,28,256x _depthwise_conv_block(x, 256, depth_multiplier,strides(2, 2), block_id4)# 28,28,256 - 28,28,256x _depthwise_conv_block(x, 256, depth_multiplier, block_id5)# 28,28,256 - 14,14,512x _depthwise_conv_block(x, 512, depth_multiplier,strides(2, 2), block_id6)# 14,14,512 - 14,14,512x _depthwise_conv_block(x, 512, depth_multiplier, block_id7)x _depthwise_conv_block(x, 512, depth_multiplier, block_id8)x _depthwise_conv_block(x, 512, depth_multiplier, block_id9)x _depthwise_conv_block(x, 512, depth_multiplier, block_id10)x _depthwise_conv_block(x, 512, depth_multiplier, block_id11)# 14,14,512 - 7,7,1024x _depthwise_conv_block(x, 1024, depth_multiplier,strides(2, 2), block_id12)x _depthwise_conv_block(x, 1024, depth_multiplier, block_id13)# 7,7,1024 - 1,1,1024x GlobalAveragePooling2D()(x)x Reshape((1, 1, 1024), namereshape_1)(x)x Dropout(dropout, namedropout)(x)x Conv2D(classes, (1, 1),paddingsame, nameconv_preds)(x)x Activation(softmax, nameact_softmax)(x)x Reshape((classes,), namereshape_2)(x)inputs img_inputmodel Model(inputs, x, namemobilenet_1_0_224_tf)model_name mobilenet_1_0_224_tf.h5model.load_weights(model_name)return model4.4 完整代码 本代码完成了一个图片的识别图片如下可以重命名为elephant.jpg输入网络运行。 #-------------------------------------------------------------# # MobileNet的网络部分 #-------------------------------------------------------------# import warnings import numpy as np# from keras.preprocessing import imagefrom keras.models import Model from keras.layers import DepthwiseConv2D,Input,Activation,Dropout,Reshape,BatchNormalization,GlobalAveragePooling2D,GlobalMaxPooling2D,Conv2D from keras.applications.imagenet_utils import decode_predictions from keras.utils import image_utils as image from keras import backend as Kdef MobileNet(input_shape[224,224,3],depth_multiplier1,dropout1e-3,classes1000):img_input Input(shapeinput_shape)# 224,224,3 - 112,112,32x _conv_block(img_input, 32, strides(2, 2))# 112,112,32 - 112,112,64x _depthwise_conv_block(x, 64, depth_multiplier, block_id1)# 112,112,64 - 56,56,128x _depthwise_conv_block(x, 128, depth_multiplier,strides(2, 2), block_id2)# 56,56,128 - 56,56,128x _depthwise_conv_block(x, 128, depth_multiplier, block_id3)# 56,56,128 - 28,28,256x _depthwise_conv_block(x, 256, depth_multiplier,strides(2, 2), block_id4)# 28,28,256 - 28,28,256x _depthwise_conv_block(x, 256, depth_multiplier, block_id5)# 28,28,256 - 14,14,512x _depthwise_conv_block(x, 512, depth_multiplier,strides(2, 2), block_id6)# 14,14,512 - 14,14,512x _depthwise_conv_block(x, 512, depth_multiplier, block_id7)x _depthwise_conv_block(x, 512, depth_multiplier, block_id8)x _depthwise_conv_block(x, 512, depth_multiplier, block_id9)x _depthwise_conv_block(x, 512, depth_multiplier, block_id10)x _depthwise_conv_block(x, 512, depth_multiplier, block_id11)# 14,14,512 - 7,7,1024x _depthwise_conv_block(x, 1024, depth_multiplier,strides(2, 2), block_id12)x _depthwise_conv_block(x, 1024, depth_multiplier, block_id13)# 7,7,1024 - 1,1,1024x GlobalAveragePooling2D()(x)x Reshape((1, 1, 1024), namereshape_1)(x)x Dropout(dropout, namedropout)(x)x Conv2D(classes, (1, 1),paddingsame, nameconv_preds)(x)x Activation(softmax, nameact_softmax)(x)x Reshape((classes,), namereshape_2)(x)inputs img_inputmodel Model(inputs, x, namemobilenet_1_0_224_tf)model_name mobilenet_1_0_224_tf.h5model.load_weights(model_name)return modeldef _conv_block(inputs, filters, kernel(3, 3), strides(1, 1)):x Conv2D(filters, kernel,paddingsame,use_biasFalse,stridesstrides,nameconv1)(inputs)x BatchNormalization(nameconv1_bn)(x)return Activation(relu6, nameconv1_relu)(x)def _depthwise_conv_block(inputs, pointwise_conv_filters,depth_multiplier1, strides(1, 1), block_id1):x DepthwiseConv2D((3, 3),paddingsame,depth_multiplierdepth_multiplier,stridesstrides,use_biasFalse,nameconv_dw_%d % block_id)(inputs)x BatchNormalization(nameconv_dw_%d_bn % block_id)(x)x Activation(relu6, nameconv_dw_%d_relu % block_id)(x)x Conv2D(pointwise_conv_filters, (1, 1),paddingsame,use_biasFalse,strides(1, 1),nameconv_pw_%d % block_id)(x)x BatchNormalization(nameconv_pw_%d_bn % block_id)(x)return Activation(relu6, nameconv_pw_%d_relu % block_id)(x)def relu6(x):return K.relu(x, max_value6)def preprocess_input(x):x / 255.x - 0.5x * 2.return xif __name__ __main__:model MobileNet(input_shape(224, 224, 3))img_path elephant.jpgimg image.load_img(img_path, target_size(224, 224))x image.img_to_array(img)x np.expand_dims(x, axis0)x preprocess_input(x)print(Input image shape:, x.shape)preds model.predict(x)print(np.argmax(preds))print(Predicted:, decode_predictions(preds,1)) # 只显示top1 实验输出
http://www.w-s-a.com/news/494256/

相关文章:

  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子
  • 杭州网站建设招聘网长沙网络销售公司
  • 网站制作一年多少钱免费做电子章网站
  • 信誉好的营销网站建设徐州市铜山新区建设局网站
  • 建行网站关于我们山西seo和网络推广
  • 1m带宽做网站怎么样深圳网站建设制作开发公司
  • 网站建设 服务内容 费用郴州网站建设公司哪里有
  • 网站关键词重要性育才网站建设
  • 网络安全形势下怎么建设学校网站wordpress最新主题下载
  • 自己建设网站需要什么条件.gs域名做网站怎么样
  • 网上做公益的网站推广手机卡返佣平台
  • 网站是公司域名是个人可以南京建设银行官方网站
  • 做互联网网站的会抓百度网盟推广 网站
  • 商务网站开发设计结论微信报名小程序怎么制作
  • 网站建设销售简历wordpress七比2
  • 制作网站报价工程项目查询哪个网站
  • 深圳移动网站建设制作公司网站建设的认识
  • 网站建设脚本语言有哪些想开网店哪个平台好
  • 视频网站用什么做的好深圳的小程序开发公司