首页 > 其他分享 >pytorch+深度学习实现图像的神经风格迁移

pytorch+深度学习实现图像的神经风格迁移

时间:2024-09-04 22:53:51浏览次数:10  
标签:函数 训练 py pytorch 风格 图像 迁移 图片

本文的完整代码和部署教程已上传至本人的GitHub仓库,欢迎各位朋友批评指正!

1.各代码文件详解

1.1 train.py

train.py 文件负责训练神经风格迁移模型。

  • 加载内容和风格图片:使用 utils.load_image 函数加载并预处理内容和风格图片。
  • 初始化生成图像:将内容图像加上随机噪声作为初始生成图像。
  • 加载模型:实例化并加载神经风格迁移模型。
  • 设置优化器和损失函数:使用 Adam 优化器和均方误差损失函数。
  • 定义内容损失和风格损失的计算函数:包括 _compute_content_loss, compute_content_loss, gram_matrix, _compute_style_loss, compute_style_loss, 和 total_loss
  • 计算目标内容图片和风格图片的特征:通过模型提取内容和风格特征。
  • 创建保存生成图片的文件夹:检查并创建输出目录。
  • 训练过程:使用 tqdm 显示训练进度条,进行多轮训练,每轮训练后保存生成的图片。

1.2 model.py

model.py 文件定义了神经风格迁移模型。

  • 定义获取 VGG19 模型的函数get_vgg19_model 函数从预训练的 VGG19 模型中提取指定层。
  • 定义神经风格迁移模型类NeuralStyleTransferModel 类继承自 nn.Module,包含模型的初始化和前向传播方法。

1.3 utils.py

utils.py 文件包含图像处理的辅助函数。

  • 定义图像归一化和反归一化函数normalizationdenormalization 函数对图像进行归一化和反归一化处理。
  • 定义加载和保存图像的函数load_image 函数加载并预处理图像,save_image 函数保存生成的图像。

1.4 settings.py

settings.py 文件包含训练过程中的各种配置参数。

  • 定义各种配置参数:包括内容图像路径、风格图像路径、输出目录、图像宽度和高度、学习率、训练轮数、每轮训练步数、内容损失和风格损失的权重因子、内容层和风格层的配置。

2.环境要求

  • 操作系统:Windows, macOS, 或 Linux
  • Python 版本:Python 3.6 及以上
  • 依赖库
    • torch:用于深度学习模型的构建和训练
    • torchvision:用于图像处理和预训练模型
    • PIL (或 Pillow):用于图像加载和保存
    • tqdm:用于显示训练进度条

3.结果展示

示例一

风格图片

在这里插入图片描述

原始图片

在这里插入图片描述

迁移结果

在这里插入图片描述

示例二

风格图片

在这里插入图片描述

原始图片

在这里插入图片描述

迁移结果

在这里插入图片描述

示例三

风格图片

在这里插入图片描述

原始图片在这里插入图片描述
迁移结果

在这里插入图片描述

本文参考了这一项目,在此深表感谢!这一项目使用的是tensorflow,本文采用的是当今更常用的pytorch。另外在学习过程中阅读了这一教程,这个教程也是采用了tensorflow,需要先用一个大数据集训练模型,但由于环境版本过旧,代码无法成功运行,将tensorflow改为pytorch后(代码在这个仓库),发现训练时间过长,且迁移效果很差,遂不采用这种思路,转为神经风格迁移,直接学习风格图片的特征并运用到原始图片上,训练速度很快且效果较好。

标签:函数,训练,py,pytorch,风格,图像,迁移,图片
From: https://blog.csdn.net/weixin_73004416/article/details/141905688

