在卷积层的运用_Conv 卷积层

onv 卷积层

一.why CNN for image ?

1.Some Patterns are much smaller than the whole image.

一些模式比起整张图片来说更小,即寻找模式不用看完整的图像。

efc772eae61fe39142bc57001586d9a4.png

2.The same patterns appear in different regions.

同一个模式可能会出现在不同的区域。

2da1cddae66918dde852a7ffd979f3c0.png

3.Subsamping the pixels will not change the object.

子采样不会改变物体。

e6741c8b2bb693d6d81f595a8bfccf35.png

1&2--> Convolution 3-->Pooling

二.作用

提取特征。

三.具体计算过程

7aa7065bc676e964934c2c7b4da7d5d3.png

卷积主要有两个特征:局部连接以及权值共享

db284c46fcb08c85da392c7927a67ece.png

d188872c871ff1a4f29edbd64a6c70f7.png

参数量单层卷积层总参数=卷积核个数*(卷积核尺寸+偏置项)

卷积核个数一般通过该卷积层参数设置,卷积核尺寸为Filter*Filter(该层设置参数)*上一层通道数(无需设置),偏置项为1。

(全连接层是节点数相乘。)

卷积的计算量:

1b967fe26c020891c5f9a63602d77671.png

01ab0ffa255ea7ee01af80deda4d0792.png

(对于某个卷积层,它的FLOPs数量为:考虑偏置项的话,

1cd0d0e6f94c74690baeab326177f6a4.png

其中num_params表示该层参数的数目。)

(全连接层:BxMxN , B是batch size,M是输入形状,N是输出形状。)

四.输入输出分析

15a45c47b0f3daba3bcea363296d8917.png

86acd43b705ce0713dbc53756892f335.png

五.caffe中的卷积实现

caffe是展开成向量实现

92e8966fefd970ad98810d8979349d17.png

b93f73be1dfae4216d89bb17d4b1e9a0.png

对通道为C,高和宽分别为H、W的图像,在每一个位置上,划分一个KxK大小的patch,算上通道数,那就是CxKxK大小的patch,一共有HxW个patch:

2fc308e3a1a27f608486d98cd40f5181.png

这样就完成了由图像到矩阵的转化,这种操作在matlab中叫做im2col。需要注意的是,因为每一个像素点都对应一个patch,可以看成patch区域在图像上滑动,滑动的过程是有重叠的,转化所得的矩阵大小大于原图像。

与此同时,将滤波器转化成矩阵形式。

7ddf1fcf87a73ec908085c76f55666d4.png

最后一页没画,但是基本上就是Filter Matrix乘以Feature Matrix的转置,得到输出矩阵Cout x (H x W),就可以解释为输出的三维Blob(Cout x H x W)。

这样,卷积就可以转化为矩阵乘法(Gemm in BLAS)问题,调用GEMM(Generalized Matrix Multiplication)对两矩阵内积。BLAS有许多性能优良的库,而且由分销商Intel和Nvidia针对所有平台进行优化。

②Group Convolution

Group Convolution分组卷积,最早见于AlexNet——2012年Imagenet的冠军方法,Group Convolution被用来切分网络,使其在2个GPU上并行运行,AlexNet网络结构如下:

05cd99bea40b11153043eb28f7537b9d.png

常规卷积:如果输入feature map尺寸为CHW,卷积核有N个,输出feature map与卷积核的数量相同也是N,每个卷积核的尺寸为CKKN个卷积核的总参数量为NCKK,输入map与输出map的连接方式如下图左所示,

6711597ca3895fad461c7cd525509dd7.png

Group Convolution顾名思义,则是对输入feature map进行分组,然后每组分别卷积。假设输入feature map的尺寸仍为CHW,输出feature map的数量为N个,如果设定要分成G个groups,则每组的输入feature map数量为CG,每组的输出feature map数量为NG,每个卷积核的尺寸为CGKK,卷积核的总数仍为N个,每组的卷积核数量为NG,卷积核只与其同组的输入map进行卷积,卷积核的总参数量为NCGKK,可见,总参数量减少为原来的 1G,其连接方式如上图右所示,group1输出map数为2,有2个卷积核,每个卷积核的channel数为4,与group1的输入map的channel数相同,卷积核只与同组的输入map卷积,而不与其他组的输入map卷积。

