tensorflow contrib模块_OpenCV DNN 模块-风格迁移
本文主要介绍OpenCV的DNN模块的使用。OpenCV的DNN模块自从contrib仓库开始,就是只支持推理,不支持训练。但是仅仅只是推理方面,也够强大了。现在OpenCV已经支持TensorFlow、Pytorch/Torch、Caffe、DarkNet等模型的读取。本文们就以风格迁移为例,来看一下OpenCV DNN模块的用法。
相比于复杂而耗时的模型训练过程,模型推理就显得简单多了。简单来说,过程就是:
- 加载模型
- 输入图像预处理(跟训练过程一样的方式,增强除外)
- 模型推理
1. 加载模型
因为OpenCV只支持推理,所以首先你需要有一个训练好的模型。OpenCV支持所有主流框架的大部分模型。从OpenCV的readNet
系列函数就可以看出来:
readNetFromCaffe
readNetFromTensorflow
readNetFromTorch
readNetFromDarknet
readNetFromONNX
readNetFromModelOptimizer
本文所用风格迁移模型是李飞飞的文章<<Perceptual Losses for Real-Time Style Transfer and Super-Resolution>>
开源的Torch/Lua
的模型,地址在这里:https://github.com/jcjohnson/fast-neural-style
。他们提供了十种风格迁移的模型,模型的下载脚本在:https://github.com/jcjohnson/fast-neural-style/blob/master/models/download_style_transfer_models.sh
。显然这里需要用OpenCV的readNetFromTorch
函数去加载模型,由于模型较多,这里提供的函数可以选择加载指定的模型:
import cv2model_base_dir = "/cvpy/style_transfer/models/"
d_model_map = {1: "udnie",2: "la_muse",3: "the_scream",4: "candy",5: "mosaic",6: "feathers",7: "starry_night"
}def get_model_from_style(style: int):"""加载指定风格的模型:param style: 模型编码:return: model"""model_name = d_model_map.get(style, "mosaic")model_path = model_base_dir + model_name + ".t7"model = cv2.dnn.readNetFromTorch(model_path)return model
2. 图像预处理
在OpenCV中,输入给模型的图像需要首先被构建成一个4维的Blob
,看到Blob
这个词感觉是收到了Caffe
的影响。在构建Blob
的时候会做一些诸如resize
、归一化和缩放之类的简单预处理。OpenCV
提供的函数为:
blobFromImage(image, scalefactor=None, size=None, mean=None, swapRB=None, crop=None, ddepth=None)
这个函数在构建Blob
的之前会先做如下计算:
(image - mean) * scalefactor
。
函数中的swapRB
参数的含义是swap Blue and Red channels
,干的是cvtColor(image, cv2.COLOR_BGR2RGB)
的事情。
本文的风格迁移所需要做的图像预处理很简单,只是三通道分别减去均值即可。代码如下:
(h, w) = img.shape[:2]
blob = cv2.dnn.blobFromImage(img, 1.0, (w, h), (103.939, 116.779, 123.680), swapRB=False, crop=False)
3. 模型推理
模型推理过程就是神经网络模型进行一次前向传播,在OpenCV中,用以下可读性非常强的两行代码即可完成:
net.setInput(blob)
output = net.forward()
把第一节构建的blob
输入给模型,然后执行一次前向传播。
得到输出output
再做一些处理使得我们可以更好的可视化图像:
# reshape输出结果, 将减去的平均值加回来,并交换各颜色通道
output = output.reshape((3, output.shape[2], output.shape[3]))
output[0] += 103.939
output[1] += 116.779
output[2] += 123.680
output = output.transpose(1, 2, 0)
效果展示
找一张测试图片,选择不同的风格,试一下效果。
想用自己的图片风格迁移一下吗?cvpy.net
网站刚部署成功,来试试吧。
尝试地址:
CV-Studiocvpy.net
tensorflow contrib模块_OpenCV DNN 模块-风格迁移相关推荐
- 有趣的深度学习——使用TensorFlow 2.0实现图片神经风格迁移
前言 这也是一个重写的项目,之前用Python 2.7 + TensorFlow 1.4写的图片神经风格迁移的项目(TensorFlow 练手项目三:使用 VGG19 迁移学习实现图像风格迁移)直到现 ...
- 深度学习与OpenCV DNN模块:权威指南
计算机视觉领域自20世纪60年代末就已经存在.图像分类和目标检测是计算机视觉领域的一些最古老的问题,研究人员已经努力解决了几十年.使用神经网络和深度学习,我们已经达到了一个阶段,计算机可以开始真正地理 ...
- 关于OpenCV for Python入门-DNN模块实现人脸检测
OpenCV在OpenCV增加了DNN模块,DNN模块可以加载预先训练好的Caffe/tensorflow等模型数据,基本支持所有主流的深度学习框架训练生成与导出模型数据加载. 下面用到的SSD人脸检 ...
- TensorFlow练手项目三:使用VGG19迁移学习实现图像风格迁移
使用VGG19迁移学习实现图像风格迁移 2020.3.15 更新: 使用Python 3.7 + TensorFlow 2.0的实现: 有趣的深度学习--使用TensorFlow 2.0实现图片神经风 ...
- 使用Tensorflow实现图片风格迁移,圆梦名画
一,前期基础知识储备 1)Prisma - 图片风格迁移的鼻祖: 照片可以记录生活的瞬间,变成一幅幅的回忆:而 Prisma 则是可以让瞬间的回忆变成永恒的名画!我们平常用手机随意拍出来的照片效果看起 ...
- OpenCvSharp (C# OpenCV) DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别、骰子识别、菜品识别)(附源码)
本文作者Color Space,文章未经作者允许禁止转载! 本文将介绍OpenCVSharp DNN模块加载自己训练的TensorFlow模型做目标检测(含手势识别.骰子识别.菜品识别)! 前言: 下 ...
- tensorflow 风格迁移二
前面介绍了利用卷积神经网络实现图像风格迁移的算法原理和基于TensroFlow 的代码实现,这篇博客对前面的代码做了一些改变,设置了一个 image resize 函数,这样可以处理任意size的 i ...
- 建立单独的解决方案来开发DNN模块
在整个DotNetNuke(以下简称DNN)解决方案之下建立和调试DNN模块项目都比较容易并且还可以随时"转到定义"看看DNN框架中类的内容,惟一的缺点就是慢!打开和编译一次DNN ...
- OpenCV的dnn模块调用TesorFlow训练的MoblieNet模型
七月 上海| 高性能计算之GPU CUDA培训 7月27-29日三天密集式学习 快速带你入门阅读全文> 正文共2073个字,2张图,预计阅读时间10分钟. 一.初得模型 那是一个月之前的事情了 ...
最新文章
- 【解决方案】Windows10局域网内配置文件夹共享(附网络中没有找到的情况解决方案)
- gitlab mysql 配置_gitlab的安装与修改端口配置
- keepalive 原理讲解
- python怎么使用int四舍五入_使用Python 3的数字格式可以将数字四舍五入到成百上千个...
- 我会永远永远的爱你,直到你不爱我的那一天
- OC如何跳到系统设置里的各种设置界面
- 内部简单二进制编码(SBE)
- position有哪些属性?
- java调用数据库存储过程_Java调用SQL Server的存储过程详解
- DeepEarth自定义图元的中心位置纠偏
- cocos2dx mysql_初次接触cocos2dx
- 程序员应该具备的12种能力
- python中的系统模块_python中与系统发育相关的模块
- Pr视频剪辑基础技巧学习
- 互联网大厂职级对应薪资一览表
- 金融计算机求log,cfa计算器怎么算对数
- 计算机网络 王道考研2021 第六章:应用层 -- 域名系统 DNS、域名解析
- Eureka Server报错:Retry limit reached; giving up on complet the request
- Rancher管理k8s集群
- ubuntu下载神器---xdm
热门文章
- linux7telnet测试通是提示如何,如何优雅的使用telnet测试端口连通性
- 国外程序员薪资曝光,美国最高,均年薪95879美元
- OceanBase入选Forrester报告,为什么原生分布式数据库正成为核心系统升级首选?
- 程序员真的是太太太太太太太太难了!
- 阿里工程师教你 3 分钟实现数据源编排和接入
- 腾讯面试题: 百度搜索为什么那么快? | 原力计划
- Yann LeCun 会成为下一个居里夫人吗?
- 2020 年,远程办公太难?技术大佬齐支招!
- 沈向洋离开微软,曾是华人在美科技圈最高级高管,畅谈职业生涯的 7 堂课!...
- 围观京东云,您有一份区块链技术礼包待查收!