Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?
前言:今天他给大家带来一篇发表在CVPR 2017上的文章。
原文:LBCNN
原文代码:https://github.com/juefeix/lbcnn.torch
本文主要内容:把局部二值与卷积神经网路结合,以削减参数,从而实现深度卷积神经网络端到端的训练,也就是未来嵌入式设备上跑卷积效果将会越来越好。
主要贡献:
提出一种局部二值卷积(LBC)可以用来替代传统的卷积神经网络的卷积层,这样设计的灵感来自于局部二值模式(LBP).LBC主要由一个预先定义好的稀疏二值卷积滤波器,这个滤波器在整个训练过程中是不可学习的,还有一个非线性激活函数,以及一部分可以学习的权重。线性的权重参数结合被激活的滤波器可以近似的与激活的标准卷积层的滤波器响应相一致。但是却可以节省9倍到169倍的可学习参数。我们叫这种卷积神经网路为Local Binary Convolutional Neural Networks(LBCNN).并且在MNIST,SVHN,CIFAR-10和imageNet等数据集上取得了非常好的效果。
CNN背景简单的介绍:
卷积神经网络与深度学习取得了非常大的成功,尤其在大规模数据集上,但是所耗费的硬件资源也是巨大的,但是有一些应用场景,由于系统和应用平台的限制,标准的深度学习模型很难应用起来。比如自动驾驶汽车,机器人,手机,智能摄像机,还有一些智能的可穿戴设备,为了解决标准卷积深度网络参数训练庞大以及所需要的硬件配置较高的缺点,去满足上述应用场景,所以提出了LBCNN去加快网络训练,减少硬件资源的使用。
LBP介绍:
我以前介绍过,我就不介绍了,大家可以参考下:http://www.cnblogs.com/xiaohuahua108/p/6278275.html
广义的LBP:
原版的LBP特征总是以2作为基底,因此这样就会导致编码LBP位串的时候就会被限制成2的幂,如果放松这个限制,然后让权重采用现实的值,可以潜在地概括LBP描述。
轴心点的选取:传统的LBP一般选取某一块区域的中心,然后和周围的邻居进行比较,但是一块区域选取不同的轴心点,可以得到不同的纹理特征,另外比较函数s() 可以是一个有多个轴心点参加比较的函数,这样就可以描述更加细致的纹理特征。
比较顺序,传统的LBP一般都是按照顺时针方向依次比较,但是改变不同的比较顺序就可以得到不同的纹理特征。
哎,你告诉我LBP这些问题,为啥子不告诉我具体怎么选轴心点,基底,以及编码比较顺序哦,玩蛇啊。。。。作者在文中是这么说的------All the aforementioned variations i.e., the choice of pivot,the base, and the order of the encoding neighbors, are usually determined empirically and depend on the application. 靠,这是在搞事情啊。
接着文章提出了用借用传统的LBP思想,提出了用一个8个2-稀疏滤波器去扫描整个图像,然后把这八个结果相加,具体公式为:
其中(Heaviside step function最后介绍)是一个非线性的二值化操作,是稀疏滤波器,是原始图像,是可学习的线性权重参数。具体流程图如下:
:使用卷积滤波器重新设计LBP编码
局部二值卷积模块:
受上述广义的LBP的启发,现在提出一种局部二值卷积模块。整个卷积流程图如下:
传统的卷积一般为:
本文为:
整个LBCNN包含了m个预先定义好的卷积核,这部分是固定的,不可学习的,本文叫它锚权重。是输入图片,这个被m个卷积映射到m个maps。为了让反向传播通过LBC层,文章把LBP 中的Heaviside step function 函数换成了sigmoid 或者Relu函数。最后这个m个maps 被一个可学习的集中在一起得到作为下一层的输入。。
关于参数约减:
假设输入的图片数为p个,输出为q,传统的卷积核大小为k*w。那么一个传统的卷积层大概要学习:个参数。而LBC却只要学习个参数。那么:
如果p=m.那么比值就是kw倍。
参数训练:
粉色为1,黑色为-1绿色为0
理论证明:
一大堆公式,由于还要去看tensorflow。。所有等过两天我再证明推导给大家吧。
Heaviside step function:
Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?的更多相关文章
- [转]XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks
感谢: XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks XNOR-Net ImageNet Cl ...
- (转载)Convolutional Neural Networks卷积神经网络
Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional N ...
- Convolutional Neural Networks卷积神经网络
转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经 ...
- Convolutional Neural Networks卷积神经网络(二)
转自http://blog.csdn.net/zouxy09/article/details/8781543 CNNs是第一个真正成功训练多层网络结构的学习算法.它利用空间关系减少需要学习的参数数目以 ...
- XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks
转载请注明出处: http://www.cnblogs.com/sysuzyq/p/6245186.html by 少侠阿朱
- 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...
- Understanding the Effective Receptive Field in Deep Convolutional Neural Networks
Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- 【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks
作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...
随机推荐
- 你以为你真的会用编辑器----之Vim
Vim ----------------------- Vim下载地址:http://www.vim.org/download.php -------------------------------- ...
- if __name__ == '__main__' 到底是何方神圣(转)
想必很多初次接触python都会见到这样一个语句,if __name__ == "__main__": 那么这个语句到底是做什么用的呢?在解释之前,首先要声明的是,不管你是多么小白 ...
- .net中html转pdf
最近研究了2天如何把html转为pdf保存的方法,网上找了好多解决方案.总结下来也就是2种 一种是使用js的插件 jspdf 这款插件我试了下,很强大 使用起来也很简单,唯一 一点不好的就是转成p ...
- java-多个数的和
目的:实现多个整数相加. 思路:1.首先要确定用户所需整数的个数n,此部分由用户在键盘上输入. 2.创建一个长度为n的数组. 3.用户从键盘上输入n个整数并判断是否输入正确,正确则存入数组,否则重新输 ...
- 01-TypeScript概述
本篇文章向大家介绍新的TypeScript客户端脚本语言,主要涉及两个方面,一是传统JavaScript语言的弱点,二是TypeScript语言的优势. 一.JavaScript的弱点 1.弱类型,缺 ...
- ant安装以及环境变量配置、验证
(一)安装 ant 下载地址: http://ant.apache.org/ 根据自己电脑下载对应版本 下载完成以后,可自行解压到自己常用的盘中,但是要记住解压到哪里了,以便后续的环境变量配置 ...
- (1)ES6中let,const,对象冻结,跨模块常量,新增的全局对象介绍
1.let声明变量,var声明变量,而const声明的常量 2.let与var的区别 let可以让变量长期驻扎在内存当作 let的作用域是分块[ {快1 {快2 } }每个大括号表示一个独立的块 ...
- 【深入Java虚拟机】之八:Java垃圾收集机制
转载请注明出处:http://blog.csdn.net/ns_code/article/details/18076173 对象引用 Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了J ...
- 201521123078 《java》第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句 ...
- 201521123117 《Java程序设计》第3周学习总结
1. 本周学习总结: 2. 书面作业 Q1:代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...