Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?
前言:今天他給大家?guī)硪黄l(fā)表在CVPR 2017上的文章。
原文:LBCNN
原文代碼:https://github.com/juefeix/lbcnn.torch
本文主要內容:把局部二值與卷積神經網(wǎng)路結合,以削減參數(shù),從而實現(xiàn)深度卷積神經網(wǎng)絡端到端的訓練,也就是未來嵌入式設備上跑卷積效果將會越來越好。
主要貢獻:
提出一種局部二值卷積(LBC)可以用來替代傳統(tǒng)的卷積神經網(wǎng)絡的卷積層,這樣設計的靈感來自于局部二值模式(LBP).LBC主要由一個預先定義好的稀疏二值卷積濾波器,這個濾波器在整個訓練過程中是不可學習的,還有一個非線性激活函數(shù),以及一部分可以學習的權重。線性的權重參數(shù)結合被激活的濾波器可以近似的與激活的標準卷積層的濾波器響應相一致。但是卻可以節(jié)省9倍到169倍的可學習參數(shù)。我們叫這種卷積神經網(wǎng)路為Local Binary Convolutional Neural Networks(LBCNN).并且在MNIST,SVHN,CIFAR-10和imageNet等數(shù)據(jù)集上取得了非常好的效果。
CNN背景簡單的介紹:
卷積神經網(wǎng)絡與深度學習取得了非常大的成功,尤其在大規(guī)模數(shù)據(jù)集上,但是所耗費的硬件資源也是巨大的,但是有一些應用場景,由于系統(tǒng)和應用平臺的限制,標準的深度學習模型很難應用起來。比如自動駕駛汽車,機器人,手機,智能攝像機,還有一些智能的可穿戴設備,為了解決標準卷積深度網(wǎng)絡參數(shù)訓練龐大以及所需要的硬件配置較高的缺點,去滿足上述應用場景,所以提出了LBCNN去加快網(wǎng)絡訓練,減少硬件資源的使用。
?
LBP介紹:
我以前介紹過,我就不介紹了,大家可以參考下:http://www.cnblogs.com/xiaohuahua108/p/6278275.html
?
廣義的LBP:
原版的LBP特征總是以2作為基底,因此這樣就會導致編碼LBP位串的時候就會被限制成2的冪,如果放松這個限制,然后讓權重采用現(xiàn)實的值,可以潛在地概括LBP描述。
軸心點的選取:傳統(tǒng)的LBP一般選取某一塊區(qū)域的中心,然后和周圍的鄰居進行比較,但是一塊區(qū)域選取不同的軸心點,可以得到不同的紋理特征,另外比較函數(shù)s() 可以是一個有多個軸心點參加比較的函數(shù),這樣就可以描述更加細致的紋理特征。
比較順序,傳統(tǒng)的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. 靠,這是在搞事情啊。
接著文章提出了用借用傳統(tǒng)的LBP思想,提出了用一個8個2-稀疏濾波器去掃描整個圖像,然后把這八個結果相加,具體公式為:
其中(Heaviside step function最后介紹)是一個非線性的二值化操作,是稀疏濾波器,是原始圖像,是可學習的線性權重參數(shù)。具體流程圖如下:
圖1:使用卷積濾波器重新設計LBP編碼
局部二值卷積模塊:
受上述廣義的LBP的啟發(fā),現(xiàn)在提出一種局部二值卷積模塊。整個卷積流程圖如下:
傳統(tǒng)的卷積一般為:
本文為:
整個LBCNN包含了m個預先定義好的卷積核,這部分是固定的,不可學習的,本文叫它錨權重。是輸入圖片,這個被m個卷積映射到m個maps。為了讓反向傳播通過LBC層,文章把LBP 中的Heaviside step function 函數(shù)換成了sigmoid 或者Relu函數(shù)。最后這個m個maps 被一個可學習的集中在一起得到作為下一層的輸入。。
關于參數(shù)約減:
假設輸入的圖片數(shù)為p個,輸出為q,傳統(tǒng)的卷積核大小為k*w。那么一個傳統(tǒng)的卷積層大概要學習:個參數(shù)。而LBC卻只要學習個參數(shù)。那么:
如果p=m.那么比值就是kw倍。
?
參數(shù)訓練:
粉色為1,黑色為-1綠色為0
理論證明:
一大堆公式,由于還要去看tensorflow。。所有等過兩天我再證明推導給大家吧。
Heaviside step function:
?
原文地址: http://www.cnblogs.com/xiaohuahua108/p/7589145.html
總結
以上是生活随笔為你收集整理的Local Binary Convolutional Neural Networks ---卷积深度网络移植到嵌入式设备上?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端https抓包那些事--进阶篇
- 下一篇: ELF文件装载链接过程及hook原理