前言:今天他给大家带来一篇发表在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. 面试题1 -- Java 中,怎么在格式化的日期中显示时区?

    使用SimpleDateFormat来实现格式化日期 import java.text.SimpleDateFormat; import java.util.Date; public class Da ...

  2. quartus2中FPGA管脚分配保存方法(转)

    一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择“Assignments ->Pin”标签(或者点击按 ...

  3. JS针对pc页面固定宽度在手机展示问题 <meta ...>

    结合一些 网上大神级前端作品的 介绍 修改了一下自己的代码  做出了一个相对简单的缩放代码 1. <meta name="viewport" content="wi ...

  4. mysql排序

    MySQL里desc和asc的意思    desc是descend 降序意思     asc 是ascend 升序意思    sql = "select 表内容名    from   数据库 ...

  5. python基础教程(五)

    字符串基本操作 所有标准的序列操作(索引.分片.乘法.判断成员资格.求长度.取最小值和最大值)对字符串同样适用,前面已经讲述的这些操作.但是,请注意字符串都是不可变的. 字符串的方法: 字符串从str ...

  6. 国内5家云服务厂商 HTTPS 安全性测试横向对比

    随着 Chrome.Firefox 等浏览器对 HTTPS 的重视,国内众多云服务厂商都相继提供 SSL 证书申购服务,但是大家有没有注意到一个细节,不同厂家申请的 SSL 证书,由于证书性能.功能差 ...

  7. Python常用库大全

    环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...

  8. C#/VB.NET对EXCEL图片添加超链接

    在日常工作中,在编辑文档时,为了方便自己或者Boss能够实时查看到需要的网页或者文档是,需要对在Excel中输入的相关文字进行超链接,那么对于一些在Excel中插入的图片我们该怎么实现超链接呢,下面给 ...

  9. 处理 Vue 单页面应用 SEO 的另一种思路

    vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...

  10. JS中 事件冒泡与事件捕获

    [JS中的事件流]  1.事件冒泡:当某DOm元素触发一种事件时,会从当前节点开始,逐级往上触发其祖先节点的同类型事件,直到DOM根节点:   >>>什么情况下会产生事件冒泡 ① D ...