在之前实现faster rcnn的博客中,先是配置了caffe的python接口,但是在验证的时候用DeepTexture的实例没有成功。改用pycharm而不是jupyter notebook再试一试,毕竟在IDE中更好调试。

新建工程,选择anaconda2作为解释器,因为要使用caffe作为模块,所以把编译好的x86/release下的caffe的python版本复制到lib/site-package中。但是pycharm依然提示找不到caffe这个module,猜测应该还是解释器没有选择好。

选择解释器Interpreter

在setting中重新选择解释器,这里可以看到因为我自己装了两个版本的python,各自对应一个虚拟环境。虚拟环境是python的私有副本,可以安装私有包而不会影响全局解释器。当然,也可以直接选择系统中的解释器。这里选择了anaconda2对应的python2.7的exe文件作为解释器。

添加自定义模块

解决了caffe无法找到的问题,还有一些模块无法找到,比如from DeepImageSynthesis import *时就出错了。这其实和caffe都是添加自定义模块的问题。

要么得用代码给 sys.path 列表增加新路径;

要么得调整 PYTHONPATH 环境变量;

要么就得把库文件复制到已经在 sys.path 设置中的路径中去(比如 site-packages 目录),比如刚才的caffe。

还有一种方法是给sys.path添加路径,但是不是用代码的方法,而是用文件的方法。Python 在遍历已知的库文件目录过程中,如果见到一个 .pth 文件,就会将文件中所记录的路径加入到sys.path 设置中

# How to call custommoudles(DeepTextures-master)?

# 1.find the site-packages folder in thepython installation directory(.\Lib\site-packages)

# 2.create a path file in this directory,suchas myPython.pth

# 3.open the myPython.pth,write the folderpath for the user module(xxx.\DeepTextures-master)

# 4.restart python container(IDLE/commandline)

# 5.from DeepImageSynthesis import *

需要改动的还有34行处GPU模式改为CPU;82行处pltfigure()改为plt.figure()

改变编码格式

运行的时候报错:SyntaxError: Non-ASCII character '\xe6' infile

这是说文件里面有非ASCII码。ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)第一个字母A就是美国,显然只支持英语字符和阿拉伯数字和一些基本的符号。并且II是信息交换的缩写,不是罗马字母。出现了非ASCII码说明一些符号的编码是不被支持的,这时候我们需要选择utf-8编码方式,这是两个字节的UNICODE编码对ASCII的过渡的格式,又叫万国码。具体方式是在代码开头指定编码格式:#encoding:utf-8

下载训练好的VGG模型

再次运行,再次报错:

RuntimeError: Could not open fileD:\program\Anaconda2\caffe-code\DeepTextures-master\Models\vgg_normalised.caffemodel

确实在代码的28行处要通过.caffemodel文件得到网络权重VGGweight,通过deloy.prototxt得到网络模型VGGmodel。但是在https://github.com/leongatys/DeepTextures没有.caffemodel文件,仔细阅读README.md文件才发现这个项目使用了19-layerVGG-Network的normalised版本。可以直接下载训练好的模型

VGG是牛津大学的一个叫Visual GeomotryGroup的组织,他们建立的超多层的神经网络模型。在16和19层网络时取得了很好的效果。

最后终于成功利用原图和和噪声生成了新图。我理解的就是噪声在原图基础上的图形化表示:

下面是对代码的一些简单注释。不能说是简单跑一下就行了,还是要看这里是怎么使用caffe的。

