模糊圖像變高清:TPU-MLIR引領(lǐng)EDSR向MDSR的智能轉換!
模型介紹
EDSR模型,全稱(chēng)為enhanced deep super-resolution network(增強的深度學(xué)習超分辨率重建網(wǎng)絡(luò ))。該模型可以對指定圖片進(jìn)行超分辨率操作,提高清晰度。
而MDSR是多尺度的超分模型,可以一次輸出不同scale的圖片,相比EDSR,可以在相同的性能下,減少很多的參數。
EDSR模型結構如下:

MDSR模型結構如下:

本期內容將會(huì )帶領(lǐng)大家學(xué)習如何利用TPU-MLIR實(shí)現EDSR模型到MDSR模型的轉換。
模型導出與轉換
本文中轉換用到的模型來(lái)自:https://github.com/sanghyun-son/EDSR-PyTorch 基本流程為將原項目與模型下載后導出為onnx模型。再利用TPU-MLIR工具將onnx模型轉換為bmodel模型。
目錄結構安排如下,其中dataset文件夾中是量化所用的DIV2K數據集,image文件夾下是測試圖片,model文件夾中是待轉換的onnx模型。

以下命令均在TPU-MLIR的docker環(huán)境內進(jìn)行。
-
進(jìn)入EDSR-transform目錄
-
設置參數?

? ? ? ?3. 模型轉換和量化

轉換結果評估
-
評估過(guò)程說(shuō)明
-
配置好BM1684X平臺,上傳并解壓本項目
EDSR-BM1684x.zip,同時(shí)下載benchmark數據集,確保benchmark與EDSR文件夾在同一目錄內。進(jìn)入EDSR/python目錄下,運行以下命令:

-
推理結果保存在
EDSR/python/results中,更改不同bmodel參數以使用不同bmodel
? ? ? ?2. 評估結果方法

評估主要代碼(eval.py)如下


-
評價(jià)結果保存在
results/*/result.log里
? ? ? 3. 若是想測試自己的圖片,請將圖片放入image目錄下然后運行以下命令,結果保存在results/image里。更改bmodel模型來(lái)更換模型與超分倍率

評價(jià)代碼如下

-
評估結果
精度測試方法
測試數據集采用Set14數據集,指標采用與原論文一致的PSNR+SSIM指標來(lái)衡量圖像質(zhì)量。因為我們在模型固定輸入大小的情況下,對原圖進(jìn)行裁切,超分,拼合的形式達到動(dòng)態(tài)輸入的效果,所以有的精度指標在測試中不僅不會(huì )降低反而會(huì )升高。同時(shí)又由于不同放大倍數的模型輸入大小和模型參數不一樣,推理時(shí)間的比例也會(huì )發(fā)生變化。

?
?




?
?
-
結果展示
超分前圖片:zebrax4 from Set14

MDSRx4超分后圖片

結論
本次轉換了EDSR和MDSR超分辨率模型,分別實(shí)現了fp32, fp16, int8多種精度模型轉換, TPU-MLIR對這兩個(gè)模型支持較好,轉換過(guò)程中比較順利。從最終評估結果上看,這兩個(gè)超分模型對推理的數值精度不敏感,經(jīng)過(guò)量化后,相關(guān)指標損失較少,甚至有些指標還會(huì )提升。另外,在BM1684X的平臺上,INT8推理時(shí)間最短,故在部署時(shí),推薦使用量化后的INT8模型部署。
?