1. 程式人生 > >Local Binary Convolutional Neural Networks ---卷積深度網路移植到嵌入式裝置上?

Local Binary Convolutional Neural Networks ---卷積深度網路移植到嵌入式裝置上?

前言:今天他給大家帶來一篇發表在CVPR 2017上的文章。

原文:LBCNN

本文主要內容:把區域性二值與卷積神經網路結合,以削減引數,從而實現深度卷積神經網路端到端的訓練,也就是未來嵌入式裝置上跑卷積效果將會越來越好。

主要貢獻:

提出一種區域性二值卷積(LBC)可以用來替代傳統的卷積神經網路的卷積層,這樣設計的靈感來自於區域性二值模式(LBP).LBC主要由一個預先定義好的稀疏二值卷積濾波器,這個濾波器在整個訓練過程中是不可學習的,還有一個非線性啟用函式,以及一部分可以學習的權重。線性的權重引數結合被啟用的濾波器可以近似的與啟用的標準卷積層的濾波器響應相一致。但是卻可以節省9倍到169倍的可學習引數。我們叫這種卷積神經網路為Local Binary Convolutional Neural Networks(LBCNN).並且在MNIST,SVHN,CIFAR-10和imageNet等資料集上取得了非常好的效果。

CNN背景簡單的介紹:

卷積神經網路與深度學習取得了非常大的成功,尤其在大規模資料集上,但是所耗費的硬體資源也是巨大的,但是有一些應用場景,由於系統和應用平臺的限制,標準的深度學習模型很難應用起來。比如自動駕駛汽車,機器人,手機,智慧攝像機,還有一些智慧的可穿戴裝置,為了解決標準卷積深度網路引數訓練龐大以及所需要的硬體配置較高的缺點,去滿足上述應用場景,所以提出了LBCNN去加快網路訓練,減少硬體資源的使用。

LBP介紹:

廣義的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最後介紹)是一個非線性的二值化操作,是稀疏濾波器,是原始影象,是可學習的線性權重引數。具體流程圖如下:

1:使用卷積濾波器重新設計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:

原文地址: http://www.cnblogs.com/xiaohuahua108/p/7589145.html