用途:

1.减少参数量,分成G组,则该层的参数量减少为原来的1G

2.Group Convolution可以看成是structured sparse,每个卷积核的尺寸由CKK变为CGKK,可以将其余(CCG)∗KK的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。

3.当分组数量等于输入map数量,输出map数量也等于输入map数量,即G=N=CN个卷积核每个尺寸为1∗KK时,Group Convolution就成了Depthwise Convolution,参见MobileNet和Xception等,参数量进一步缩减,如下图所示

4a060987e58832a0a5a9da921bb520e3.png

4.更进一步,如果分组数G=N=C,同时卷积核的尺寸与输入map的尺寸相同,即K=H=W,则输出map为C∗1∗1即长度为C的向量,此时称之为Global Depthwise Convolution(GDC),见MobileFaceNet,可以看成是全局加权池化,与 Global Average Pooling(GAP) 的不同之处在于,GDC 给每个位置赋予了可学习的权重(对于已对齐的图像这很有效,比如人脸,中心位置和边界位置的权重自然应该不同),而GAP每个位置的权重相同,全局取个平均,如下图所示:

8f00e9a6f19f94cc110a0e88c1fe52dd.png

③深度可分离卷积(depthwise separable convolution)

在可分离卷积(separable convolution)中,通常将卷积操作拆分成多个步骤。而在神经网络中通常使用的就是深度可分离卷积(depthwise separable convolution)。

举个例子,假设有一个3×3大小的卷积层,其输入通道为16、输出通道为32。

那么一般的操作就是用32个3×3的卷积核来分别同输入数据卷积,这样每个卷积核需要3×3×16个参数,得到的输出是只有一个通道的数据。之所以会得到一通道的数据,是因为刚开始3×3×16的卷积核的每个通道会在输入数据的每个对应通道上做卷积,然后叠加每一个通道对应位置的值,使之变成了单通道,那么32个卷积核一共需要(3×3×16)×32 =4068个参数。

而应用深度可分离卷积的过程是①用16个3×3大小的卷积核(1通道)分别与输入的16通道的数据做卷积(这里使用了16个1通道的卷积核,输入数据的每个通道用1个3×3的卷积核卷积),得到了16个通道的特征图,我们说该步操作是depthwise(逐层)的,在叠加16个特征图之前,②接着用32个1×1大小的卷积核(16通道)在这16个特征图进行卷积运算,将16个通道的信息进行融合(用1×1的卷积进行不同通道间的信息融合),我们说该步操作是pointwise(逐像素)的。这样我们可以算出整个过程使用了3×3×16+(1×1×16)×32 =656个参数。

bda3ab3aaf7b6474635f630649e87fad.png

假设输入特征图大小为 D_F×D_F×M,输出特征图大小为 D_F×D_F×N,卷积核大小为 D_K×D_K,则传统卷积的计算量为:

D_K×D_K×M×N×D_F×D_F

深度可分离卷积的计算量为深度卷积和 1×1 卷积的计算量之和:

D_K×D_K×M×D_F×D_F+M×N×D_F×D_F

深度可分离卷积的优点

可以看出运用深度可分离卷积比普通卷积减少了所需要的参数。重要的是深度可分离卷积将以往普通卷积操作同时考虑通道和区域改变成,卷积先只考虑区域,然后再考虑通道。实现了通道和区域的分离。

④Defomable Convolution

可形变卷积的思想很巧妙:它认为规则形状的卷积核(比如一般用的正方形3*3卷积)可能会限制特征的提取,如果赋予卷积核形变的特性,让网络根据label反传下来的误差自动的调整卷积核的形状,适应网络重点关注的感兴趣的区域,就可以提取更好的特征。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 编写javafx_用JavaFX编写图块引擎

