编者按:在这篇教程中,作者AdrianRosebrock将教你如何用OpenCV、Python和深度学习技术对图像和实时视频进行神经风格迁移。

2015年,Gatsys等人在论文ANeuralAlgorithmofArtisticStyle中提出了最初的神经风格迁移算法。2016年,Johnson等人发表了PerceptualLossesforReal-TimeStyleTransferandSuper-Resolutioin一文,将神经网络迁移作为用感知损失处理超分辨率问题的框架。结果表明该算法比Gatys等人的方法快了三倍。接下来,我将介绍如何在自己的图像和视频流中应用神经风格迁移。

用OpenCV进行神经风格迁移

首先说明的一点是,今天讨论的方法在一个CPU上可以达到近乎实时的效果,如果在GPU上则完全可以实现实时效果。

首先我们会简单塔伦下什么是神经风格迁移,以及它是如何运作的。之后我们会用OpenCV和Python动手操作。

什么是神经风格迁移?

从左至右:我们的内容图像;风格图像;输出的风格迁移图像

神经风格迁移主要有两个过程:

提取某张图片的风格

将该种风格应用到另一张图片上

上图就是将梵高著名的画作《星夜》的风格应用到普通的生活照上,我们保留了原照片中的山、人物和啤酒等所有内容,但全部替换成了梵高的油画风格。

问题就是,我们应该如何定义一个神经网络,让它执行神经风格迁移呢?

神经风格迁移如何工作?

在Gatys等人提出的首篇论文中,神经风格迁移算法不需要新的架构。相反,我们可以用一个预训练网络(通常在ImageNet上进行的预训练),并且定义一个损失函数,能让我们达到风格迁移的目标,然后对损失函数不断优化。

那么,这里的问题就不是“该用什么神经网络”了,而是“该用什么损失函数”。

答案包括:内容损失、风格损失和总变差损失。每个部分都是单独计算,然后在一个元损失函数中结合。通过将元损失函数最小化,我们将依次对内容、风格和总变差损失进行优化。

虽然Gatys等人的方法能生成不错的神经风格迁移结果,但是它的速度非常慢。2016年,Johnson等人在Gatys的基础上提出的全新算法速度快了三倍,但同时也存在着缺点,即用户不能随机选择想要应用的风格图像。用户首先要训练一个网络,生成你想要的风格。网络训练好后,你可以将它应用到任意内容图像上。

然而到了2017年,Ulyanov等人发表了InstanceNormalization:TheMissingIngredientforFastStylization一文,他们表示将batchnormalization替换成instancenormalization(然后在训练和测试时都应用instancenormalization),可以达到更快的效果,并且艺术效果也更好。

项目结构

opencv与python学哪一个好_教你如何用OpenCV、Python和深度学习技术对图像和实时视频进行神经风格迁移...相关推荐

  1. python怎么画人像_教你如何用Python画出心目中的自己

    原标题:教你如何用Python画出心目中的自己 引言:人脸图像的生成在各个行业有着重要应用,例如刑事调查.人物设计.教育培训等.然而一幅逼真的人脸肖像,对于职业画家也要至少数小时才能绘制出来:对于从未 ...

  2. python人脸识别opencv_手把手教你如何用 OpenCV + Python 实现人脸识别

    必备知识 Haar-like 通俗的来讲,就是作为人脸特征即可. Haar特征值反映了图像的灰度变化情况.例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深, ...

  3. python图片内容长度识别_教你如何用几行Python代码识别图片文字--就是这么简单!...

    今天给大家分享的主题是用百度的接口实现图片的文字识别. ​ 环境和配置要求 整体是用 Python 实现,所需要使用的第三方库包括 aip . PIL . keyboard . pyinstaller ...

  4. python训练营 朋友圈_教你如何用python来弄一个高逼格的朋友圈

    小编今天要给大家介绍一个Python库: PIL(Python Image Library) 下面我们用一个实际的例子 看看50行python代码可以做什么神奇的事情 这是小编发的一个朋友圈 切图前是 ...

  5. python制作自动化办公_教你如何用Python制造一款自动化办公软件脚本!下班,下班...

    1 PySimpleGUI安装 在命令行/终端输入:pip install pysimplegui,等待安装完成后,进入python环境,输入import PySimpleGUI回车无误后,确认安装成 ...

  6. python如何画圆环_教你如何用Python制作出好看的动态圆环图、饼图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以 ...

  7. python新手入门教程思路-Python新手入门教程_教你怎么用Python做数据分析

    Python新手入门教程_教你怎么用Python做数据分析 跟大家讲了这么多期的Python教程,有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了,比较复杂.很多网上 ...

  8. python opencv 图像切割_Python 使用 OpenCV 进行图像神经风格迁移

    Neural Style Transfer with OpenCV src: https://www. pyimagesearch.com/2018/ 08/27/neural-style-trans ...

  9. python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移

    <python深度学习>笔记---8.3.神经风格迁移 一.总结 一句话总结: 神经风格迁移是指将参考图像的风格应用于目标图像,同时保留目标图像的内容. 1."神经风格迁移是指将 ...

最新文章

  1. C语言中struct, union, enum 三大复合数据类型
  2. 3号团队-团队任务4:每日例会(2018-12-3)
  3. 聊聊高并发(十七)解析java.util.concurrent各个组件(一) 了解sun.misc.Unsafe类
  4. 微软.Net Core 3.0 预览版7发布:大幅减少 SDK 空间大小
  5. python列表套着列表_python 列表套列表去重
  6. 每日一课(12/75)操作数的寻址方式
  7. 【数据结构】严蔚敏版--学习复习笔记
  8. arcmap新手教程_ArcGIS入门教程来袭,零基础的同学快看过来!
  9. 艾宾浩斯英语单词记忆表格生成器
  10. Kinect安装与使用(一)
  11. 数据中台架构体系浅析
  12. python中怎么输入正斜杠,详解Python中的正斜杠与反斜杠
  13. 数据分析从0到1之AARRR模型 - Blog2
  14. SEO流量增长10倍:筛选导航优化
  15. SAAS 客服云平台市场调研报告
  16. 武汉大学计算机学院学号代码,武汉大学各专业代码
  17. GCC中 -I、-L、-l 选项的作用
  18. 因子分析做bartletts球状验证和KMO验证时,数据报‘float‘ object has no attribute ‘shape‘错误
  19. Android数据加密DES、3DES、AES
  20. Linux命令-完整手册

热门文章

  1. geohash 总结
  2. 操作Cassandra(1)-Snitch
  3. 解决TypeError: bad operand type for unary ~: ‘float‘
  4. 人工智能——机器学习系统
  5. 微信小游戏开发上传流程
  6. 西南民族大学计算机科学杨帆,磁浮系统中免疫专家PID控制器的改进
  7. windows下使用fftw进行傅里叶变换及其编程实例
  8. Unity全面入门笔记3-Game面板与Hierarchy面板
  9. Linux源代码软件安装,从源代码安装软件
  10. retrofit 简单封装 支持多域名