python download.py
mv 表情包 ori
python prepare_data.py
python train.py
python demo.py
各种论坛以及即时通讯工具通常会将表情包过分压缩,影响观感。本文参考EDSR(Enhanced Deep Super-Resolution)提出一种简单的表情包修复方法。
JPG图像过度压缩后会出现明显的块状和波纹状噪音,本文提供一种修复噪音的方法。
如图,左边的高质量表情包经过压缩后出现了噪音。经过Resnet18网络降噪,表情包的噪音被修复,观感与原图相近,甚至原图中被压缩的痕迹也得到了修复。
单图像超分辨率(SISR)问题已经有了很多研究。图像压缩修复是一个与之类似的问题:SISR重建降低分辨率所丢失的信息,而本文重建图像在过度压缩中丢失的信息。EDSR使用单网络实现图像超分辨率,是NTIRE 2017超分辨率挑战的第一名。本文使用与之类似的网络结构以实现图像压缩修复。
Compressed | SRCNN修复 | Resnet18修复 |
---|---|---|
![]() |
![]() |
![]() |
Resnet引入残差框架使得深度网络更容易学习[2]。本文使用修改过的18层无pooling残差网络作为超分辨率基础网络。
SRCNN[3]是早期的单图像超分辨率网络。网络输入大小和输出大小除padding外完全一致。训练时将训练图片双立方插值到1/2大小再双立方插值到原大小作为网络输入,原图作为网络输出。使用时需要先将图像双立方插值到2倍大小,再经过网络获得清晰的图像。我们仿照SRCNN的做法,训练时从训练图像中提取出64*64的黑白图像作为网络输入,以加速训练。测试时使用原图像大小。
在JPG压缩修复的问题中,我们不使用双立法插值准备训练数据,而使用高质量的训练图片过度压缩,得到训练样本。
EDSR是较新的单网络超分辨率方法。它移除了残差网络中多余的层,达到了2017年的state-of-the-art[1]。 该文章提出了Residual Module中的Batch Normalization层"消除了范围的灵活性"[1],对超分辨率任务无利。本文中重建图像的任务与超分辨率类似,使用无Batch Normalization的残差网络。
我们在百度图片中以"表情包"为关键词找到700张图片,并且人工筛选出209张高质量图片作为训练数据集。在训练数据集中,我们对每张图片使用python-pillow进行压缩,并且将图像长边限制在320px,得到网络的输入和输出数据。对于网路输入数据,选择压缩质量10。对于网路输出数据,选择压缩质量100。
本文提出两种可用于JPG压缩修复的网络结构:
使用SRCNN中提出的网络结构:
Conv(64 kernals, 9x9) -> relu -> Conv(32 kernals, 1x1) -> relu -> Conv(1 kernal, 5x5)
使用类似EDSR的设计,去除resnet18的stride,保留8个同样的ResBlock。保留了最后的add层,以迫使网络习得由JPG压缩所产生的噪音。网络共18个卷积层。如图所示,ResBlock与EDSR中略有不同,保留了最后的relu层。除可根据上下文推断的情况外,所有卷积均为3x3, 64filters。
由于训练表情包多数以黑白为主,训练时先将图片转为灰度图,再从中截出64*64的部分图片送入网络,使用Adam优化器keras默认参数,batchsize=256,训练24epochs。
对于黑白图片直接通过网络得到修复后的图像。对于彩色图片,每个通道分别通过网络后,合并得到修复后的图像。可对输出图像再次进入网络,可能会得到更清晰的图像。
使用两种网络在训练集上测试图像修复效果
Raw | SRCNN | Resnet18 | |
---|---|---|---|
PSNR | 27.52 | 30.00 | 31.31 |
Sample1 | ![]() |
![]() |
![]() |
Sample2 | ![]() |
![]() |
![]() |
Sample3 | ![]() |
![]() |
![]() |
Sample3 | ![]() |
![]() |
![]() |
Sample4 | ![]() |
![]() |
![]() |
Table 1: Average PSNR of Reconstruction on the 209-Image Dataset
SRCNN | Resnet18 |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Table 2: Comparison between Two Models. From top to down: Raw image, fixed image, Residual (noise).
- B. Lim, S. Son, H. Kim, S. Nah, and K. M. Lee, "Enhanced Deep Residual Networks for Single Image Super-Resolution," 2017 IEEE Conference on Computer Vision and Pattern Recognition Workshops (CVPRW), 2017.
- K. He, X. Zhang, S. Ren, and J. Sun, "Deep Residual Learning for Image Recognition," 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016.
- C. Dong, C. C. Loy, K. He, and X. Tang. "Learning a deep convolutional network for image super-resolution," Proceedings of European Conference on Computer Vision (ECCV), 2014.