idea 编写javafx随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备。 因此,我决定对JavaFX进行更多的游戏编写实验。 这次,我想使用Canvas对渲染进行更多…

C#/.Net操作MongoDBHelper类

先 NuGet两个程序集 1:MongoDB.Driver、 2:MongoDB.Bson namespace ConsoleApp1{ /// <summary> /// MongoDb帮助类 /// </summary> /// <summary> /// MongoDb帮助类 /// </summary> public class DB { private static readonly string connStr &q…

echo回声不能用了_已懂得用电子分频器,为何不继续加个效果器让音响效果更好?...

效果器是一种提供各种声场效果&#xff0c;并对声音信号在时间和频率等多方面多方位进行加工处理以产生特殊音响效果的周边设备&#xff0c;它广泛使用在电台、电视台的节目制作上。然而要充分发挥效果器的作用&#xff0c;使其获得满意的效果&#xff0c;还必须掌握正确的连接…

Spring Web-Flux – Cassandra后端的功能样式

在上一篇文章中&#xff0c;我介绍了Spring Web-Flux的基础知识&#xff0c;它表示Spring框架的Web层中的响应式支持。 我已经展示了使用Spring Data Cassandra并在Spring Web Layers中使用传统注释支持的端到端示例&#xff0c; 大致如下&#xff1a; ... import org.spring…

Mac入门--安装PHP扩展redis,swoole

1 php7以下可以通过pecl安装PHP扩展 安装redis扩展 pecl install redis 安装swoole扩展 pecl install swoole2 PHP7以上通过源码编译安装扩展 2.1 扩展安装包在官网上查找链接地址&#xff1a;http://pecl.php.net 2.2.1 在官网上直接下载上传的服务器上解压 2.2.2 通过wget下载…

商品pid是什么意思_0基础搞懂自动驾驶传统算法与深度学习的鸿沟-PID控制算法与MLP优化方法...

0基础搞懂自动驾驶传统算法与深度学习的鸿沟这个专题核心是要思考如何让rule-base的自动驾驶算法逐步提升为data-driven的算法&#xff0c;从而尽可能的提升软件的泛化性。数据驱动的逻辑代替控制&#xff0c;规划&#xff0c;定位&#xff0c;融合&#xff0c;感知以及替换整个…

1000以内完数c语言程序_C语言经典面试题目及答案详解(二)

接着上次来说&#xff0c;C语言经典面试题目及答案详解&#xff08;一&#xff09;当中大部分是一些概念和理解的东西 &#xff0c;今天说一说实践操作&#xff0c;有关c的经典程序。1、输出9*9口诀。共9行9列&#xff0c;i控制行&#xff0c;j控制列。#include "stdio.h&…

「题解」:[组合数学]:Perm 排列计数

题干&#xff1a; Description称一个1,2,…,N的排列P1,P2…,Pn是Magic的&#xff0c;当且仅当2<i<N时&#xff0c;Pi>Pi/2. 计算1&#xff0c;2&#xff0c;…N的排列中有多少是Magic的&#xff0c;答案可能很大&#xff0c;只能输出模P以后的值Input输入文件的第一行…

最受欢迎的java技术_最受欢迎的Java环境

最受欢迎的java技术该职位将是即将发布的系列文章中的第一篇。 我们从所使用的环境开始&#xff1a;如果您感兴趣的是最受欢迎的JVM供应商或JVM版本&#xff0c;那么32bit是比64bit更流行的体系结构&#xff0c;还是Windows 8比Windows XP更流行的体系结构-这些都将在我们的文章…

DT-06 For MQTT

感谢关注深圳四博智联科技有限公司产品&#xff01;我公司提供完整的WiFi信号强度采集方案&#xff0c;包括WiFi信号采集、设备远程管理平台、智能终端应用等。 Doit_MQTT透传固件基于乐鑫ESP_IOT_SDK使用C编写&#xff0c;代码执行效率高。经过多个版本迭代&#xff0c;可靠性…

@async 没有异步_扒一扒VueCLI3.0中Axios异步请求同步化

前台经常会遇到请求同步和异步的问题&#xff0c;今天咱们来聊一聊vue中同步请求和异步请求那些事儿。说到接口的请求同步和异步问题&#xff0c;最早接触Ajax中就存在&#xff0c;Ajax传递的参数有一个async&#xff0c;默认情况下是false&#xff0c;也就是异步传输的&#x…

Java Platform Module系统中的可选依赖项

Java平台模块系统&#xff08;JPMS&#xff09;对依赖项有很强的见解&#xff1a;默认情况下&#xff0c;需要&#xff08;必须可访问&#xff09;它们&#xff0c;然后在编译时和运行时都将它们存在。 但是&#xff0c;这不适用于可选的依赖项&#xff0c;因为代码是针对运行时…

sqoop导出solr数据_Apache Atlas - 强大的元数据管理工具

构建和安装Apache Atlas构建Apache Atlas下载 Apache Atlas 1.0.0 发行版源码, apache-atlas-1.0.0-sources.tar.gz, 从 downloads 下载. 然后按照以下说明构建Apache Atlas。tar xvfz apache-atlas-1.0.0-sources.tar.gz cd apache-atlas-sources-1.0.0/ export MAVEN_OPTS&qu…

Mac入门--如何使用brew安装多个PHP版本

一 安装7.1 1. 安装PHP7.1 brew install php7.12. 修改配置 php-fpm.conf,一般在/usr/local/etc/php下(如果php-fpm.conf中不存在&#xff0c;则查找php-fpm.d目录) vim php-fpm.conflisten 127.0.0.1:90003. 启动PHP7.1 brew services start php7.14. 这时php-fpm会监听9000端…

python单例模式继承_python单例模式

单例模式是常见的一种设计模式&#xff0c;它是针对类的一种描述&#xff0c;因此&#xff0c;我们可以使用python的decorator来实现通用的单例模式。一.基本的单例模式首先建立我们的decorator。我们需要为classType建立_instance和_lock成员&#xff1a;Pythondef singleton(…

[MEGA DEAL]完整的Java编程训练营(94%)

成为Java Master的10门课程&#xff08;83.5小时&#xff09;&#xff1a;使用JavaFX的设计UI&#xff0c;利用设计模式&#xff0c;Master Multithreading等 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价…

【洛谷 1879】玉米田

题目描述农场主John新买了一块长方形的新牧场&#xff0c;这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12)&#xff0c;每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草&#xff0c;供他的奶牛们享用。遗憾的是&#xff0c;有些土地相当贫瘠&#xf…

echarts的tree怎么控制位置_自动化考研保研面试—线性系统控制器设计

这个问题是我导师&#xff08;面试组长&#xff09;多次在保研考研面试的时候问过的&#xff0c;而且每年都会问&#xff01;问题其实不难&#xff0c;涉及的知识点也就是自控原理经典控制理论的部分&#xff0c;但是基本上很少有人能够完整地回答出来&#xff0c;不服的话请看…

PCF上的Spring Cloud合同和Spring Cloud Services

最近&#xff0c;我们有一个客户&#xff0c;对于使用Spring Cloud Contract &#xff08;SCC&#xff09;来防止微服务团队之间的API“漂移”&#xff0c;微型开发团队需要由单个开发团队来照顾构成企业应用程序一部分的单个API的想法非常感兴趣。 Spring Cloud Contract是Sp…

MS Lync2010客户端开发体会

和前身OCS2007 相比较&#xff0c;Lync2010原生客户端的扩展性大大缩小了&#xff0c;但是提供了很好的客户端SDK&#xff0c;整个系统架构也有较大变化。由于Lync2010原生客户端实在太简单&#xff0c;用惯了QQ的国人&#xff0c;实在无法接受以下功能的缺失&#xff1a; 组织…