楊 青,韓 斌
(沈陽理工大學(xué) 自動化與電氣工程學(xué)院,沈陽 110159)
目前防偽技術(shù)大體可以分為激光防偽、油墨防偽、雕刻凹版印刷防偽[1],但是這些技術(shù)或多或少都存在不足,比如激光防偽和油墨防偽雖然產(chǎn)品成本合適但易被仿造,容易失去防偽能力。雕刻凹版印刷防偽雖然難以被偽造,但在制作上需要巨大的成本,從而難以普及。而點(diǎn)陣防偽碼[2]具有防掃描、可隱蔽、防偽性好的特點(diǎn),且在制作成本上合理。點(diǎn)陣防偽碼屬于二維碼的一種,是一種基于矩陣的編碼形式。在二維空間規(guī)定范圍內(nèi)通過點(diǎn)的橫縱排列保存信息,通過規(guī)定格式組成若干個(gè)點(diǎn)陣單元,按照相應(yīng)的編碼規(guī)則組成點(diǎn)陣碼,每個(gè)點(diǎn)陣單元之間相互獨(dú)立,根據(jù)輸入編碼數(shù)據(jù)隨機(jī)出現(xiàn)。點(diǎn)陣防偽碼的防偽原理是通過將原始點(diǎn)陣防偽碼打印到紙面的第一次信息衰減,拍照后的第二次衰減,再次打印的第三次衰減,從而讓信息流失而難已被復(fù)原。
原始防偽碼中的防偽數(shù)據(jù)是通過周期性的固定數(shù)字進(jìn)行防偽。本文針對其不足將加密方式改為具有良好防偽性能的RSA[3]加密。同時(shí)改變了點(diǎn)陣防偽碼的最小防偽單元,使得單位面積可容納更多信息。在此基礎(chǔ)上,本文將點(diǎn)陣防偽碼和下采樣后無法識別的圖像混合完成雙重防偽。在識別時(shí)首先對點(diǎn)陣防偽碼信息進(jìn)行讀取,如果解碼成功,對無法識別的低分辨率圖像進(jìn)行超分辨率重建,再對重建后的圖像進(jìn)行識別。但傳統(tǒng)的基于插值的超分辨率重建方法,例如雙三次插值上采樣放大后會丟失許多細(xì)節(jié),難以對圖像真?zhèn)芜M(jìn)行辨別。近年來,深度學(xué)習(xí)在圖像超分辨率重建上取得了顯著的效果,最初通過三層神經(jīng)網(wǎng)絡(luò)的SRCNN[4]實(shí)現(xiàn)了對圖像的重建,后來又提出了FSRCN[5]、ESPCN[6]V、DSR[7]等更深層的網(wǎng)絡(luò)。本文使用深度學(xué)習(xí)的方法對圖像進(jìn)行超分辨率重建,采用殘差神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行重建以提高防偽圖像識別準(zhǔn)確率,從而完成對重建后圖像的識別。
本文采用點(diǎn)陣防偽碼混合圖像進(jìn)行防偽。混合碼識別結(jié)構(gòu)圖如圖1所示,首先完成點(diǎn)陣防偽碼混合圖像的生成。解碼時(shí)將點(diǎn)陣防偽碼和圖像經(jīng)過形態(tài)學(xué)操作,使得點(diǎn)陣防偽碼和圖像分離開來;然后對點(diǎn)陣防偽碼進(jìn)行識別,若解碼錯(cuò)誤,判斷商品為假,若成功,則保存解碼信息,對圖像進(jìn)行識別;此時(shí)的圖像為下采樣無法識別的圖像,本文通過殘差神經(jīng)網(wǎng)絡(luò)對圖像進(jìn)行超分辨率重建,對重建后的圖像進(jìn)行識別,讀取圖像信息。完成后將兩次信息進(jìn)行組合,輸出結(jié)果。消費(fèi)者只需將輸出結(jié)果與商品上對應(yīng)信息對比即可判斷商品真?zhèn)巍?/p>
混合圖像的生成主要由點(diǎn)陣防偽碼的生成和圖像與點(diǎn)陣防偽碼混合兩部分組成。
點(diǎn)陣防偽碼的生成如圖2a所示,主要包括參數(shù)配置、數(shù)據(jù)編碼和碼圖生成。
圖2 點(diǎn)陣防偽碼的生成與解碼流程圖
參數(shù)配置主要包含生成點(diǎn)陣防偽碼中加密參數(shù)的選擇、打印時(shí)dpi的選擇。數(shù)據(jù)編碼過程為將所給信息數(shù)據(jù)首先經(jīng)過RSA算法加密產(chǎn)生密文;對明文使用Reed-Solomon(里德-所羅門)算法,產(chǎn)生糾錯(cuò)碼;將密文和糾錯(cuò)碼結(jié)合構(gòu)成數(shù)據(jù)模塊。碼圖生成為將所生成的數(shù)據(jù)轉(zhuǎn)換成對應(yīng)點(diǎn)陣防偽圖像即可。
其中點(diǎn)陣防偽碼結(jié)構(gòu)圖如圖3所示,碼圖由定位模塊和數(shù)據(jù)模塊組成。
圖3 點(diǎn)陣混合圖像防偽碼圖像結(jié)構(gòu)
定位模塊可分為3個(gè)主定位模塊和一個(gè)輔助定位模塊,如圖4所示。
圖4 點(diǎn)陣防偽碼定位模塊
圖4中黑色區(qū)域邊長為1個(gè)像素點(diǎn),白色區(qū)域邊長為3個(gè)相素點(diǎn)。圖4a為主定位模塊,位于點(diǎn)陣防偽碼圖形的左上角,右上角,和左下角。圖4b為輔助定位模塊,位于點(diǎn)陣防偽碼圖形的右下角。
數(shù)據(jù)模塊圖形由最小數(shù)據(jù)單元構(gòu)成,每一個(gè)最小數(shù)據(jù)單元可以表示8位二進(jìn)制數(shù)字。最小數(shù)據(jù)單元圖像如圖5所示。
圖5 最小數(shù)據(jù)單元圖形
圖5a所示為最小數(shù)據(jù)單元圖形模板,其中“回”形為數(shù)據(jù)點(diǎn),用1個(gè)像素點(diǎn)表示;白色區(qū)域?yàn)榉指顢?shù)據(jù)點(diǎn),保證每一個(gè)“回”形區(qū)域的間隔為5個(gè)像素點(diǎn)?!盎亍毙螀^(qū)域從左上角順時(shí)針旋轉(zhuǎn)依次代表8位二進(jìn)制數(shù)從最低位到最高位。圖5b為數(shù)據(jù)信息00000011。圖5c為數(shù)據(jù)信息11111111。每個(gè)最小單位模塊可有28種表示方式。將所得到數(shù)據(jù)模塊和碼圖中最小數(shù)據(jù)單元的對應(yīng)關(guān)系進(jìn)行轉(zhuǎn)換,即可完成點(diǎn)陣防偽碼的生成。
與點(diǎn)陣防偽碼組合的圖像可以是防偽花紋、水印、商標(biāo)logo、條形碼等。本文以條形碼為例,將條形碼圖像放入點(diǎn)陣防偽碼中心形成混合碼,如圖6所示。
圖6 點(diǎn)陣混合圖像防偽碼
混合碼的解碼首先是將點(diǎn)陣防偽碼和條形碼分離;然后讀取點(diǎn)陣防偽碼信息,再對分離出的條形碼圖像使用殘差神經(jīng)網(wǎng)絡(luò)進(jìn)行超分辨率重建,對重建后的圖形讀取信息;最后將兩次信息結(jié)合與商品對應(yīng)信息對比,判別真?zhèn)巍?/p>
點(diǎn)陣防偽碼的解碼規(guī)則和編碼規(guī)則相互對應(yīng),如圖2b所示,具體步驟如下:(1)圖像預(yù)處理:通過相機(jī)等設(shè)備采集的圖片一般為彩色圖片,先對圖像進(jìn)行二值化處理得到對應(yīng)黑白圖片;(2)尋找定位模塊:對處理后的圖像通過形態(tài)學(xué)操作處理,使得圖像中只有對應(yīng)4個(gè)定位模塊存在,通過輪廓提取,獲取對應(yīng)定位模塊的坐標(biāo);(3)透視變換:得到定位模塊的4個(gè)坐標(biāo),與標(biāo)準(zhǔn)圖像中對應(yīng)位置相結(jié)合,得到其轉(zhuǎn)換矩陣,進(jìn)而得到標(biāo)準(zhǔn)圖像。通過圖像中黑白點(diǎn)的對應(yīng)關(guān)系,將點(diǎn)陣防偽碼轉(zhuǎn)換為對應(yīng)的二進(jìn)制數(shù)據(jù),判斷防偽碼是否正確,取出對應(yīng)的數(shù)據(jù)內(nèi)容長度,得到內(nèi)容數(shù)據(jù)信息。
本文在防偽商標(biāo)超分辨率重建上提出的網(wǎng)絡(luò)有以下特點(diǎn):(1)采用亞像素重建,使得輸入為低分辨率圖像,減少計(jì)算復(fù)雜度;(2)使用跳躍級聯(lián)塊,將每一層提取的特征進(jìn)行合并,減少特征損失,加速收斂;(3)將低分辨率圖像通過雙三次插值,直接與網(wǎng)絡(luò)輸出圖像結(jié)合,使得網(wǎng)絡(luò)減少對低頻信息的學(xué)習(xí),加速網(wǎng)絡(luò)訓(xùn)練。圖7為網(wǎng)絡(luò)結(jié)構(gòu)圖。
圖7 網(wǎng)絡(luò)結(jié)構(gòu)圖
由圖7可知,本方法主要包含三段網(wǎng)絡(luò),分別為特征提取層、重建層和上采樣層。其中特征提取層由9個(gè)的卷積神經(jīng)網(wǎng)絡(luò)串聯(lián)構(gòu)成進(jìn)行底層特征提取,且每一層的深度依次遞減,以保證更為重要的局部特征不變的情況下來減少最后特征的層數(shù)。每一層采用Prelu激活函數(shù),防止隨著網(wǎng)絡(luò)層數(shù)增加,部分權(quán)重?zé)o法得到修改。Prelu激活函數(shù)公式如式(1)所示。
σ(y)=max(0,y)+αmin(0,y)
(1)
式中:y為經(jīng)過激活函數(shù)后的輸出;α為負(fù)半軸的學(xué)習(xí)參數(shù)。
在特征提取時(shí),隨著網(wǎng)絡(luò)層數(shù)增加,特征在反向傳播時(shí)存在梯度消失,使得訓(xùn)練結(jié)果與預(yù)期存在較大差異,無法繼續(xù)訓(xùn)練。本文將每一層的輸出結(jié)果都采用跳越級聯(lián)塊,將每一層所提取的特征與特征提取單元的最后一層相鏈接,使得每一層所提取的特征前向傳播的同時(shí),構(gòu)成殘差單元,解決了特征在反向傳播時(shí)的梯度消失。每一層卷積層的輸出見公式(2)所示。
Fi=PRelu(ωi*Fi-1+bi)
(2)
式中:ωi為每層的卷積核對應(yīng)的權(quán)重參數(shù);bi為偏置量;Fi為本層的特征;Fi-1為上一層的特征。
最后一層通過鏈接的方式將前邊每一層所提取的特征維度相連接,盡可能的實(shí)現(xiàn)對原始特征的保留,防止在傳播過程中的特征消失。同時(shí),因?yàn)橹苯訉⑶斑吽袑拥奶卣髦苯尤诤显谧詈笠粚樱脖WC了中間層網(wǎng)絡(luò)的稀疏性,減少了網(wǎng)絡(luò)參數(shù)。特征提取層的網(wǎng)絡(luò)輸出結(jié)果見式(3)所示。
F0=concatenate[F1,F2,…,Fi-1]
(3)
式中:F1、F2、…、Fi-1為每一個(gè)卷積層的輸出結(jié)果;F0為特征提取層輸出結(jié)果。
重建層為前一層將低分辨率圖像特征提取之后,因?yàn)樽詈蟛捎玫氖沁B接的方式,雖然盡可能的保留了低分辨率特征,但是因?yàn)檫B接后的特征層數(shù)是前邊所有卷積層維度的總和,所以重建層的輸入維度很高,本文采用的卷積神經(jīng)網(wǎng)絡(luò)對其進(jìn)行特征映射融合。為更好的將低分辨率特征轉(zhuǎn)換成高分辨率特征,本文在使用卷積層進(jìn)行降維之后重新添加了并行的3*3、5*5、7*7卷積,進(jìn)行多尺度特征融合。通過多尺度融合,使其在反向傳播時(shí)通過與高分辨率圖像對比,計(jì)算損失函數(shù),自動改變每個(gè)尺度的權(quán)重,從而選擇最優(yōu)的組合,更充分利用所采集特征構(gòu)造超分辨率圖像。
上采樣層通過重建層之后得到了超分辨率圖像的特征,通過亞像素卷積層的方式產(chǎn)生超分辨率圖像,其中放大的倍數(shù)計(jì)為h,首先通過1×1的卷積層將圖像變成h×h尺寸大小與原始低分率圖像一樣的圖像,再將每一個(gè)圖像的對應(yīng)像素組合到一張h×h的大小的圖像,得到對應(yīng)額高分辨率圖像。因?yàn)閳D像信息之間存在大量的冗余行,而在超分辨率重建時(shí)輸入的低分辨率圖像和高分辨率圖像很大程度上都是相似的,表明低分辨率圖像攜帶的低頻信息與高分辨率圖像的低頻信息十分相似,所以直接將低分辨率圖像采用雙三次插值的方法變成高分辨率圖像,亞像素卷積產(chǎn)生的高分辨率圖像進(jìn)行殘差,省去了大量低頻信息,進(jìn)而減少網(wǎng)絡(luò)參數(shù)學(xué)習(xí),加快訓(xùn)練速度。
本文采用最小均方誤差為損失函數(shù)。
(4)
式中:F(Xi;θ)為最后一層卷積輸出的重建后的高分辨率圖像;Yi為原始高分辨率樣本圖像。評價(jià)圖像的標(biāo)準(zhǔn)為峰值信噪比(PSNR),PSNR值越高代表圖片質(zhì)量越高,其公式見式(5)所示。
(5)
(6)
式中:M為樣本個(gè)數(shù);Y為超分辨率重建后的圖片;X為原始圖片。
點(diǎn)陣防偽碼的設(shè)計(jì)使用python語言進(jìn)行編寫,點(diǎn)陣防偽碼圖像處理時(shí)使用Opencv庫進(jìn)行畫圖和相應(yīng)的變換,圖像的超分辨率重建在ubuntu環(huán)境下,訓(xùn)練時(shí)采用tensorflow框架,在GPU下通過cuda9和cudnn8加速,顯卡為NVDI 1080TI。
本文網(wǎng)絡(luò)不同層的維度如表1所示。
表1 網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)
訓(xùn)練時(shí)首先應(yīng)用標(biāo)準(zhǔn)數(shù)據(jù)集Yang91數(shù)據(jù)集和BSD200數(shù)據(jù)集,用于與其他方法進(jìn)行比較;然后針對條形碼圖像將Yang91數(shù)據(jù)集、BSD200數(shù)據(jù)集和200張條形碼圖片融合作為訓(xùn)練集。對每張圖像以64×64像素滑動窗口進(jìn)行裁剪,作為標(biāo)簽圖片。將裁剪后的圖片下采樣為32×32像素的圖像,每次以128張32×32像素的圖像為一個(gè)最小批次進(jìn)行訓(xùn)練,初始權(quán)重為he initialization方法。網(wǎng)絡(luò)采用Adam優(yōu)化算法加速收斂。初始學(xué)習(xí)率設(shè)定為0.002,當(dāng)?shù)螖?shù)中損失值不發(fā)生變換時(shí),使得當(dāng)學(xué)習(xí)率小于0.0002時(shí),停止訓(xùn)練。
改進(jìn)后的點(diǎn)陣防偽碼比原有點(diǎn)陣防偽碼具有更強(qiáng)的防偽能力。為驗(yàn)證改進(jìn)后的點(diǎn)陣防偽碼防偽性能,圖8表示在300dpi下,數(shù)據(jù)為‘1234567892345678912345678’(最多可存放202位10進(jìn)制數(shù)字)產(chǎn)生的大小為40mm40mm的點(diǎn)陣防偽碼。通過對打印后的點(diǎn)陣防偽碼圖像進(jìn)行拍照后再次打印,判別第二次打印后圖像的可識別性,從而判斷點(diǎn)陣防偽碼的防偽能力。
圖8a為第一次打印后的圖片,是第一次信息衰減;圖8b為經(jīng)過拍照后的圖片,是第二次信息衰減;圖8c為對圖8b拍照后經(jīng)過處理的圖片,是第三次衰減,可以讀取點(diǎn)陣信息;圖8d為對圖8c進(jìn)行打印,是第四次衰減,此時(shí)再對圖8d進(jìn)行識別,已經(jīng)無法識別。表2為改進(jìn)后的點(diǎn)陣防偽碼在不同分辨率下的防偽性能。
圖8 打印出的點(diǎn)陣防偽碼圖形
與SRCNN、DRCN、VDSR圖像超分辨率重建算法在測試集Set5、Set14和BSD100上通過對圖像的PSNR進(jìn)行比較,對圖像進(jìn)行2倍超分辨率重建后,PSNR值的結(jié)果如表3所示。
表2 防偽性能對比
表3 不同方法對比
圖9是對圖5中低分辨率條形碼進(jìn)行超分辨率重建后的結(jié)果。圖9a為低分率條形碼圖案,圖9b為使用雙三次插值放大2倍后的圖像,圖9c為使用本文方法放大2倍后的圖像。由圖9可以看出,本文使用殘差神經(jīng)網(wǎng)絡(luò)放大兩倍后的圖像清晰度遠(yuǎn)遠(yuǎn)高于傳統(tǒng)雙線性插值放大后的圖像。使用手機(jī)進(jìn)行識別時(shí),圖9a、圖9b均無法正確識別條形碼信息,圖9c可以正確識別條形碼信息。
圖9 重建對比圖形
在此基礎(chǔ)上,將混合碼信息‘全球條形碼服務(wù)機(jī)構(gòu)1234567892345678912345678’與商品信息對比,實(shí)現(xiàn)了商品的防偽。
提出一種基于深度學(xué)習(xí)的點(diǎn)陣防偽碼混合圖像的防偽方法。通過對點(diǎn)陣防偽碼和圖像的識別,將兩次識別結(jié)果進(jìn)行組合輸出,與商標(biāo)中對應(yīng)信息對比以判別商品真?zhèn)?。改進(jìn)后的點(diǎn)陣防偽碼具有信息傳遞和防偽的性能,并且能在較低的分辨率下實(shí)現(xiàn)防偽,提高了商品的防偽能力。