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

用OpenCV进行神经风格迁移

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

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

什么是神经风格迁移?从左至右:我们的内容图像;风格图像;输出的风格迁移图像

神经风格迁移主要有两个过程:提取某张图片的风格

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

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

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

神经风格迁移如何工作?

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

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

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

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

然而到了2017年,Ulyanov等人发表了Instance Normalization: The Missing Ingredient for Fast Stylization一文,他们表示将batch normalization替换成instance normalization(然后在训练和测试时都应用instance normalization),可以达到更快的效果,并且艺术效果也更好。

项目结构

opencv gpu python_无需GPU,用OpenCV和Python实现图/视频风格迁移相关推荐

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

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

  2. OpenCV之gpu 模块. 使用GPU加速的计算机视觉:GPU上的相似度检测(PNSR 和 SSIM)

    GPU上的相似度检测(PNSR 和 SSIM) 学习目标 在 OpenCV的视频输入和相似度测量 教程中我们已经学习了检测两幅图像相似度的两种方法:PSNR和SSIM.正如我们所看到的,执行这些算法需 ...

  3. 胎儿式保姆级教程:Jetson Xavier NX镜像烧录、开机配置、中文配置、风扇设置、远程桌面、文件传输配置、pycharm安装环境配置,QQ,opencv(cuda编译),torch(GPU).

    一.使用的硬件:nx板子.原装充电器.有线鼠标(USB).有线键盘(USB).有线摄像头(USB).7寸触摸显示屏.20寸大显示屏(显示屏有一个就可以,大屏幕更加方便).SD卡(128G,用64g也可 ...

  4. OpenCV实现影像畸变矫正GPU

    OpenCV实现影像畸变矫正GPU OpenCV实现影像矫正使用的是 initUndistortRectifyMap()计算畸变的映射 remap()计算映射,其详解见:OpenCV函数remap详解 ...

  5. linux下基于c++使用opencv的cpu和gpu版本提取tvl1光流

    使用opencv c++版本提取tvl1光流 前言 Gpu版本 cpu版本 配置文件及运行 前言 在计算机视觉中,光流可以用来反映视频中的信息,在行为识别,跟踪,视频分割等任务中都使用.对光流不了解的 ...

  6. UE5.1 像素流送公网部署无需GPU服务器

    因为工作需要最近在做虚幻引擎5.1这方面的部署,简单记录一下最近学习的一点知识. 本文参考:虚幻引擎官网文档 UE5像素流送原理及多用户公网部署小白教程202211022220 一.像素流送介绍 像素 ...

  7. python视频处理加速的库_VPF:适用于 Python 的开源视频处理框架,加速视频任务、提高 GPU 利用率...

    原标题:VPF:适用于 Python 的开源视频处理框架,加速视频任务.提高 GPU 利用率 雷锋网 AI 开发者按:近日,NVIDIA 开源了适用于 Python 的视频处理框架「VideoProc ...

  8. VPF:适用于 Python 的开源视频处理框架,加速视频任务、提高 GPU 利用率

    0 背景 近日,NVIDIA 开源了适用于 Python 的视频处理框架「VideoProcessingFramework(VPF)」.该框架为开发人员提供了一个简单但功能强大的 Python 工具, ...

  9. 大疆妙算Manifold刷机换源,cuda,opencv,qt配置以及实现opencv读取usb摄像头,qmake nvcc交叉编译

    大疆妙算Manifold刷机换源,cuda,opencv,qt配置以及实现opencv读取usb摄像头,qmake nvcc交叉编译 一.刷机 1.解压安装包 2.制作镜像 3.然后按照妙算说明书进入 ...

最新文章

  1. 深度学习中的注意力机制(一)
  2. 机器学习成为未来趋势 北美未来将保持最大市场规模
  3. Qt中的图像处理与绘制
  4. html <link>标签
  5. [排序][二分][dp]JZOJ 2747 捡金子
  6. 一个人到底申请几张信用卡最合适?
  7. linux+手机+翻页,在Android手机上实现阅读器的翻页效果
  8. UI设计师必备知识|最全UI设计规范!
  9. php 环境搭建 -- 命令配置
  10. 解决SVN Cleanup错误: Failed to run the WC DB work queue associated with
  11. 干货分享! 20种数学建模方法!
  12. (从源码解答)Failed to instantiate [org.elasticsearch.client.transport.TransportClient]
  13. jQuery遮罩插件 jquery.blockUI.js
  14. NLP扎实基础3:TF-IDF文本特征提取
  15. android 程序应用市场搜索关键字,安卓应用市场的搜索规则以及安卓应用市场ASO优化...
  16. cs架构(cs架构和bs架构的区别)
  17. 自动化测试的优缺点分析
  18. A Survey on Conversational Recommender Systems(2021)阅读笔记
  19. 微信答题竞赛的小程序
  20. 云服务器上部署仿牛客网项目

热门文章

  1. matlab画转体_MATLAB旋转体的绘制
  2. Python科学绘图实例附代码
  3. layui的form表单提交问题
  4. 干货|苹果官网色彩搭配的“黄金法则”
  5. 光纤跳线管理方法的技巧详解
  6. Message的使用
  7. HTML编程出现乱码,html中文为什么会乱码?html中文乱码怎么解决?
  8. java 混音_Android中一种效果奇好的混音方法详解
  9. oracle create restore point,CREATE RESTORE POINT
  10. Tskill(结束进程)