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,译作 ...
随机推荐
- Ta-lib函数功能列表
import tkinter as tk from tkinter import ttk import matplotlib.pyplot as plt import numpy as np impo ...
- 更符合面向对象的数据库操作方式-OrmLite
1. jar包下载 下载地址:http://ormlite.com/releases/,一般用core和android包即可. 如果使用的是android studio,也可以直接通过module s ...
- redux源码解读
react在做大型项目的时候,前端的数据一般会越来越复杂,状态的变化难以跟踪.无法预测,而redux可以很好的结合react使用,保证数据的单向流动,可以很好的管理整个项目的状态,但是具体来说,下面是 ...
- php 自己封装的一些函数
手机归属地函数 function get_mobile_area($phone){ $sms = array('province'=>'', 'supplier'=>''); //初始化变 ...
- MEF IOC使用
IOC介绍 IOC:控制反转,DI:依赖注入.按我的理解应该是一个东西.作用目前我看到的主要是解除各个层之间的强耦合,实现接口分离.MEF优点: 1.net4 自带,无需安装扩展(引用System.C ...
- jquery.tmplate使用心得
jquery.tmplate使用心得 jquery.tmpl.js,是与jquey共同使用的html模板插件.该插件可通过简单的语法将数据放入到html模板中,可以很好的将数据渲染到页面上.该插件在本 ...
- Nginx keepalived实现高可用负载均衡详细配置步骤
Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...
- 比较三个 CSS 预处理器:Sass、LESS 和 Stylus(下)
五.Mixins (混入) Mixins 有点像是函数或者是宏,当你某段 CSS 经常需要在多个元素中使用时,你可以为这些共用的 CSS 定义一个 Mixin,然后你只需要在需要引用这些 CSS 地方 ...
- 解决在linux环境下面不显示验证码的问题
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt235 解决在linux环境下面不显示验证码的问题1.tomcat ...
- 【ACM小白成长撸】--贪婪法解硬币找零问题
question:假设有一种货币,它有面值为1分.2分.5分和1角的硬币,最少需要多少个硬币来找出K分钱的零钱.按照贪婪法的思想,需要不断地使用面值最大的硬币.如果找零的值小于最大的硬币值,则尝试第二 ...