深度学习(二十三)——Fast Image Processing, SVDF, LCNN, LSTM进阶
https://antkillerfarm.github.io/
Fast Image Processing(續(xù))
這個(gè)課題一般使用MIT-Adobe FiveK Dataset作為基準(zhǔn)數(shù)據(jù)集。網(wǎng)址:
http://groups.csail.mit.edu/graphics/fivek_dataset/
這個(gè)數(shù)據(jù)集包含了5K張?jiān)颊掌?#xff0c;并雇用了5個(gè)專業(yè)修圖師,對(duì)每張圖片進(jìn)行修圖。
眾所周知,多層神經(jīng)網(wǎng)絡(luò)只要有足夠的深度和寬度,就可以任意逼近任意連續(xù)函數(shù)。然而從Fast Image Processing的目的來說,神經(jīng)網(wǎng)絡(luò)的深度和寬度注定是有限的,否則肯定快不了。而這也是該課題的研究意義所在。
本文只使用了MIT-Adobe數(shù)據(jù)集中的原始圖片,并使用了10種常用的算子對(duì)圖片進(jìn)行處理。因此,該網(wǎng)絡(luò)訓(xùn)練時(shí)的輸入是原始圖片,而輸出是處理后的圖片。
上圖是本文模型的網(wǎng)絡(luò)結(jié)構(gòu)圖。它的設(shè)計(jì)特點(diǎn)如下:
1.采用Multi-Scale Context Aggregation作為基礎(chǔ)網(wǎng)絡(luò)。MCA的內(nèi)容參見《深度學(xué)習(xí)(九)》。
2.傳統(tǒng)MCA一般有下采樣的過程,但這里由于網(wǎng)絡(luò)輸入和輸出的尺寸維度是一樣的,因此,所有的feature maps都是等大的。
3.借鑒FCN的思想,去掉了池化層和全連接層。
4.L1~L3主要用于圖片的特征提取和升維,而L4~L5則用于特征的聚合和降維,并最終和輸出數(shù)據(jù)的尺寸維度相匹配。
在normalization方面,作者發(fā)現(xiàn)有的operators經(jīng)過normalization之后,精度會(huì)上升,而有的精度反而會(huì)下降,因此為了統(tǒng)一模型,定義如下的normalization運(yùn)算:
Ψs(x)=λsx+μsBN(x)Ψs(x)=λsx+μsBN(x)
Loss函數(shù)為:
l(,)=∑i1Ni‖f??(Ii;,)?f(Ii)‖2l(K,B)=∑i1Ni‖f^(Ii;K,B)?f(Ii)‖2
這實(shí)際上就是RGB顏色空間的MSE誤差。
為了檢驗(yàn)?zāi)P偷姆夯芰?#xff0c;本文還使用RAISE數(shù)據(jù)集作為交叉驗(yàn)證的數(shù)據(jù)集。該數(shù)據(jù)集的網(wǎng)址:
http://mmlab.science.unitn.it/RAISE/
RAISE數(shù)據(jù)集包含了8156張高分辨率原始照片,由3臺(tái)不同的相機(jī)拍攝,并給出了相機(jī)的型號(hào)和參數(shù)。
TNG
Tiny Network Graphics是圖鴨科技推出一種基于深度學(xué)習(xí)的圖片壓縮技術(shù)。由于商業(yè)因素,這里沒有論文,技術(shù)細(xì)節(jié)也不詳,但是下圖應(yīng)該還是有些用的。
參考:
https://mp.weixin.qq.com/s/WYsxFX4LyM562bZD8rO95w
圖鴨發(fā)布圖片壓縮TNG,節(jié)省55%帶寬
SVDF
SVDF是UCB和Google Speech Group的作品,主要用于簡(jiǎn)化Speech模型的計(jì)算量。
論文:
《Compressing Deep Neural Networks using a Rank-Constrained Topology》
代碼:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/speech_commands/models.py
音頻數(shù)據(jù)通常是一個(gè)[time, frequency]的二維tensor,直接放入FC網(wǎng)絡(luò),會(huì)導(dǎo)致較大的計(jì)算量。(下圖左半部分所示)
SVDF將每個(gè)time的frequency作為一組,進(jìn)行FC之后,再和其他組的結(jié)果進(jìn)一步FC。上圖右半部分所示的是time的filters為1的時(shí)候的SVDF。當(dāng)然filters也可以為其他值,和CNN類似,filters越多,提取的特征越多。
從原理來說,SVDF相當(dāng)于用兩層FC來擬合1層FC,即:
w(m)i,j≈α(m)iβ(m)iwi,j(m)≈αi(m)βi(m)
SVDF將運(yùn)算量從CdCd變?yōu)?span id="ze8trgl8bvbq" class="MathJax_Preview" style="color: inherit; display: none;">(C+d)k(C+d)k,這里的k為filters numbers。
這實(shí)際上就是2維tensor的SVD,只不過SVD是線性變換,而這里是非線性變換而已。(參見《機(jī)器學(xué)習(xí)(十五)》中的ALS算法部分)
實(shí)際上,SVDF和之前在《深度學(xué)習(xí)(十六)》中提到的Fast R-CNN的FC加速,原理是基本一致的。
LCNN
LCNN是華盛頓大學(xué)和Allen AI研究所的作品。后者是微軟創(chuàng)始人Paul Allen投資興建的研究機(jī)構(gòu)。
論文:
《LCNN: Lookup-based Convolutional Neural Network》
代碼:
https://github.com/hessamb/lcnn
我們知道一個(gè)Conv層的weight是一個(gè)n×m×kw×khn×m×kw×kh的tensor,這里的m,n分別是input和output的channel數(shù),kw,khkw,kh則是kernel的寬和高。
LCNN將這個(gè)巨大的weight tensor拆解成若干小tensor的運(yùn)算:
1.建立一個(gè)包含k個(gè)m×kw×khm×kw×kh大小的tensor的字典D。
2.一個(gè)用于選擇字典條目的矩陣I。
3.權(quán)值矩陣C。
然后按照下圖所示的方法,計(jì)算得到W:
用數(shù)學(xué)公式表示,則為:
W[:,r,c]=∑t=1sC[t,r,c]?D[I[t,r,c],:],?r,cW[:,r,c]=∑t=1sC[t,r,c]?D[I[t,r,c],:],?r,c
上圖是LCNN的前向運(yùn)算示意圖,其中:
S[i,:,:]=X?D[i,:]S[i,:,:]=X?D[i,:]
這個(gè)過程實(shí)際上等效于S?PS?P,而參數(shù)P就是我們需要訓(xùn)練的模型參數(shù)。
可以看出LCNN和SVDF都是采用稀疏表示的方法來減少運(yùn)算量,只是實(shí)現(xiàn)方式和用途略有不同而已。
參考:
http://blog.csdn.net/feynman233/article/details/69785592
LCNN論文閱讀筆記
LSTM進(jìn)階
《Long short-term memory》
這是最早提出LSTM這個(gè)概念的論文。這篇論文偏重?cái)?shù)學(xué)推導(dǎo),實(shí)話說不太適合入門之用。但既然是起點(diǎn),還是有列出來的必要。
《LSTM Neural Networks for Language Modeling》
這也是一篇重要的論文。
《Sequence to Sequence - Video to Text》
https://vsubhashini.github.io/s2vt.html
《Long-term Recurrent Convolutional Networks for Visual Recognition and Description》
Long-term Recurrent Convolutional Networks是LSTM的一種應(yīng)用方式,它結(jié)合了LSTM、CNN、CRF等不同網(wǎng)絡(luò)組件。
上圖展示了LSTM在動(dòng)作識(shí)別、圖片和視頻描述等任務(wù)中的網(wǎng)絡(luò)結(jié)構(gòu)。
上圖展示了圖片描述任務(wù)中幾種不同的網(wǎng)絡(luò)連接方式:
1.單層LRCN。
2.雙層LRCN。CNN連接在第一個(gè)LSTM層。傳統(tǒng)的LSTM只有一個(gè)輸入,這里的CNN是第二個(gè)輸入,也就是所謂的靜態(tài)輸入。可參看caffe的LSTM實(shí)現(xiàn)。
2.雙層LRCN。CNN連接在第二個(gè)LSTM層。
這是視頻描述任務(wù)中LSTM和CRF結(jié)合的示例。
《Training RNNs as Fast as CNNs》
這篇論文提出了如下圖所示的Simple Recurrent Unit(SRU)的新結(jié)構(gòu):
由于普通LSTM計(jì)算步驟中,很多當(dāng)前時(shí)刻的計(jì)算都依賴ht?1ht?1的值,導(dǎo)致整個(gè)網(wǎng)絡(luò)的計(jì)算無法并行化。SRU針對(duì)這一點(diǎn)去掉了當(dāng)前時(shí)刻計(jì)算對(duì)于ht?1ht?1的依賴,而僅保留Ct?1Ct?1(這個(gè)計(jì)算較為廉價(jià))以記憶信息,大大改善了整個(gè)RNN網(wǎng)絡(luò)計(jì)算的并行性。
但是SRU的精度沒有LSTM高,需要通過增加layer和filter的數(shù)量來達(dá)到相同的精度,當(dāng)然即使這樣,計(jì)算時(shí)間仍然小于LSTM。
《Neural Machine Translation in Linear Time》
該論文是Deepmind的作品,它提出的ByteNet,計(jì)算復(fù)雜度為線性,也是LSTM的優(yōu)化方案之一。
《Long Short-Term Memory Based Recurrent Neural Network Architectures for Large Vocabulary Speech Recognition》
it=δ(Wixxt+Wimmt?1+Wicct?1+bi)ft=δ(Wfxxt+Wfmmt?1+Wfcct?1+bi)ct=ft⊙ct?1+it⊙g(Wcxxt+Wcmmt?1+bc)ot=δ(Woxxt+Wommt?1+Wocct+bo)mt=ot⊙h(ct)yt=Wymmt+byit=δ(Wixxt+Wimmt?1+Wicct?1+bi)ft=δ(Wfxxt+Wfmmt?1+Wfcct?1+bi)ct=ft⊙ct?1+it⊙g(Wcxxt+Wcmmt?1+bc)ot=δ(Woxxt+Wommt?1+Wocct+bo)mt=ot⊙h(ct)yt=Wymmt+by
上式是LSTM的公式(其中的最后一步在多數(shù)模型中,往往直接用yt=mtyt=mt代替。),從中可以看出類似Wixxt+Wimmt?1+Wicct?1+biWixxt+Wimmt?1+Wicct?1+bi的FC運(yùn)算占據(jù)了LSTM的絕大部分運(yùn)算量。其中W的參數(shù)量為:
W=nc×nc×4+ni×nc×4+nc×no+nc×3W=nc×nc×4+ni×nc×4+nc×no+nc×3
為了精簡(jiǎn)相關(guān)運(yùn)算,Google的Hasim Sak于2014年提出了LSTMP。
Hasim Sak,土耳其伊斯坦布爾海峽大學(xué)博士,Google研究員。
LSTMP的結(jié)構(gòu)圖如下:
改寫成數(shù)學(xué)公式就是:
it=δ(Wixxt+Wimrt?1+Wicct?1+bi)ft=δ(Wfxxt+Wfmrt?1+Wfcct?1+bi)ct=ft⊙ct?1+it⊙g(Wcxxt+Wcmrt?1+bc)ot=δ(Woxxt+Womrt?1+Wocct+bo)mt=ot⊙h(ct)rt=Wrmmtpt=Wpmmtyt=Wyrrt+Wyppt+byit=δ(Wixxt+Wimrt?1+Wicct?1+bi)ft=δ(Wfxxt+Wfmrt?1+Wfcct?1+bi)ct=ft⊙ct?1+it⊙g(Wcxxt+Wcmrt?1+bc)ot=δ(Woxxt+Womrt?1+Wocct+bo)mt=ot⊙h(ct)rt=Wrmmtpt=Wpmmtyt=Wyrrt+Wyppt+by
LSTMP的主要思想是對(duì)mtmt做一個(gè)映射,只有部分?jǐn)?shù)據(jù)rtrt參與recurrent運(yùn)算,其余部分ptpt直接輸出即可(這一步是可選項(xiàng),所以用虛框表示)。
這樣W的參數(shù)量為:
W=nc×nr×4+ni×nc×4+nr×no+nc×nr+nc×3W=nc×nr×4+ni×nc×4+nr×no+nc×nr+nc×3
參數(shù)量公式用藍(lán)色和紅色標(biāo)出修改前后對(duì)應(yīng)的部分,可以看出計(jì)算量有了明顯下降。
參考:
http://blog.csdn.net/xmdxcsj/article/details/53326109
模型壓縮lstmp
《Video Summarization with Long Short-term Memory》
這是一篇用于提取視頻關(guān)鍵幀(也叫靜態(tài)視頻摘要)的論文,是南加州大學(xué)沙飛小組的作品。
上圖是該文提出的DPP LSTM的網(wǎng)絡(luò)結(jié)構(gòu)圖。它的主體是一個(gè)BiLSTM,算是中規(guī)中矩吧。
該文的創(chuàng)新點(diǎn)在于提出了DPP loss的概念。上圖中的ytyt表示幀的分值(越大表示越重要),?t?t表示幀之間的相似度。該文的實(shí)驗(yàn)表明,將兩個(gè)特征分開抽取,有助于提升模型的準(zhǔn)確度。
這篇論文主要用到了3個(gè)數(shù)據(jù)集:
TVSum dataset:
https://github.com/yalesong/tvsum
這個(gè)需要Yahoo賬號(hào)和一個(gè)高校的郵件地址才行。
SumMe dataset:
https://people.ee.ethz.ch/~gyglim/vsum/#benchmark
OVP and YouTube datasets:
https://sites.google.com/site/vsummsite/
需要翻墻。
IndRNN
https://mp.weixin.qq.com/s/cAqpclkkeVrTiifz07HC1g
新型循環(huán)神經(jīng)網(wǎng)絡(luò)IndRNN:可構(gòu)建更長(zhǎng)更深的RNN
https://mp.weixin.qq.com/s/7-K-nZTijoYCaprRNYXxFg
新型RNN:將層內(nèi)神經(jīng)元相互獨(dú)立以提高長(zhǎng)程記憶
參考
https://mp.weixin.qq.com/s/4IHzOAvNhHG9c8GP0zXVkQ
Simple Recurrent Unit For Sentence Classification
https://mp.weixin.qq.com/s/h3fF6Zvr1rSzSMpqdu8B0A
電子科大提出BT-RNN:替代全連接操作而大幅度提升LSTM效率
https://mp.weixin.qq.com/s/fCzHbOi7aJ8-W9GzctUFNg
LSTM文本分類實(shí)戰(zhàn)
http://mp.weixin.qq.com/s/3nwgft9c27ih172ANwHzvg
從零開始:如何使用LSTM預(yù)測(cè)匯率變化趨勢(shì)
https://mp.weixin.qq.com/s/M18c3sgvjV2b2ksCsyOxbQ
Nested LSTM:一種能處理更長(zhǎng)期信息的新型LSTM擴(kuò)展
https://www.zhihu.com/question/62399257
如何理解LSTM后接CRF?
https://mp.weixin.qq.com/s/XAbzaMXP3QOret_vxqVF9A
用深度學(xué)習(xí)LSTM炒股:對(duì)沖基金案例分析
https://mp.weixin.qq.com/s/eeA5RZh35BvlFt45ywVvFg
可視化LSTM網(wǎng)絡(luò):探索“記憶”的形成
https://mp.weixin.qq.com/s/h-MYTNTLy7ToPPEZ2JVHpw
阿里巴巴論文提出Advanced LSTM:關(guān)于更優(yōu)時(shí)間依賴性刻畫在情感識(shí)別方面的應(yīng)用
https://mp.weixin.qq.com/s/SeR_zNZTu4t7kqB6ltNrmQ
從循環(huán)到卷積,探索序列建模的奧秘
https://mp.weixin.qq.com/s/_q69BV1r46S9X5wnLuFPSw
關(guān)于序列建模,是時(shí)候拋棄RNN和LSTM了
總結(jié)
以上是生活随笔為你收集整理的深度学习(二十三)——Fast Image Processing, SVDF, LCNN, LSTM进阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习(二十二)——ESPCN, FS
- 下一篇: 机器学习(二十八)——Monte-Car