风格迁移项目一:如何使用

前言

由于我不太会pr,所以直接新建的项目,

原项目地址:https://github.com/Optimistism/Style-transfer

原项目代码的讲解地址:https://www.bilibili.com/video/BV1yY4y1c7Cz/

本项目是对原项目的一点点完善。

项目地址:https://github.com/Knighthood2001/Style-transfer

更新

  • 2024-08-03 更新:这个项目,是不能保存模型参数的,也就是说,你只能通过训练,得出图片,而不能直接进行推理。

项目如何运行

  1. 下载项目
    这个比较简单,直接在github上下载zip包,然后解压即可。或者使用git clone命令克隆项目。
  2. 安装依赖
  • 这里由于我没有用到虚拟环境,无法准确得出需要用的包,大致就是torch和我requirements.txt中的包。
  • 安装命令
    安装torch的话,会比较慢
shell 复制代码
pip install -r requirements.txt
  • 这里需要注意,需要安装tensorboard,作者给出的并没有这个,但是如果没有这个,你是查看不了运行结果的。
  1. 运行项目
  • 首先就是运行代码
  • 然后的话,它会去https://download.pytorch.org/models/vgg19-dcbb9e9d.pth 去下载vgg19的预训练权重,这个文件大概548mb。
    由于我这里不知道pytorch如何加载这个文件,因此,大家可以自己下载这个文件,或者将我这个文件,放到你代码运行后,它给出的那个路径下。可以看下面我更改部分第一点的第二张图片,运行代码会给出最终下载的路径的。
  • 然后想要看到tensorboard中的数据,就在终端输入
shell 复制代码
tensorboard --logdir=runs

然后点击浏览器,输入localhost:6006
点击这里也可以

后续你跑自己的图片,只需要在main.py中修改content_img和style_img即可。

更改

  1. 更新了vgg19传参
    最开始会报这个警告

使用这行代码后

shell 复制代码
# self.vgg = models.vgg19(pretrained=True).features  # .features用于提取卷积层
self.vgg = models.vgg19(weights=VGG19_Weights.IMAGENET1K_V1).features

这行代码,会去自动下载官网的vgg19预训练权重,548mb,下载还是很慢的。我下载这个花了30分钟。

我这里由于文件太大,无法上传到github,因此,大家可以自己下载这个文件。

不会警告了

  1. 添加了content_weight参数,更加符合其公式要求
shell 复制代码
loss = content_weight * content_loss + style_weight * style_loss
  1. 运行代码后提示报错
shell 复制代码
RuntimeError: Input type (torch.FloatTensor) and weight type
 (torch.cuda.FloatTensor) should be the same or input should 
 be a MKLDNN tensor and weight is a dense tensor

当模型的权重(weights)和输入数据(inputs)不在同一个设备上时。

这个命令报错表示你的模型权重被移动到了CUDA设备上(即GPU),但是你的输入数据还在CPU上。

因此,具体做法是,将输入数据也移动到device中,它将根据你代码中的变换,自动选择设备。

shell 复制代码
# 图片输入到gpu,否则就会报错
content_img = content_img.to(device)
style_img = style_img.to(device)
  1. 添加了日志记录

在main.py的最开始,添加了一些代码,主要就是设置了日志,并且以时间命名,方便后续将结果保存到日志中,方便查看。免得你自己去创建txt进行cv。

可以看到,这里也会有时间,你可以通过看日志,计算训练的时间。

实际体验

我本机是1650的显卡,跑3000轮,花了20分钟。

原图

结果图

梵高风的狗头自拍图

2999轮的结果

6000轮的结果

效果其实还不错

相关推荐
HANDY092003 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
lucas_AI3 小时前
想公开警告 AI 风险?先看看你的合同:DeepMind 员工抗议「终身禁言条款」
人工智能
阿文和她的Key3 小时前
算力零售化的四层架构:从 0.01 元月卡看 AI 服务的计量、履约与复购
人工智能·架构·零售
ss2733 小时前
不用向量库,我用 MySQL 跑通了蔬菜 RAG--基于 RuoYi-AI 的蔬菜种植知识库 + 智能咨询系统,普通开发机就能跑
数据库·人工智能·智慧农业·ruoyi·知识库·rag
l5507255413 小时前
汽车总布置人机|SAE J826 驾驶人体二维模板绘制要点
人工智能·汽车
天远数科3 小时前
零信任架构实战:基于天远全能家政风险报告构建自动化即时到家保洁与短工抢单安全核验网关
运维·人工智能·架构·自动化
听我哔哔4 小时前
口播视频唇形总对不上?Seedance 2.5 在 zeekeAI 里的同步实操
人工智能·音视频
隔窗听雨眠4 小时前
大语言模型推理效率的多维优化与部署取舍
人工智能·语言模型·自然语言处理
听风吹等浪起5 小时前
第30章:MobileNetV3全家桶实现MRI脑肿瘤四分类(含Streamlit网页推理+Mermaid结构图)
人工智能·分类·数据挖掘