筆者從CSDN平臺(tái)遷移至簡書:https://blog.csdn.net/Autism_/article/details/79401798(CSDN鏈接)
圖像超分辨率重建:指通過低分辨率圖像或圖像序列恢復(fù)出高分辨率圖像苗缩。高分辨率圖像意味著圖像具有更多的細(xì)節(jié)信息、更細(xì)膩的畫質(zhì),傅联,這些細(xì)節(jié)在高清電視跌帐、醫(yī)學(xué)成像合溺、遙感衛(wèi)星成像等領(lǐng)域有著重要的應(yīng)用價(jià)值。
Super-Resolution Convolutional Neural Network:本篇文章講述的是深度學(xué)習(xí)在圖像超分辨率重建問題的開山之作SRCNN(Super-Resolution Convolutional Neural Network)。香港中文大學(xué)Dong等將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于單張圖像超分辨率重建上(Image Super-Resolution Using Deep Convolutional Networks)
論文與官方代碼: paper and offical code
筆者復(fù)現(xiàn)代碼(Tensorflow version):my code
一逢勾、SRCNN
1. SRCNN框架
圖1為SRCNN的框架扰柠,SRCNN將深度學(xué)習(xí)與傳統(tǒng)稀疏編碼之間的關(guān)系作為依據(jù)粉铐,將3層網(wǎng)絡(luò)劃分為圖像塊提取(Patch extraction and representation)、非線性映射(Non-linear mapping)以及最終的重建(Reconstruction)卤档。
2. SRCNN流程
? ? (1)先將低分辨率圖像使用雙三次差值放大至目標(biāo)尺寸(如放大至2倍蝙泼、3倍、4倍)劝枣,此時(shí)仍然稱放大至目標(biāo)尺寸后的圖像為低分辨率圖像(Low-resolution image)汤踏,即圖中的輸入(input)织鲸;
? ? (2)將低分辨率圖像輸入三層卷積神經(jīng)網(wǎng)絡(luò),(舉例:在論文中的其中一實(shí)驗(yàn)相關(guān)設(shè)置溪胶,對YCrCb顏色空間中的Y通道進(jìn)行重建搂擦,網(wǎng)絡(luò)形式為(conv1+relu1)—(conv2+relu2)—(conv3))第一層卷積:卷積核尺寸9×9(f1×f1),卷積核數(shù)目64(n1)哗脖,輸出64張?zhí)卣鲌D瀑踢;第二層卷積:卷積核尺寸1×1(f2×f2),卷積核數(shù)目32(n2)才避,輸出32張?zhí)卣鲌D橱夭;第三層卷積:卷積核尺寸5×5(f3×f3),卷積核數(shù)目1(n3)工扎,輸出1張?zhí)卣鲌D即為最終重建高分辨率圖像徘钥。
3. 如何訓(xùn)練?
(1)訓(xùn)練數(shù)據(jù)集:論文中某一實(shí)驗(yàn)采用91張自然圖像作為訓(xùn)練數(shù)據(jù)集肢娘,對訓(xùn)練集中的圖像先使用雙三次差值縮小到低分辨率尺寸呈础,再將其放大到目標(biāo)放大尺寸,最后切割成諸多33×33圖像塊作為訓(xùn)練數(shù)據(jù)橱健,作為標(biāo)簽數(shù)據(jù)的則為圖像中心的21×21圖像塊(與卷積層細(xì)節(jié)設(shè)置相關(guān))而钞;
(2)損失函數(shù):采用MSE函數(shù)作為卷積神經(jīng)網(wǎng)絡(luò)損失函數(shù);
(3)卷積層細(xì)節(jié)設(shè)置:第一層卷積核9×9拘荡,得到特征圖尺寸為(33-9)/1+1=25臼节,第二層卷積核1×1,得到特征圖尺寸不變珊皿,第三層卷積核5×5网缝,得到特征圖尺寸為(25-5)/1+1=21。訓(xùn)練時(shí)得到的尺寸為21×21蟋定,因此圖像中心的21×21圖像塊作為標(biāo)簽數(shù)據(jù)粉臊。(卷積訓(xùn)練時(shí)不進(jìn)行padding)
4. 如何測試?
(1)全卷積網(wǎng)絡(luò):所用網(wǎng)絡(luò)為全卷積網(wǎng)絡(luò)驶兜,因此作為實(shí)際測試時(shí)扼仲,直接輸入完整圖像即可;
(2)Padding:訓(xùn)練時(shí)得到的實(shí)際上是除去四周(33-21)/2=6像素外的圖像抄淑,若直接采用訓(xùn)練時(shí)的設(shè)置(無padding)屠凶,得到的圖像最后會(huì)減少四周各6像素(如插值放大后輸入512×512,輸出500×500)肆资。因此在測試時(shí)每一層卷積都進(jìn)行了padding(卷積核尺寸為1×1的不需要進(jìn)行padding)矗愧。這樣保證插值放大后輸入與輸出尺寸的一致性。
? ? (使用Tensorflow進(jìn)行復(fù)現(xiàn)時(shí)迅耘,圖像預(yù)處理時(shí)將像素點(diǎn)取值歸一化至[0,1]贱枣,測試時(shí)监署,得到的最后一層特征圖即重建結(jié)果直接乘以255再使用uint8轉(zhuǎn)換時(shí)為0-255取值時(shí)會(huì)出現(xiàn)一些問題颤专,如左下圖2中方框所示纽哥,因此在乘以255前,將負(fù)值設(shè)置為0栖秕,大于255的設(shè)置為255春塌,再使用uint轉(zhuǎn)換即可解決)
(詳細(xì)的padding方式等,可以查看鏈接中的代碼)
5. 重建結(jié)果簇捍?
(1)客觀評價(jià)指標(biāo)PSNR與SSIM:相比其他傳統(tǒng)方法只壳,SRCNN取得更好的重建效果
(2)主觀效果:相比其他傳統(tǒng)方法,SRCNN重建效果更具優(yōu)勢