基于感知损失的实时风格迁移与超分辨率重建

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

方法概述

许多经典的图像问题都可以被看成是图像变换任务,算法接受一个输入图像,然后输出变换之后的图像。最常见的例子就是图像处理中的取噪、超分辨重建、图像彩色化等问题,输入的图像是退化低质量图像(噪声、低分辨率、灰度化)得到的输出是一个彩色、高分辨率、高质量的图像,此外这类变换还包括图像语义分割、深度评估。以前基于卷积神经网络来解决这类问题通常采用的是像素基本的损失,但是这种方法训练得到模型拟合标注数据与输出结果之后的感知不同,作者正是基于这点提出了基于感知的损失来训练纠正这种偏差。

像素基本损失

在像素基本对比两幅图像、如果两幅图像感知相同,但是像素不同,像素损失就会造成很大偏差。

感知损失

基于高阶卷积神经网络特征实现感知比较,不做像素基本的损失。

作者基于感知损失实验了两个图像处理任务,均取得了比较好的效果

图像风格迁移任务
图像超分辨

显示如下:

103a9fdd298d8ef09b4300dcde42b850.png

模型架构

84f15621aaa7ceab3ed195562eba6683.png

模型主要分为两个部分,图像变换网络与感知损失网络,其中损失网络在训练过程种保持不变,主要是采用预训练的图像分类网络如VGG16。定义感知损失来分别度量风格与内容的感知不同,实现最优化得到训练模型。相关的损失表示如下:

0d0b86ad6bfd2da1c3d74b041427a950.png

出了上述损失之外,作者还定义了两个低阶的损失,一个是简单的像素损失,另外一个是全变分正则化损失。


实验结果

风格迁移的实验结果

424eef9bad65302d56624dc2765048b7.png

超分辨实验结果

eaf2838cdbbc480da90e8bab6c544ddd.png

源码下载地址

https://github.com/jcjohnson/fast-neural-style

预训练模型下载

bash models/download_style_transfer_models.sh

OpenCV DNN使用预训练模型输出结果:

27efcb00505d20fcec950c01564f0536.png

演示代码:

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)

# 执行风格迁移
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元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

3583404bc29e1dfa041bc73f052d4548.png

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

c3efae676c77e54cd0bd70a66f7b3f55.png

d93d9f53407cc54f6cf2f3b1f3f0c3bd.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值