前言:今天他给大家带来一篇发表在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 ---卷积深度网络移植到嵌入式设备上?的更多相关文章

  1. [转]XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks

    感谢: XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks XNOR-Net ImageNet Cl ...

  2. (转载)Convolutional Neural Networks卷积神经网络

    Convolutional Neural Networks卷积神经网络 Contents 一:前导 Back Propagation反向传播算法 网络结构 学习算法 二:Convolutional N ...

  3. Convolutional Neural Networks卷积神经网络

    转自:http://blog.csdn.net/zouxy09/article/details/8781543 9.5.Convolutional Neural Networks卷积神经网络 卷积神经 ...

  4. Convolutional Neural Networks卷积神经网络(二)

    转自http://blog.csdn.net/zouxy09/article/details/8781543 CNNs是第一个真正成功训练多层网络结构的学习算法.它利用空间关系减少需要学习的参数数目以 ...

  5. XNOR-Net ImageNet Classification Using Binary Convolutional Neural Networks

    转载请注明出处: http://www.cnblogs.com/sysuzyq/p/6245186.html by 少侠阿朱

  6. 深度学习论文翻译解析(十七):MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

    论文标题:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 论文作者:Andrew ...

  7. Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...

  8. 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...

  9. 【原创】梵高油画用深度卷积神经网络迭代十万次是什么效果? A neural style of convolutional neural networks

    作为一个脱离了低级趣味的码农,春节假期闲来无事,决定做一些有意思的事情打发时间,碰巧看到这篇论文: A neural style of convolutional neural networks,译作 ...

随机推荐

  1. python使用环境的设置

    virtualenv usage mkidr ~/pyenv cd ~/pyenv virtualenv pycaffe #it will setup a new python environtmen ...

  2. Spring同mybatis整合讲义(事物)

    1.mybatis的作用. 它是一个数据持久化的解决方案,它是一个ORM的框架. 2.Spring的作用? 备注:将本地jar包拷贝至本地的maven仓库里:oracle的jar包需自己发布到mave ...

  3. thinkjs学习-this.assign传递数据和ajax调用后台接口

    在页面加载时,就需要显示在页面上的数据,可以在后台使用this.assign赋值,在前台通过ejs等模板获取:用户点击按钮,或者触发某些事件和后台进行交互时,就需要用到ajax调用后台接口.本文通过一 ...

  4. 一个小时学会Git

    一.版本控制概要 Git 是一种在全球范围都广受欢迎的版本控制系统.在开发过程中,为了跟踪代码,文档,项目等信息中的变化,版本控制变得前所未有的重要.但跟踪变化远远不能满足现代软件开发行业的协同需求, ...

  5. matlab-常用函数(1)

    rng('shuffle'): matlab help文档中的解释 rng('shuffle'): seeds the random number generator based on the cur ...

  6. C#将Excel数据表导入SQL数据库的两种方法(转)

    最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...

  7. web程序员标准环境之DreamWeaver【…

    Adobe Dreamweaver,简称"DW",中文名称 "梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器 ...

  8. 【★】SPF(Dijkstra)算法完美教程

  9. 【Java线程】Java内存模型总结

    学习资料:http://www.infoq.com/cn/articles/Java-memory-model-1 Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态, ...

  10. bootstrap 表单+按钮+对话框

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...