AI试衣IDM-VTON,Windows11本地安装配置记录!

昨天我们已经介绍过IDM-VTON这个开源项目了。

通过这个软件可以轻松实现一键换衣服。

昨天,简单演示了一下在线使用。

今天,来演示如何安装到本地电脑上!

本地配置会有一定的专业性,懂的人可以参考下。

不懂得直接拉到最后,动动手指!

我会发一个制作好的离线软件包。

闲话不多说了,直接开干!

确保你本地有显卡(我用的是3090),Windows系统,已经安装Python或者Conda,GIT等软件。

1.获取软件源代码

这是一个开源项目,所以可以使用git命令直接过去源代码。

git clone https://github.com/yisol/IDM-VTON.git

2.创建虚拟环境

如果你只是偶尔用一下Python环境,那么直接装个Python3.10就可以了。不需要这一步。

如果你常玩Python的AI项目,肯定知道用Conda创建一个虚拟环境,隔离不同项目。

常规做法是可以使用项目自带的environment文件,一次性创建虚拟环境并安装依赖。

命令如下:

conda env create -f environment.yaml

但是,environment这种方式,失败率比较高。

实际上,我直接用这条命令也失败了。

所以,换成了先创建虚拟环境。

conda create -n idm  python=3.10
conda activate idm

创建虚拟环境之后,记得激活。

3.安装依赖

虚拟环境创建并激活之后,就可以使用pip命令安装依赖了。

我习惯先独立安装torch

cd IDM-VTON
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

然后批量安装其他依赖:

pip install -r req.txt

req.txt是我自己创建的一个文件,文件里面的内容是:

accelerate==0.25.0

torchmetrics==1.2.1

tqdm==4.66.1

transformers==4.36.2

diffusers==0.25.0

einops==0.7.0

bitsandbytes==0.39.0

scipy==1.11.1

opencv-python

gradio==4.24.0

fvcore

cloudpickle

omegaconf

pycocotools

basicsr

av

onnxruntime==1.16.2

执行完成,依赖也就全部安装完成了。从我本地测试的情况来看,所有依赖和指定版本都能正常安装,没有任何冲突或者标红的记录。

4.获取模型

通过上面的步骤,环境配置已经搞定,接下来就是获取模型了。

模型能我简单的把它们划分为两类,一类是基础模型,一类是这个项目的专属模型。

先说专属模型,主要注意如下的目录结构。

ckpt

|-- densepose

|-- model_final_162be9.pkl

|-- humanparsing

|-- parsing_atr.onnx

|-- parsing_lip.onnx

|-- openpose

|-- ckpts

|-- body_pose_model.pth

项目作者已经帮你创建好了这些文件和模型。但是模型文件只是做个样子,并没有实际内容,需要自己下载替换。

基础模型的话,你在第一次启动的时候会自动下载。大概有28G

获取这些模型,可以通过这个地址:

https://huggingface.co/yisol/IDM-VTON/tree/main

对于专属模型,找到对应文件夹里的模型,下载到本地对应的路径就行了。

另外的模型,我就使用如下代码,让它自动加载了。

set HF_HOME=.\cache
python gradio_demo/app.py

这里需要注意,第一行代码很重要,可以防止你的C盘爆掉!

第二行代码其实是启动webui,由于启动过程会先加载模型,所以可以用这个来下载模型。

由于模型比较大,即便是网络比较好,也需要一些时间。

5.运行WEBUI

模型加载完成之后会自动启动WEBUI,以后如果要手动启动,还是执行同样的命令即可。

set HF_HOME=.\cache
python gradio_demo/app.py

输入命令之后会输出一些内容。看到如下信息基本就是成功启动了。

Running on local URL:  http://127.0.0.1:7860

复制上面的地址,在浏览器中打开,然后就可以愉快地玩耍了。

打开后的界面,和昨天介绍的网页版一模一样。

所以用法也相同,为了文章的可读性。我还是简单介绍一下使用方法。

大概步骤是 ①模特照片,②上传服装,点击③试穿即可。

服装照片自然是选择最干净的平面照片,模特的话,只要衣服和其他内容比较容易区分即可。

6.离线运行

按理说,本地配置完成之后,模型已经缓存到了本地。软件应该就可以断网执行了。但是由于代码中是通过huggingface加载模型,所以即便本地有缓存,还是需要连线加载。

为了解决这个问题,我尝试使用了离线变量。

set HF_HUB_OFFLINE=1
set TRANSFORMERS_OFFLINE=1

但是不知道什么原因,一直出错。

后来想到的办法是直接拷贝下载好的模型缓存文件到另一个文件夹。

一个小发现,拷贝缓存文件中的软链接,可以直接拷贝对应的文件。

然后修改app.py中的代码:

base_path = 'cache\IDM-VTON'

修改完成之后,就可以彻底离线加载本地模型了。

7.离线的一键运行包

安装配置都讲完了,如果你比较擅长配置,同时本地网络流畅,硬盘读写快。

那么只要复制一下命令,就可以快速完成配置了。

但是对大部分人,大部分情况可能没有这么顺畅。

比如,就我这台电脑,光制作7z的压缩包,就花了2个小时。打包完20GB,上传到网盘也要不少时间!

前面的配置和试错时间肯定就更多了。

所以,制作一个打包好的软件包就非常有必要。给以后的我省时间,也给大家省时间。

下面就简单说一下软件包的使用方法。

首先获取软件包,获取之后会得到一个.7z的压缩包。

