筆記:SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and

前言:

最近看到個FPGA與Deep Learning相結合的文章,正好看到arxiv上放了這篇文章出來,聽說這個SqueezNet有利於將CNN在FPGA上實現,於是簡單看了一下。不過作者也沒有給出實現結果,但既然是UC Berkeley 和 Stanford發的,說明大牛們都很關注這個事,搞不好哪天FPGA+DL真的就流行用起來了。

文章鏈接:http://arxiv.org/abs/1602.07360

文章概要:

這篇文章主要就是說,目前的DNN參數有點多了,如果我們有辦法把DNN的參數減少,將有利於:

1、實現更高效的分佈式訓練;

2、訓練出輕量級的模型;

3、在FPGA上實現;

那麼,怎樣在保證精度的前提下壓縮網絡呢?

作者採用了3個strategies:

1、將一部分3x3的filter替換成1x1的filter;

2、減少輸入的channels;

3、在整個網絡後期才進行下采樣,使得卷積層有比較大的activation maps;

作者設計了一種fire module的結構:

這種fire module的結構由兩個(實際上是3個)layers構成:squeeze和expand(expand其實是兩個layers)。squeeze和expand其實都是卷積層,只是kernel大小、stride、padding這些參數調過,主要就是用了小kernel。因爲Caffe是不支持同一個layer使用不同size的若干個(>1)kernels的,所以作者實際上是使用了兩個layers,一個用3x3 kernel,一個用1x1kernel,最後再把它們concat起來。

給一個完整的網絡看一下:

上圖中這些fire module的參數並不是一樣的。在前面幾層的fire module,裏面用到的kernel個數會少一些,但隨着網絡越來越深,後面的fire module用到的kernel個數會越來越多。我的理解是,網絡越深,特徵越抽象,就需要用越多的參數來學習它吧。

更多的調參細節就不多說了,有興趣可以看看這篇paper原文。

作者在ImageNet 2012上給出了測試結果:

與AlexNet對比,參數減少了50倍,模型也只有4.8M。目前一些比較貴的FPGA,SRAM有8M那麼大,是有機會把這個SqueezeNet放到上面跑跑看的。

我的看法:

1、跟PC機相比,因爲FPGA的資源真的少得可憐,能夠在保證精度的前提下減少網絡參數和壓縮模型大小,是很有幫助的;

2、但是,僅僅AlexNet這樣的精度,不能滿足很多場合的需求,作者沒有拿SqueezeNet來跟VGG這些大網絡來比比,也不知道SqueezeNet做深了之後,它的performance如何。而且也沒在其它任務上做測試(如detection,Reid之類的),有點懷疑它的泛化能力,希望後面還會放更多的結果出來看;

3、實現一個SqueezeNet,調參感覺是個大坑。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章