AI绘画:PhotoMaker Win11本地安装记录!

昨天介绍一个叫PhotoMaker的AI绘画开源项目。挺不错的!

通过这个项目可以快速制作特定人脸的AI绘画作品,相比传统的技术效果会好很多,效率也高很多。

今天趁热打铁,本地电脑装装看,并且记录,分享一下!

本文主要面向有一定配置基础的人,所以废话我就尽量少说了。

把步骤说清楚,把命令留下,把坑填了,就收工了。

会装的可以结束阅读直接去GitHub了。

想努力一下的可以慢慢看,我尽量把关键信息写清楚。

不想努力的直接拉到最后~~哈啊哈!

0.准备工作

准备一张牛逼的英伟达显卡!

Windows11+Conda+git

1.克隆代码

打开CMD工具,通过CD命令进入到制定目录,然后克隆代码。

git clone https://github.com/TencentARC/PhotoMaker.git
cd PhotoMaker

2.创建虚拟环境并激活

官方推荐的版本信息如下:

  • Python >= 3.8(推荐 Anaconda or Miniconda)
  • PyTorch >= 2.0.0

使用Conda工具,创建一个虚拟环境,创建成功之后激活虚拟环境。

conda create -n photemaker python=3.10
conda activate photomaker

3.安装依赖

常规安装方法如下:

pip install -r requirements.txt

由于在Windows下面安装,又会有些不一样。需要修改一下这个文件。

注释掉下面三项:

#torch==2.0.1
#torchvision==0.15.2
#pytorch-cuda==11.8

运行上面的安装命令,装完之后,单独安装一下Torch!

安装过程网络不好的,可以设置conda镜像,pip镜像。

4.下载模型

这个项目用到了两类模型,一个是PhotoMaker,还有一个是基于SDXL的基础模型。

运行代码之后会自动下载。

下载部分代码如下:

from huggingface_hub import hf_hub_download
photomaker_path = hf_hub_download(repo_id="TencentARC/PhotoMaker", filename="photomaker-v1.bin", repo_type="model")

当然,你也可以手动下载。那就得明白各种路径的问题!

模型默认会下载在C盘,大概7G左右,准备好足够的硬盘空间。

C盘扛不住的,可以设置环境变量:

SET HF_HUB_CACHE=./models

这样C就解脱了,压力给到D>E>F。

5. 运行测试

喜欢研究代码的,可以直接根据项目主页上提供的演示代码来运行项目。

但是本文以配置为主,就不展开讲代码了。

直接运行网页版Demo:

python gradio_demo/app.py

运行成功之后,打开网址,就可以使用了。

从文章来看,配置过程简直小菜一碟!

而实际安装过程肯定没有那么顺利!

这就叫,搞定之后云淡风轻,搞的过程痛不欲生

下面来说说我遇到的几个问题。

6. 遇到的问题

但凡涉及网络的问题,我都不认为是问题。大家都知道有这个问题,但是不能说是什么问题。

pytorch-cuda包找不到!

ERROR: Could not find a version that satisfies the requirement pytorch-cuda==11.8 (from versions: none)
ERROR: No matching distribution found for pytorch-cuda==11.8

这个问题上面有提到,直接安装就会报这个错误。原因大概是,这个依赖文件,就不是为Windows用户准备的。

所以,我的选择是,直接注释掉。

Torch版本的问题

如果只是简单使用:

pip install torch

那肯定是不行滴,Linux玩家专属。

Windows需要:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

你可以不指定GPU,但是必须带个尾巴!

Fork异常

ValueError: cannot find context for 'fork'

看到这个问题时,我就默默说了句fxxk。

鬼知道什么问题!

经过查询,基本确定和操作系统差异有关。

把源代码中的fork换成spawn就可以了。

无法导入photomaker

ModuleNotFoundError: No module named 'photomaker'

所有问题都解决之后,根据官方主页上提供的运行命令,运行app.py就会出现这个错误了。

VSCode里面可以看到导入正常,但是运行命令就是为出现这个问题。

可能是我对Import的路径问题理解不够深刻。

我先是暴力解决,直接把gradio_demo文件下面的两个文件拖动到上一级目录了。

然后直接用如下命令:

python app.py

后来思考了一下它的导入机制。我只要在根目录创建一个run.py。

里面添加一行代码:

import gradio_demo.app

这样就不用去移动那两个文件,直接使用:

python run.py

这样就可以了。

上面的问题都解决了,你应该可以在Windows正常运行这个项目了。

但是,你还要面临最后一个考验:OOM

我先是在3060上配置运行的,可以启动,但是跑到最后就提示显存不够了,直接摆烂了。

最后又在3090上折腾了一阵子,终于可以愉快的玩耍了。

我开头说了,不想努力的拉到最后,主要基于两点:

  1. 硬件不够硬,就直接不用努力了。
  2. 硬件够硬,可以等我的一键运行包。

给公众号“托尼不是塔克“ 发送关键词photomaker获取!

最后夹带点私货。

在线演示可以看这里:

https://github.com/dream80/TonyDemo

