深度学习:识别图片中的电话号码(2)
背景介紹見(jiàn):深度學(xué)習(xí):識(shí)別圖片中的電話號(hào)碼(1)
識(shí)別電話號(hào)碼最終采用的是:循環(huán)卷積網(wǎng)絡(luò)。先看下網(wǎng)絡(luò)的結(jié)構(gòu),有幾處比較trick的地方,后面會(huì)講到。
注意的地方
1. 上圖中的網(wǎng)絡(luò)是訓(xùn)練網(wǎng)絡(luò)的結(jié)構(gòu),訓(xùn)練的輸入有三個(gè):image圖片;seq是時(shí)序的標(biāo)識(shí),如果時(shí)序長(zhǎng)度為5則為[0,1,1,1,1],0表示序列的開(kāi)始,1表示序列繼續(xù)(當(dāng)前時(shí)刻有信號(hào)輸入),上一時(shí)刻的細(xì)胞狀態(tài)會(huì)傳遞給當(dāng)前時(shí)刻。label表示序列的真實(shí)結(jié)果,如“123”應(yīng)該表示為[1,2,3,-1,-1],長(zhǎng)度和seq一致。
在batchsize中,多個(gè)樣本的seq大小如果不同,短序列的seq=[0,1,1,…1,0,0..0],表示短序列提前結(jié)束了。當(dāng)然電話識(shí)別中,把圖片特征按列等分了n份,大家的序列長(zhǎng)度是一致的。
2. 序列的分割
輸入image的大小是:batch_size*3*h*w
輸入seq的大小是:batch_size*n ,n表示序列的長(zhǎng)度=圖片特征要切割的份數(shù)
輸入label的大小是:batch_size*n
經(jīng)過(guò)ZF特征提取網(wǎng)絡(luò),relu5的輸出為:batch_size*num_output*height*width,num_output表示featureMap的數(shù)據(jù),width/height特征層的寬高。
trans1轉(zhuǎn)置層,參數(shù)為:
transpose_param {dim: 0 dim: 3dim: 2 dim: 1 }輸出的維度為:batch_size*width*num_output*height。trick的做法是:n的大小可以設(shè)置為width,即把特征層的每一列作為一個(gè)時(shí)刻的輸入。
conv5_trans為全連接層,當(dāng)然它的全連接只針對(duì)某一列在num_output個(gè)featureMap上的節(jié)點(diǎn)進(jìn)行,參數(shù)為:
inner_product_param {num_output: 4096weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"value: 0}axis: 2}輸出為:batch_size*width(n)*4096。
3. 構(gòu)建序列,主要是構(gòu)建LSTM的輸入格式,注意LSTM的輸入是:T*batch_size*C,T就是時(shí)序長(zhǎng)度n,C是特征的維度即4096。
4. LSTM的輸出為:T*batch_size*lstm_c,lstm_c表示LSTM中特征維度的大小,這里取256。
經(jīng)過(guò)fc-final,全連接為字符的種類數(shù)目+1(背景)。比如數(shù)字,輸出為T(mén)*batch_size*11。
5. 最終輸入CTC網(wǎng)絡(luò),CTC網(wǎng)絡(luò)會(huì)對(duì)T時(shí)刻的數(shù)據(jù)做后處理計(jì)算與真實(shí)label的差異,返回loss。正如上節(jié)說(shuō)的,T的大小應(yīng)該大于label的長(zhǎng)度,因?yàn)镃TC的后處理會(huì)把結(jié)果中的空格(背景)和連續(xù)相同字符去除(重復(fù)識(shí)別)去除,如果T<len(label),后處理后得到的字符一定和label不同了,這樣就沒(méi)意義了。
比如T=20,序列為:“1_88_8_1_1_66_10_16_8”,處理后得到“18811610168”。
檢測(cè)網(wǎng)絡(luò)
檢測(cè)網(wǎng)絡(luò)和訓(xùn)練類似,只是CTCLoss層替換為CTCDecoder即可。
由于新加了一些層的依賴,基于的caffe為:https://github.com/houkai/caffe
轉(zhuǎn)載于:https://www.cnblogs.com/houkai/p/6261631.html
總結(jié)
以上是生活随笔為你收集整理的深度学习:识别图片中的电话号码(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一次性上传多个文件到服务器端(一)
- 下一篇: Opencv与dlib联合进行人脸关键点