# encoding:utf-8
#!/usr/bin/env.python
import glob #有点像正则表达式,用于文件查找
import sys #python自带模块,负责程序与解释器的交互
import os #os模块负责程序与操作系统的交互
from collections import OrderedDict#collections模块在内置数据类型的基础上,提供了几个额外的数据类型,如有序字典
import caffe
import numpy as np #科学计算库,提供矩阵运算库
from matplotlib import pyplot as plt #python的2D绘图库方便地创建海量类型地2D图表和一些基本的3D图表发
import qtpybase_dir1 = os.getcwd() #取得当前工作目录
print base_dir1
sys.path.append(r'D:\program\Anaconda2\Library\plugins\PyQt5')#获取指定模块搜索路径的字符串集合
print sys.path# How to call custom moudles(DeepTextures-master)?
# 1.find the site-packages folder in the python installation directory(.\Lib\site-packages)
# 2.create a path file in this directory,such as myPython.pth
# 3.open the myPython.pth,write the folder path for the user module(xxx.\DeepTextures-master)
# 4.restart python container(IDLE/command line)
# 5.from DeepImageSynthesis import *base_dir = r"D:\program\Anaconda2\caffe-code\DeepTextures-master"
from DeepImageSynthesis import *VGGweights = os.path.join(base_dir, r'Models\vgg_normalised.caffemodel')#将分离的各部分组合成一个路径名
VGGmodel = os.path.join(base_dir, r'Models\VGG_ave_pool_deploy.prototxt')#r的意思是禁止转义,因为/有转义的功能imagenet_mean = np.array([0.40760392, 0.45795686, 0.48501961])  # mean for color channels (bgr) array是数组
im_dir = os.path.join(base_dir, 'Images/')caffe.set_mode_cpu()  # for cpu mode do 'caffe.set_mode_cpu()'
# if cpu mode we should not call,below 3 line of code is just for using GPU mode.
# gpu = 0
# caffe.set_mode_gpu()
# caffe.set_device(gpu)# load source image
source_img_name = glob.glob1(im_dir, 'pebbles.jpg')[0]#glob模块中的函数,查找文件有三个匹配符:* ? []
print source_img_name
source_img_org = caffe.io.load_image(im_dir + source_img_name)#返回0-1之间的浮点数
im_size = 256.
[source_img, net] = load_image(im_dir + source_img_name, im_size,VGGmodel, VGGweights, imagenet_mean,show_img=True) # 读入原始图像到caffe格式,网络模型和参数,均值文件,图像尺寸
im_size = np.asarray(source_img.shape[-2:]) #将结构数据转化为ndarray而不copy,不占用新内存# l-bfgs parameters optimisation L-BFGS算法是一种在牛顿法基础上提出的一种求解函数根的算法maxiter = 2000
m = 20# define layers to include in the texture model and weights w_l
tex_layers = ['pool4', 'pool3', 'pool2', 'pool1', 'conv1_1']
tex_weights = [1e9, 1e9, 1e9, 1e9, 1e9] #10的9次方# pass image through the network and save the constraints on each layer
constraints = OrderedDict() # OrderedDict,实现了对字典对象中元素的排序
net.forward(data=source_img) # 图像前向传播
for l, layer in enumerate(tex_layers):  #对网络的层进行枚举、遍历constraints[layer] = constraint([LossFunctions.gram_mse_loss],[{'target_gram_matrix': gram_matrix(net.blobs[layer].data),'weight': tex_weights[l]}])# gram应该指格拉姆矩阵,用于计算不同通道的feature map的内积# get optimisation bounds Helper function to get optimisation bounds from source image.
bounds = get_bounds([source_img], im_size)# generate new texture
result = ImageSyn(net, constraints, bounds=bounds,callback=lambda x: show_progress(x, net),minimize_options={'maxiter': maxiter,'maxcor': m,'ftol': 0, 'gtol': 0})
# lambda也叫匿名函数,函数没有具体名称,这里直接返回梯度下降的中间值callback,x是自变量
# match histogram of new texture with that of the source texture and show both images
new_texture = result['x'].reshape(*source_img.shape[1:]).transpose(1, 2, 0)[:, :, ::-1] # transpose转置
new_texture = histogram_matching(new_texture, source_img_org)
plt.imshow(new_texture)
plt.figure()
plt.imshow(source_img_org)

Reference:

1.https://blog.csdn.net/qq_30549833/article/details/74188233

2.https://www.cnblogs.com/billyzh/p/6307716.html