相关文章

  • 《OpenCV计算机视觉》—— 图像轮廓检测与绘制
    文章目录一、轮廓的检测二、轮廓的绘制图像轮廓检测与绘制的代码实现三、轮廓的近似一、轮廓的检测轮廓检测是指在包含目标和背景的数字图像中,忽略背景和目标内部的纹理以及噪声干扰的影响,采用一定的技术和方法来实现目标轮廓提取的过程注意:做轮廓检测前需要将图片......
  • OpenCV 之图像平滑处理
    引言图像平滑处理(也称为“模糊处理”)是计算机视觉中一项非常基础的技术,常用于减少图像噪声或失真,提高图像质量。平滑处理可以通过各种滤波器实现,常见的滤波器包括均值滤波、方框滤波、高斯滤波和中值滤波。本文将详细介绍这些滤波器的原理及其在OpenCV中的具体实现。基础概......
  • 【深度学习】代码复现基础--conda环境配置(pytorch)
    0.需求做实验阶段经常需要复现代码,要从github上把代码克隆下来,然后按照里头的readme文件配置环境【主要是pytorch】。电脑本身已经装好了Anaconda和开发工具,这个过程其实很简单,只是一些语句,但具体细节经常会忘,每次又要反复查,网上查着又都是从0开始的,且很多为比较旧的教程,因此......
  • 【适配器】设计模式:旧系统迁移与第三方库集成的解决方案
    引言适配器设计模式是一种结构设计模式,它允许将一个类的接口转换成客户端期望的另一个接口。适配器让那些接口不兼容的类可以一起工作。这种模式在系统集成、插件开发和第三方库集成中尤为重要。核心组件:目标接口(ITarget):期望的接口,要转化成的接口定义,客户端将使用这个接......
  • 【深度学习 transformer】使用pytorch 训练transformer 模型,hugginface 来啦
    HuggingFace是一个致力于开源自然语言处理(NLP)和机器学习项目的社区。它由几个关键组件组成:Transformers:这是一个基于PyTorch的库,提供了各种预训练的NLP模型,如BERT、GPT、RoBERTa、DistilBERT等。它还提供了一个简单易用的API来加载这些模型,并进行微调以适应特定的下游任务......
  • 基于CNN卷积神经网络迁移学习的图像识别实现
    基于CNN卷积神经网络迁移学习的图像识别实现基于CNN卷积神经网络迁移学习的图像识别实现写在前面一,原理介绍迁移学习的基本方法1.样本迁移(InstancebasedTL)2.特征迁移(FeaturebasedTL)3.模型迁移(ParameterbasedTL)4.关系迁移(RelationbasedTL)二.准备工作1.依赖库安......
  • 图像边缘检测技术详解:利用OpenCV实现Sobel算子
    图像边缘检测技术详解:利用OpenCV实现Sobel算子前言Sobel算子的原理代码演示结果展示结语前言  在数字图像处理的广阔领域中,边缘检测技术扮演着至关重要的角色。无论是在科学研究、工业自动化,还是在日常生活中的智能设备中,我们都需要从图像中提取有用的信息。边缘,作......
  • 实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!
    今天给大家介绍Adobe研究院新的研究TurboEdit,可以通过文本来编辑图像,通过一句话就能改变图像中的头发颜色、衣服、帽子、围巾等等。而且编辑飞快,<0.5秒。简直是图像编辑的利器。相关链接项目:betterze.github.io/TurboEdit论文:arxiv.org/abs/2408.08332论文阅读TurboEdit:Instantt......
  • 腾讯&浙大提出定制化视频生成框架CustomCrafter,只需通过少量图像就可以完成高质量视频
    腾讯联合浙大提出了一种定制化视频生成框架-CustomCrafter,它能够基于文本提示和参考图像生成自定义视频,同时保留运动生成和概念组合的能力。通过设计一系列灵活的模块,使得模型实现了无需额外视频,通过少量图像学习,就能生成高质量的个性化视频。上图为CustomCrafter可视化结果。Cus......
  • 媲美Flux pro! Ideogram 发布了 2.0 图像生成模型, 照片级真实感和高质量文本渲染!
    Ideogram发布了2.0模型,图像生成质量大幅提高,产品易用性改善,文字生成能力也提升许多。Ideogram2.0在图像快速对齐、照片级真实感和文本渲染质量方面取得了显著进步。人工评估一致认为Ideogram2.0比FluxPro和DALL·E3有了显著改进。尽管我们在图像质量方面有所改进,但......