趙佳英
(浙大寧波理工學院圖書與信息技術中心,浙江 寧波315199)
近年來,超分辨率圖像重建技術主要分為3 類:一類是基于插值的,一類是基于重建的,另一種是基于學習的重建方法。目前,大多重建算法是基于樣本學習的,其通過大量的訓練數據,在神經網絡模型中學習低分辨率和高分辨率圖像之間的某種對應的映射關系,最后通過訓練得到的模型來重建圖像數據。1984年,圖像超分辨率重建的概念被TSAI 等人首次提出;2016 年,DONG 等人提出了基于深度學習的卷積神經網絡的超分辨率算法SRCNN;2017 年,LEDIG 等人結合生成對抗網絡提出了SRGAN 算法,在重構圖像細節上有了更好的表現[1]。
本文設計開發的圖像重建工具軟件就是支持SRResNet 和SRGAN 算法的圖像重建工具,利用Tkinter 庫設計用戶圖像界面客戶端,加載訓練得到的算法模型,將用戶上傳的低分辨率圖像轉換為超分辨率圖像,軟件支持png、jpg 等多種圖像格式,并支持圖像處理結果的下載保存。
本文使用的Python 版本為Python3.7。Pytorch 作為Python 的一個開源機器學習庫,是一個相當簡潔且高效快速的框架,能夠支撐GPU 加速的張量計算和支持自動求導系統的深度神經網絡。Tkinter 是Python 的標準GUI 工具包接口,支持按鈕、消息、標簽等多種控件,為開發本文工具軟件的基礎客戶端窗口提供了基礎庫支持。Pillow 是Python 一個非常好用的圖像處理庫,提供了基礎的圖像處理功能,例如圖像裁剪、調整大小等,軟件在圖像加載、圖像大小顯示等方面提供了庫支持。
圖像分辨率指每英寸圖像內像素點數量的存儲量,一定程度上,決定著圖像的清晰程度。超分辨率圖像重建是指將給定的低分辨率圖像利用特定的算法模型轉變成相對清晰的高分辨率圖像的技術。簡單地說,超分辨率圖像重建就是將小尺寸圖像通過算法模型重建為更為清晰的大尺寸圖像。本文開發的軟件支持SRResNet 和SRGAN 這2 種算法[2]。
1.2.1 SRResNet
SRResNet 是結合深度殘差網絡ResNet 模型提出的圖像重建算法,由卷積層和殘差模塊組成。殘差學習中引入了跳連接,解決了深度學習中增加網絡層深度出現的梯度消失問題。SRResNet 使用了子像素卷積層,不同于直接上采樣和插值,它利用多個相同大小的特征圖,拼接為一個大圖。
1.2.2 SRGAN
SRGAN 是超分辨率圖像重建利用生成對抗網絡模型的思想形成的算法。生成對抗網絡GAN 利用通過生成網絡和判別網絡2 個模型之間的不斷博弈,提升模型效力。生成網絡模型不斷生成原始圖像來迷惑判別器,判別器盡力發現生成圖與原始圖之間的破綻。在不斷博弈過程中,生成網絡模型的生成技術不斷精進,判別網絡的糾錯能力也不斷提高。
作為工具軟件,軟件以客戶端形式打開,首先用戶設置圖像的放大比例,上傳需要處理的圖像,圖像格式支持基礎的png、jpg 等格式,之后選擇圖像重建算法,軟件目前支持SRResNet 和SRGAN 這2 種深度學習訓練模型,利用之前參數已訓練完成的模型處理圖像,將處理結果回顯至軟件窗口,支持下載保存功 能。軟件設計思路如圖1 所示。

圖1 軟件設計思路
模型訓練計算機的配置如下:CPU 為i7-10710U;GPU 為NVIDIA GeForce MX250。考慮是計算機GPU配置不夠導致的內存溢出,本文使用CPU 對模型進行訓練和后續的圖像重建。
圖2 為SRResNet 模型,從前向傳播代碼可以看到,它包含激活函數為PReLU 的卷積,經過殘差模塊,再通過無激活函數的卷積計算。結合前2 次卷積結果,進行子像素卷積,最后進行激活函數為tanh 的卷積模塊計算。

圖2 SRResNet 模型部分代碼
SRGAN 的生成器模型和SRResNet 模型一致,判別器網絡模型如圖3 所示。從前向傳播代碼中可以看到,判別器包含一個卷積計算,池化之后進行全連接神經網絡計算,經過激活函數ReLU 處理后再進行一次全連接運算,最后一次Sigmoid 激活函數計算包含在Pytorch 的損失函數方法中。將上述2 種模型通過前向傳播、損失函數、反向傳播進行處理,最終利用torch.save()將模型保存為pth 格式。

圖3 SRGAN 判別器網絡部分代碼
接下來,利用Tkinter 庫構建用戶圖形界面,軟件支持jpg 和png 格式圖像,根據窗口大小,對圖像進行縮放調整,并進行了基本的容錯提醒,包含上傳圖像格式的提醒和未選擇放大比例的提醒。圖4 方法代碼是根據用戶選擇的模型進行圖像超分辨率處理。首先根據加載模型,將用戶上傳的圖像轉換為RGB 格式,對圖像像素進行歸一化操作,便于進一步放入模型進行處理,最后得到處理圖像結果。

圖4 調用模型處理圖像代碼
在程序目錄下利用命令提示符輸入Python softwareGui.py 運行軟件,軟件設置了用戶使用過程中未設置參數提醒彈框提醒,如“未選擇放大比例”“請上傳png、jpg 格式圖片”等。本文使用了2 類圖進行了軟件測試,分別為風景圖像和動物圖像。通過圖像處理可以看到,2 種算法都表現了良好的圖像處理效果,如圖5 所示。SRResNet 處理得更顯平滑一些,SRGAN 在細節重構方面做得更好一些。

圖5 軟件處理圖像結果

深度學習在圖像重建的模型算法已相對成熟,應用大量的訓練數據,在神經網絡模型中學習低分辨率和高分辨率圖像之間的某種對應的映射關系,依據訓練得到的模型重建圖像數據。本文設計開發的圖像重建工具軟件支持SRResNet 和SRGAN 算法,利用Tkinter 庫設計用戶圖像界面客戶端,加載訓練得到的算法模型,將用戶上傳的低分辨率圖像轉換為超分辨率圖像,軟件支持png、jpg 等多個圖像格式,并支持圖像處理結果的下載保存。通過對圖像重建工具的軟件測試,軟件運行正常,實現了基礎的低分辨率圖像處理功能,但支持的重建算法不夠全面,用戶可配置參數不多,軟件運行對計算機性能的要求也較高,希望未來可以開發出更完善的圖像重建工具。