然后用解压软件解压,解压过程需要输入密码,密码看网盘里的说明。

解压完成之后,双击”启动.exe” 。

启动过程如下:

首先会有一个提示信息,然后等到跳出URL信息,跳出之后会自动打开本地的默认浏览器。

浏览器上就可以看到如下界面了:

用法还是和之前讲的一模一样,上传模特照片和衣服照片,点击试穿。等待一会儿,就可以在右上方看到最终的效果图了。

等待时间,会因为电脑配置不同,而有巨大的差异。

比如我在装3060显卡的电脑,跑一张图好像要几个小时….我感觉是加载模型的时候用到了共享内存,或者其他资源不够,所以特别慢。

但是在装3090显卡的电脑上就挺快,第一次用了54秒,第二次只用14秒。

14秒一次的话,完全在可接受的范围内啊。

今天的文章大概就是这样了,如果安装配置有困难的可以相互交流下。

如果是直接用软件包,应该没啥问题,只要保证你的电脑配置够强就行了。

软件包获取方式:

给公众号“托尼不是塔克”发送”idm“ 就会收到下载链接!

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

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

相关文章

智能酒精壁炉与酒店前台的氛围搭配

智能酒精壁炉与酒店前台的氛围搭配可以为前台区域增添舒适、现代和独特的氛围,以下是一些建议: 欢迎区域装饰: 将智能酒精壁炉作为前台欢迎区域的装饰物,放置在客人抵达的显眼位置。选择现代设计的壁炉款式,如壁挂式…

使用Eigen将经纬度、高程、偏北角转成变换矩阵

目录 1、前言 2、示例 3、代码解析 4、垂直于给定点的切平面变换 5、代码解析 1、前言 在地球表面进行刚体变换时候,要将具有经纬度、高程和偏北角的坐标信息转换为变换矩阵表达,首先需要了解坐标系之间的转换关系。 通常,我们会将经纬…

C# WinForm —— 18 NumericUpDown 介绍

1. 简介 数字显示框,通过向上、向下按钮来 增加/减小 显示的数值 2. 常用属性 属性解释(Name)控件ID,在代码里引用的时候会用到,一般以 numUD 开头Hexadecimal数值 up-down 控件的值是否应以十六进制显示Increment每单击一下按钮,增加或减…

LLVM中期报告

1.主要开展的工作 研究对LLVM IR层面进行代码混淆,分析IR的指令 ,并且实现混淆 从LLVM代码混淆的角度出发,函数之间的正常调用构成了待混淆程序的原始控制流,不同的基础代码块构成了一个个的函数,每个基础…

【论文阅读】Machine Learning, Linear Algebra, and More: Is SQL All You Need?

文章目录 摘要一、介绍二、SQL算法原语2.1、Variables2.2、Functions2.3、Conditions2.4、Loops2.5、Errors 三、案例研究3.1、对数据库友好的SQL映射3.2、性能结果 四、结论以及未来工作 摘要 尽管SQL在简单的分析查询中无处不在,但它很少用于更复杂的计算&#xf…

泛微E9开发 添加多个多选框,实现单选框的效果

利用多个多选框实现单选框的效果 1、功能背景2、展示效果3、实现效果 1、功能背景 如下图所示,在表单中新增四个“选择框-复选框”类型的字段,并且设置其中的选项,每个多选框都只有一个选项,通过代码块实现单选框的效果 1.显示模…

idm下载到99.99%不动了 idm突然不下载了 idm下载到最后没速度咋办 IDM下载后没网了是怎么回事

idm能够帮助我们下载不同类型的网页视频,并且基于多线程下载技术的助力下使其下载速度比原来提升数倍以上,因此成为了许多朋友下载的小助手。但也有朋友反映idm下载网页视频超时连接不上,idm下载网页视频突然停止,究竟这些情况我们…

C++之Eigen库基本使用(下)

1、常见变换 Eigen::Matrix3d //旋转矩阵(3*3) Eigen::AngleAxisd //旋转向量(3*1) Eigen::Vector3d //欧拉角(3*1) Eigen::Quaterniond //四元数(4*1) Eigen::Isom…

[嵌入式系统-77]:RT-Thread-快速上手:嵌入式系统调测工具大全

目录 1. JTAG 下载调试器: 2. J-Link 仿真器: 3. ICE(In-Circuit Emulator): 4. ROM监视器(ROM Monitor): 5. 终端仿真工具: 6. 总线抓取工具: 7. 静态…

考研踩坑经验分享

文章目录 写在前面自身情况简介自身学习路线优点坑点 学习路线建议1、2和3月份3、4和5月份6、7和8月份9、10月份11、12月份 一些私货建议结尾 写在前面 考研是一件非常有盼头的事,但绝对不是一件容易的事。 如果你不能做好来年三月份出成绩时,坦然接受…

Java全局异常处理,@ControllerAdvice异常拦截原理解析【简单易懂】

https://www.bilibili.com/video/BV1sS411c7Mo 文章目录 一、全局异常处理器的类型1-1、实现方式一1-2、实现方式二 二、全局异常拦截点2-1、入口2-2、全局异常拦截器是如何注入到 DispatcherServlet 的 三、ControllerAdvice 如何解析、执行3-1、解析3-2、执行 四、其它4-1、设…

51单片机实现俄罗斯方块游戏编程

一、设计要求 (1)利用51单片机,设计一款俄罗斯方块游戏,完成硬件电路的开发和程序的编写调试; (2)采用LCD12864液晶作为游戏运行界面; (3)利用按键输入灵活…