基于感知損失的實時風格遷移與超分辨率重建
點擊上方“小白學視覺”,選擇加"星標"或“置頂”
重磅干貨,第一時間送達
許多經(jīng)典的圖像問題都可以被看成是圖像變換任務,算法接受一個輸入圖像,然后輸出變換之后的圖像。最常見的例子就是圖像處理中的取噪、超分辨重建、圖像彩色化等問題,輸入的圖像是退化低質量圖像(噪聲、低分辨率、灰度化)得到的輸出是一個彩色、高分辨率、高質量的圖像,此外這類變換還包括圖像語義分割、深度評估。以前基于卷積神經(jīng)網(wǎng)絡來解決這類問題通常采用的是像素基本的損失,但是這種方法訓練得到模型擬合標注數(shù)據(jù)與輸出結果之后的感知不同,作者正是基于這點提出了基于感知的損失來訓練糾正這種偏差。
像素基本損失
在像素基本對比兩幅圖像、如果兩幅圖像感知相同,但是像素不同,像素損失就會造成很大偏差。
感知損失
基于高階卷積神經(jīng)網(wǎng)絡特征實現(xiàn)感知比較,不做像素基本的損失。
作者基于感知損失實驗了兩個圖像處理任務,均取得了比較好的效果
圖像風格遷移任務
圖像超分辨
顯示如下:


模型主要分為兩個部分,圖像變換網(wǎng)絡與感知損失網(wǎng)絡,其中損失網(wǎng)絡在訓練過程種保持不變,主要是采用預訓練的圖像分類網(wǎng)絡如VGG16。定義感知損失來分別度量風格與內(nèi)容的感知不同,實現(xiàn)最優(yōu)化得到訓練模型。相關的損失表示如下:

出了上述損失之外,作者還定義了兩個低階的損失,一個是簡單的像素損失,另外一個是全變分正則化損失。
風格遷移的實驗結果

超分辨實驗結果

源碼下載地址:
https://github.com/jcjohnson/fast-neural-style預訓練模型下載
bash models/download_style_transfer_models.shOpenCV DNN使用預訓練模型輸出結果:

演示代碼:
inWidth = 256
inHeight = 256
h, w = frame.shape[:2]
inp = cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight),
(103.939, 116.779, 123.68), swapRB=False, crop=False)
# 執(zhí)行風格遷移
net.setInput(inp)
out = net.forward()
print(out.shape)
t, _ = net.getPerfProfile()
freq = cv.getTickFrequency() / 1000
label = "FPS : %.2f" % (1000 / (t / freq))
# 解析輸出
out = out.reshape(3, out.shape[2], out.shape[3])
print("ddddddddd", out.shape)
out[0] += 103.939
out[1] += 116.779
out[2] += 123.68
out /= 255.0
out = out.transpose(1, 2, 0)
print("new shape", out.shape)
out = np.clip(out, 0.0, 1.0)
# rescale與中值模糊,消除極值點噪聲
cv.normalize(out, out, 0, 255, cv.NORM_MINMAX)
out = cv.medianBlur(out, 5)
# resize and show
result = np.uint8(cv.resize(out, (w, h)))
cv.putText(result, label, (5, 25), cv.FONT_HERSHEY_SIMPLEX, 0.75, (0, 0, 255), 2)
cv.imshow('Fast Style Demo', result)
cv.imwrite("D:/result_%d.png"%index, result)好消息,小白學視覺團隊的知識星球開通啦,為了感謝大家的支持與厚愛,團隊決定將價值149元的知識星球現(xiàn)時免費加入。各位小伙伴們要抓住機會哦!

交流群
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~