利用caffe的python接口实现DeepImageSynthesis实例相关推荐

  1. 利用 caffe的 python接口测试训练好的 mnist 模型

    参考博客:https://blog.csdn.net/auto1993/article/details/70941440 在上一篇博客中已经训练好了 mnist 识别手写数字的模型,这篇博客就利用 c ...

  2. caffe python接口_ubuntu配置caffe的python接口pycaffe

    参考网站: ubuntu配置caffe的python接口pycaffe 依赖 前提caffe已经正确编译.见Ubuntu配置caffe库包sudo apt-get install python-pip ...

  3. Windows10上使用Caffe的Python接口进行图像分类例程

    本文将会介绍Caffe的Python接口的使用方法.编辑Python可以使用很多种方法,我们采用的是IPython交互式编辑环境. 1 Python的安装 如果你的Windows电脑还没有安装Pyth ...

  4. Caffe的python接口安装

    点击此处返回总目录 这一节我们需要编译pycaffe.pycaffe是caffe的python接口.后面我们回用到python进行编程. 一.准备工作 准备工作1:Caffe release版本的编译 ...

  5. 利用LABVIEW的python接口调用Pluto SDR

    利用LABVIEW的python接口调用Pluto SDR 1. 介绍 LABVIEW是NI公司推出的一款非常适合用于实时信号处理的编程软件,其图形化的开发方式有效缩短了测试验证应用设计的时间,而且N ...

  6. ubuntu16.04 安装caffe以及python接口

    http://blog.csdn.net/qq_25073253/article/details/72571714 http://blog.csdn.net/greed7480/article/det ...

  7. caffe与Python接口的配置(VC2013 Windows CUDA7.5 Python2.7.12)

    1.安装Python(建议安装Anaconda2-4.1.1-Windows-x86_64,包含大部分需要的Python库和Python代码编写运行平台),并将安装路径添加到系统环境变量 2.修改.. ...

  8. 使用caffe的python接口预测多张图片

    一.前言 根据前面博文 使用lenet模型训练及预测自己的图片数据 可得到训练得的caffemodel及其他相关的文件,回顾下My_FIle文件夹如下,predictPic文件夹中保存的是名为&quo ...

  9. Caffe: Caffe的Python接口

    官方参考:http://caffe.berkeleyvision.org/installation.html 官方介绍是这样的: Python The main requirements are nu ...

最新文章

  1. 一文读懂马斯克展示脑机接口:硬币大小芯片植入猪脑 实时读取猪脑信息
  2. boost::geometry::index::detail::segment_intersection用法的测试程序
  3. 1.有意义的命名(代码的整洁之道)
  4. FreeNOS源码编译
  5. 使用Puppeteer进行数据抓取(一)——安装和使用
  6. ASP.NET 使用Ajax(转)
  7. LoadRunner函数
  8. 17.1.1.3 Creating a User for Replication 创建一个用于用于复制:
  9. 设置eclipse主题风格
  10. 2022机械员-通用基础(机械员)考试题库模拟考试平台操作
  11. 华为机试HJ70:矩阵乘法计算量估算
  12. 重积分 | 高斯公式使用的四种情况
  13. 进阶篇:4.2)DFA设计指南:优化装配工序
  14. 如何设计qPCR引物序列
  15. library netcdf 路径_科学网—NetCDF安装记录 - 丁鹏基的博文
  16. 问题 D: 分解质因数
  17. 12306抢票系统的NB解析
  18. python有趣的案例_爬虫 (十九) 有趣的例子认识 while 循环 (十)|python爬虫|python入门|python教程...
  19. 漫谈程序员系列 看看你离优秀有多远
  20. linux配置Jexus发布asp.net网站

热门文章

  1. LeetCode之两数相加
  2. 老板让我用少量样本 finetune 模型,我还有救吗?急急急,在线等!
  3. 这个NLP工具,玩得根本停不下来
  4. 高性能平台设计—美团旅行结算平台实践
  5. 论文浅尝 | DSKReG:基于关系GNN的推荐知识图谱可微抽样
  6. 论文小综 | Attention in Graph Neural Networks
  7. 论文浅尝 - ICLR2020 | Abductive Commonsense Reasoning
  8. 论文浅尝 | 基于知识图谱的子图匹配回答自然语言问题
  9. 数字化转型知识方法系列之五:数字化转型战略
  10. 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理