Colab脚本可以看这里:

https://github.com/dream80/TonyColab

在线演示人太多,可能有点崩溃了!

最后…

不管你会没会,不能白看哦。

起码点个赞再走!!!

收工!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js padEnd方法介绍笔记

padEnd() 是 JavaScript 字符串的方法之一,它用于在当前字符串的末尾添加指定数量的字符,直到字符串达到指定的长度。 padEnd() 方法接受两个参数: 目标长度和要添加的填充字符。 如果当前字符串的长度已经等于或超过目标长度,则不…

程序员怎么写简历_写简历软件

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

vue预览pdf文件的几种方法

文章目录 vue预览pdf集中方法方法一:方法二:展示效果:需要包依赖:代码: 方法三:展示效果:需要包依赖:代码:自己调参数,选择符合自己的 vue预览pdf集中方法 我…

第 9 章:理解C++内存模型

本章是继[第8章]讨论的延续,我们在那里讨论了一些多进程和多线程技术;本章将增强它们的使用。我们将引导你了解各种技术,同时聚焦于本章的主要内容——C内存模型。但为了讨论这一点,你首先将简要检视通过智能指针和可选对象实现的…

ZK鉴权设计以及相关探讨

文章目录 1. zk的鉴权设计2. zk鉴权应用范围3. zk鉴权的常用方法4. 推荐配置5. 参考文档 鉴权,分别由鉴和权组成 鉴: 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致权: 完成身份的鉴后,还需要判断…

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统,具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

【C++】std::variant

上一篇文章讲到了 union,union union存在很多问题,因此C17设计了一个新的variant替代原来的union。 union的问题 无法知道当前使用的类型是什么。而且union无法自动调用底层数据成员的析构函数。 这些使得一般只对一些“基本类型”使用union&#xf…

Redis 安装 redistimeseries.so(时间序列数据类型)教程

配置步骤 1.下载 redistimeseries.so 文件 2.在 redis.conf 中增加配置 loadmodule /home/chenjian/redis-lib/RedisTimeSeries/redistimeseries.so DUPLICATE_POLICY LAST3.重启 Redis 服务 4.连接客户端,测试 RedisTimeSeries 相关命令,下图表明 R…

Java玩转《啊哈算法》排序之快速排序

心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。 地图 引子代码地址快速排序核心代码优劣完整代码演示 课后习题 引子 搭嘎好!本人最近看的《啊哈算法》这本书写的确实不错,生动形象,在保…

安全耐用 一路稳行 极固轮胎3大系列产品重磅上市

临近年关,全国范围内雨雪天气多发,让极端天气环境下的行车安全再次成为热议话题。路面寒冷湿滑,交通事故频发,也让大家开始关注一个话题:如何确保汽车在湿滑路面上的安全系数?或者说,如果遭遇类…

如何让wordpress首页只显示某一篇文章全部内容?在您的主页显示选择

大多数WordPress站点首页默认都是显示最新发布的文章列表,不过有些站点比较特殊,只想显示某一篇文章的全部内容,那么应该怎么设置呢? 其实,WordPress后台 >> 设置 >> 阅读 >> 在“您的主页显示”中…

基于flask的个人博客项目从0到1

项目展示 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转,该项目已部署上线,…

《HTML 简易速速上手小册》第8章:HTML 表单高级技术(2024 最新版)

文章目录 8.1 数据收集与处理8.1.1 基础知识8.1.2 案例 1:创建一个注册表单8.1.3 案例 2:创建一个调查问卷表单8.1.4 案例 3:创建一个动态添加输入字段的表单 8.2 定制化表单元素8.2.1 基础知识8.2.2 案例 1:创建一个带有定制选择…

【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分,讲这个光栅化里面怎么实现这个阴影 实际上阴影就是光源看不到的地方但是是我们能看到的地方,那这个地方就应该有阴影,那具体怎么做呢,这个就叫做Shadow Mapping,分两步做 我们之前说过这个解…

Stable Diffusion系列(四):提示词规则与使用

文章目录 基础规则高级规则插件使用基于相机镜头增强提示词常用提示词总结奇特提示词珍藏 基础规则 所谓提示词,也就是文生图中的文,由连贯的英语单词或句子组成。其最基础的规则是: 不同提示词之间需要用英文逗号分隔,空格和换…

基于大数据的B站数据分析系统的设计与实现

摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法

遭遇 mfc140.dll 文件缺失的状况时,首要任务是保持冷静,并深入理解问题所在,随后按照科学的方法来应对这一挑战。本篇文章概述了多种应对策略,从适合新手的基本步骤到针对有技术基础用户的高级方案,各种手段都能有效地…

linux系统查看占用cpu程序

目录 一:top 二: ps 三:perf 四:/proc/stat 五:pidstat 一:top 使用 top 命令:在终端中输入 top 命令,系统会显示当前正在运行的进程和它们的资源占用情况。默认情况下&#…

awk 文本处理工具三剑客

一、什么是awk 1.1 awk 基本概念 awk(语言): 读取一行处理一行 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…