• StyleTransfer-Pytorch.ipynb
    • 预处理
    • 计算损失
      • 内容损失
      • 风格损失
      • 正则化损失
    • 风格迁移
    • 特征反演
  • style_transfer_pytorch.py

StyleTransfer-Pytorch.ipynb

这里用的是cs231n2020的代码,因为有些pytorch的用法和以前的不一样了。
注意:StyleTransfer-Pytorch.ipynb和style_transfer_pytorch.py都有设置运算类型(CPU或GPU)的地方,需要两处同时更改。

预处理

接下来会实现"Image Style Transfer Using Convolutional Neural Networks" (Gatys et al., CVPR 2015)里的风格迁移。
要实现风格迁移,首先在深度网络的特征空间中建立一个与每张图像的内容和风格相匹配的损失函数,然后对图像本身的像素进行梯度下降

提取特征所用的神经网络是 SqueezeNet(一个在ImageNet上预训练好的轻量级网络),实际上可以使用任一神经网络进行特征提取,但是SqueezeNet相对较小并且比较有效。

下图是风格迁移的结果:

import torch
import torch.nn as nn
import torchvision
import torchvision.transforms as T
import PILimport numpy as np
import matplotlib.pyplot as plt
from cs231n.image_utils import SQUEEZENET_MEAN, SQUEEZENET_STD
%matplotlib inline# 自动加载其他文件里的模型、函数
%load_ext autoreload
%autoreload 2

加载’style-transfer-checks.npz’

from cs231n.style_transfer_pytorch import preprocess, deprocess, rescale, rel_error, features_from_img
# 如果'style-transfer-checks.npz'在同级目录下
CHECKS_PATH = 'style-transfer-checks.npz'
# 否则
#CHECKS_PATH = '/content/drive/My Drive/{}/{}'.format(FOLDERNAME, 'style-transfer-checks.npz')assert CHECKS_PATH is not None, "[!] Choose path to style-transfer-checks.npz"
# 存放图片的位置
STYLES_FOLDER = CHECKS_PATH.replace('style-transfer-checks.npz', 'styles')
# 加载'style-transfer-checks.npz'
answers = dict(np.load(CHECKS_PATH))
# 如果只有cpu就用这行代码
#dtype = torch.FloatTensor
dtype = torch.cuda.FloatTensor# 加载预训练的SqueezeNet模型
cnn = torchvision.models.squeezenet1_1(pretrained=True).features
cnn.type(dtype)
# 不需要训练SqueezeNet模型,所以不需要计算SqueezeNet参数的梯度
for param in cnn.parameters():param.requires_grad = False

计算损失

风格迁移会生成一张图片,这张图片保持一张输入图片的内容,却和另一张输入图片的风格相似。所以风格迁移的损失函数是由内容损失风格损失正则化损失构成的,是三者的加权求和。

内容损失

内容损失衡量了生成图像的特征和输入图片特征的差异(神经网络在进行分类时,考虑了图像的内容,所以神经网络的特征可以在一定程度上表现两张图片的内容是否相似)。

我们只关心网络中特定层(比如说,第ℓ层)的特征(

【深度之眼cs231n第七期】笔记(二十七)相关推荐

  1. 【深度之眼cs231n第七期】笔记(四)

    目录 准备工作 KNN 交叉验证 对于k最邻近算法(KNN): 训练时,分类器记住所有的训练数据: 测试时,每一个测试图像都要和所有的训练图像计算距离,然后选取距离最近的k个图像,最后选取k个图像中出 ...

  2. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    游戏开发笔记二十七 Direct3D 11入门级知识介绍 作者:毛星云    邮箱: happylifemxy@163.com    期待着与志同道合的朋友们相互交流 上一节里我们介绍了在迈入Dire ...

  3. uniapp 学习笔记二十七 购物车总价计算及弹窗交互逻辑完善

    uniapp 学习笔记二十七 购物车总价计算及弹窗交互逻辑完善 uniapp 学习笔记二十七 购物车总价计算及弹窗交互逻辑完善 cart.vue <template><view> ...

  4. 【Visual C++】游戏开发笔记二十七 Direct3D 11入门级知识介绍

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7707628 作者:毛星云 邮箱: happ ...

  5. Mr.J-- jQuery学习笔记(二十七)--DOM操作方法(删除获取文本)

    清除 <body> <button>调用remove</button> <div>我是div<p>我是段落</p> </d ...

  6. 嵌入式Linux驱动笔记(二十七)------中断子系统框架分析

    你好!这里是风筝的博客, 欢迎和我一起交流. 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行. 从硬 ...

  7. 从七岁到二十七岁的二十年

    ――――――――――――――写给一个小女孩的第一个情人节 七岁的时候,小女孩第一次见到小男孩,当时外面下着大雨,小男孩虽然穿着雨衣还是一身湿潞潞地进了教室,尽管如此却也表现一股英气和牛劲 -- 从此他 ...

  8. Qt学习笔记(二十七):QLabel 的常用方法

    一.QLabel 的构造函数: 1.QLabel(QWidget * parent = 0, Qt::WindowFlags f = 0):创建 QLabel 控件时,指定其父对象,并设置其窗口属性( ...

  9. C++语法学习笔记二十七: 引用折叠,转发、完美转发,forward

    实例代码 // 引用折叠,转发.完美转发,forward#include <iostream>using namespace std;template<typename T> ...

最新文章

  1. vue input file onchange_vue常用指令汇总
  2. python中def fun(a、b=200)_python中的函数的参数和可变参数
  3. 在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...
  4. Php jsondb,JsonDB-PHP
  5. Makefile 打印变量的值
  6. 【转载】网站从百度云转入阿里云服务器
  7. cacti气象图调整(批量位置调整、更改生成图大小等)
  8. 专科计算机专业大学,计算机专业大学排名 专科生学计算机专业好吗
  9. 解决 LaTeX Error: File `.sty‘ not found.,直接进行本地导入就好了,暂时解决而已
  10. Linux文件和目录的属性及权限
  11. 10个大数据思维原理,你了解多少?
  12. 如何关闭迅雷频繁自动弹出更新到新版本的提示
  13. 二线城市疯狂抢人,技术人才何去何从?
  14. 11.18-刷题日结
  15. win10更新后应用无法连接服务器,win10更新无法连接到更新服务怎么办_win10无法连接到更新服务的解决方法...
  16. 平面设计中的插画设计技巧
  17. 市场调查与分析|设计问卷|修改问卷|发放问卷
  18. 清华北大教授联袂推荐的好书:《区块链:金融应用实践》
  19. 【初澈er】泰拉瑞亚/加模组/加插件/Linux服务器搭建教程 Terraria / tModloader /TShock MOD 手机电脑联机 云服务器 简单
  20. 怎样复制粘贴windows命令行中的内容 .

热门文章

  1. 任务栏WPS出现多窗口预览?下载这个注册表就对了
  2. origin导出矢量图变色,怎么办?
  3. 关于thread中mutex相关内容的理解
  4. hortonworks_具有在IBM POWER8上运行的Hortonworks Data Platform(HDP)的SAS软件
  5. 医院影像图像科室工作站PACS系统 DICOM 三维图像后处理与重建
  6. teambition/tower/team@osc/worktile团队协作工具价格比较
  7. UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 5098-5099: invalid continuatio byte
  8. 怎么往日历里面加时钟java,怎样在博客里添加钟表和日历
  9. 计算机用word做贺卡,新年马上就要到了用WORD2000做贺卡 -电脑资料
  10. python zip 函数