资讯专栏INFORMATION COLUMN

Python+OpenCV 图像风格迁移(模仿名画)

DoINsiSt / 2151人阅读

摘要:我最近才发现在的代码中就有图像风格迁移的示例原谅我的后知后觉,是基于论文中的网络模型实现。中值滤波的窗口大小,用来对结果图像进行平滑处理,这个对结果影响不大。

现在很多人都喜欢拍照(自拍)。有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了 模仿名画风格 的功能,比如 prisma、versa 等,可以把你的照片变成 梵高、毕加索、蒙克 等大师的风格。

这种功能叫做“ 图像风格迁移 ”,几乎都是基于 CVPR 2015 的论文《 A Neural Algorithm of Artistic Style 》和 ECCV 2016 的论文《 Perceptual Losses for Real-Time Style Transfer and Super-Resolution 》中提出的算法,以及后续相关研究的基础上开发出来的。

通俗来讲,就是借助于 神经网络 ,预先将名画中的风格训练成出模型,在将其应用在不同的照片上,生成新的风格化图像。

来自《A Neural Algorithm of Artistic Style》

而因为神经网络在计算机视觉方面的应用越来越广,著名的视觉开发库 OpenCV 在 3.3 版本中正式引入 DNN(深度神经网络) ,支持 Caffe、TensorFlow、Torch/PyTorch 等主流框架的模型,可用以实现图像的识别、检测、分类、分割、着色等功能。
我最近才发现在 OpenCV 的 Sample 代码中就有图像风格迁移的 Python 示例(原谅我的后知后觉),是基于 ECCV 2016 论文中的网络模型实现。所以,即使作为人工智能的菜鸟,也可以拿别人训练好的模型来玩一玩,体会下神经网络的奇妙。

(相关代码和模型的获取见文末)

OpenCV 官方代码地址: https://github.com/opencv/opencv/blob/3.4.0/samples/dnn/fast_neural_style.py

目录下通过执行命令运行代码:


python fast_neural_style.py --model starry_night.t7

model 参数是提供预先训练好的模型文件路径,OpenCV 没有提供下载,但给出的参考项目 https://github.com/jcjohnson/fast-neural-style 中可以找到

其他可设置参数有:

input 可以指定原始图片/视频,如果不提供就默认使用摄像头实时采集。

widthheight,调整处理图像的大小,设置小一点可以提高计算速度。在我自己的电脑上,300x200 的转换视频可以达到 15 帧/秒。

median_filter 中值滤波的窗口大小,用来对结果图像进行平滑处理,这个对结果影响不大。

执行后的效果(取自 jcjohnson/fast-neural-style):

原始图像ECCV16 modelsinstance_norm models

核心代码其实很短,就是 加载模型 - > 读取图片 -> 进行计算 -> 输出图片,我在官方示例基础上进一步简化了一下:


import cv2
# 加载模型
net = cv2.dnn.readNetFromTorch("the_scream.t7")
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV);
# 读取图片
image = cv2.imread("test.jpg")
(h, w) = image.shape[:2]
blob = cv2.dnn.blobFromImage(image, 1.0, (w, h), (103.939, 116.779, 123.680), swapRB=False, crop=False)
# 进行计算
net.setInput(blob)
out = net.forward()
out = out.reshape(3, out.shape[2], out.shape[3])
out[0] += 103.939
out[1] += 116.779
out[2] += 123.68
out /= 255
out = out.transpose(1, 2, 0)
# 输出图片
cv2.imshow("Styled image", out)
cv2.waitKey(0)

另外还改了个多效果实时对比的版本(计算量大了,很卡顿),也一并上传在代码中。

PS:前两天看赵雷演唱会的时候我还说:他演唱会的背景 MV 大量使用了 图像二值化、边缘检测 等操作,让我想到以前数字图像处理课的大作业……现在图像风格迁移的效率达到了实时,想必以后也会经常被使用吧

获取文中相关代码和模型下载地址,请在公众号( Crossin的编程教室 )对话中回复关键字 名画

════
其他文章及回答:

如何自学Python | 新手引导 | 精选Python问答 | 如何debug? | Python单词表 | 知乎下载器 | 人工智能 | 嘻哈 | 爬虫 | 我用Python | 抓抖音 | requests | AI平台

欢迎微信搜索及关注: Crossin的编程教室

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44811.html

相关文章

  • OpenCV-Python,计算机视觉开发利器

    摘要:而这其中,很多应用都涉及到计算机视觉这样一个细分领域。常见的图像处理灰度图二值化平滑边缘提取这几种都属于数字图像处理的常用方法。对这方面知识感兴趣的,可以找本数字图像处理的相关教材系统地看一遍,了解数字图像处理的基础。 人工智能 ,一个已经被谈论了几十年的概念(最早是 图灵 在 1950年 提出)。如今这几年,相关技术的发展速度是越来越快。高大上如无人驾驶、智能安防、AI辅助诊断,接地...

    阿罗 评论0 收藏0
  • Python+openpose 实现抖音尬舞机

    摘要:而另一款网红产品抖音,也在去年底上线过一个尬舞机的音乐体感游戏现在成了隐藏功能游戏开始后,随着音乐会给出不同的动作提示,用户按照提示摆出正确动作即可得分。 如今说到体感游戏,大家一定都不陌生,比如微软的 Kinect、任天堂的 Switch,都曾是游戏业的革命性产品。而另一款网红产品—抖音,也在去年底上线过一个尬舞机的音乐体感游戏(现在成了隐藏功能): showImg(https://...

    Rocture 评论0 收藏0
  • 川普撞脸希拉里(基于 OpenCV 的面部特征交换)

    摘要:美国开国领袖们如果看到美国民众只能在希拉里和川普中选择,估计要集体气活过来。本教程由发布在实验楼,完整教程及在线练习地址川普撞脸希拉里基于的面部特征交换一教程介绍内容简介通过库来实现人脸面部特征交换。 话说这次美国大选可谓赚足了眼球,在美国史上,恐怕没有哪一年的总统大选会像今年一样诡谲和热闹。 美国开国领袖们如果看到美国民众只能在希拉里和川普中选择,估计要集体气活过来。作为一个闲得蛋疼...

    SunZhaopeng 评论0 收藏0
  • [译]OpenCV Text Detection (EAST text detector)

    摘要:的文本检测器是一种基于新颖架构和训练模式的深度学习模型。深度学习文本检测器图文本检测全卷积网络的结构等人的图。随着和的发布,我们现在可以使用一种名为的基于深度学习的文本检测器,它基于等人的年论文一种高效精确的场景文本检测器。 by Adrian Rosebrock on August 20, 2018 in Deep Learning, Optical Character Recogn...

    VincentFF 评论0 收藏0

发表评论

0条评论

DoINsiSt

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<