InstantID模型部署教程

news2024/9/20 0:52:00

一、介绍

InstantID 是由 InstantX 团队、小红书公司和北京大学联合开发的一项前沿技术,旨在实现零样本身份保持生成,仅需单张图像即可支持多种下游任务,可以在几秒钟内实现零样本身份保留生成。

InstantID 以其独特的无需微调方式,为图像生成领域带来了重大突破。仅凭借单一图像,就能精准地实现身份保持生成,这一特性为用户带来了极大的便利。它不仅能够牢牢保持图像的身份信息,确保生成的图像与原始图像在身份特征上高度一致,而且还能实现高质量的图像生成和编辑。

更多详细信息见 github官网。

二、部署过程:

基础环境最低要求说明:

环境名称版本信息1
Ubuntu22.04.4 LTS
CudaV12.1.105
Python3.12
NVIDIA CorporationRTX 3090

1. 更新基础软件包

查看系统版本信息

# 查看系统版本信息,包括ID(如ubuntu、centos等)、版本号、名称、版本号ID等
cat /etc/os-release

image.png

配置 apt 国内源

# 更新软件包列表
apt-get update

这个命令用于更新本地软件包索引。它会从所有配置的源中检索最新的软件包列表信息,但不会安装或升级任何软件包。这是安装新软件包或进行软件包升级之前的推荐步骤,因为它确保了您获取的是最新版本的软件包。

# 安装 Vim 编辑器
apt-get install -y vim

这个命令用于安装 Vim 文本编辑器。-y 选项表示自动回答所有的提示为“是”,这样在安装过程中就不需要手动确认。Vim 是一个非常强大的文本编辑器,广泛用于编程和配置文件的编辑。

为了安全起见,先备份当前的 sources.list 文件之后,再进行修改:

# 备份现有的软件源列表
cp /etc/apt/sources.list /etc/apt/sources.list.bak

这个命令将当前的 sources.list 文件复制为一个名为 sources.list.bak 的备份文件。因为编辑 sources.list 文件时可能会出错,导致无法安装或更新软件包。有了备份,如果出现问题,您可以轻松地恢复原始的文件。

# 编辑软件源列表文件
vim /etc/apt/sources.list

这个命令使用 Vim 编辑器打开 sources.list 文件,以便您可以编辑它。这个文件包含了 APT(Advanced Package Tool)用于安装和更新软件包的软件源列表。通过编辑这个文件,您可以添加新的软件源、更改现有软件源的优先级或禁用某些软件源。

在 Vim 中,您可以使用方向键来移动光标,

i 键进入插入模式(可以开始编辑文本),

Esc 键退出插入模式,

:wq 命令保存更改并退出 Vim, 

:q! 命令不保存更改并退出 Vim。

编辑 sources.list 文件时,请确保您了解自己在做什么,特别是如果您正在添加新的软件源,因为错误的源可能会导致软件包安装失败或系统安全问题。如果您不确定,最好先搜索并找到可靠的源信息,或者咨询有经验的 Linux 用户。

image.png

使用 Vim 编辑器打开 sources.list 文件,复制以下代码替换 sources.list里面的全部代码,配置 apt 国内阿里源。

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

image.png

安装常用软件和工具

# 更新源列表,输入以下命令:
apt-get update

# 更新系统软件包,输入以下命令:
apt-get upgrade

# 安装常用软件和工具,输入以下命令:
apt-get -y install vim wget git git-lfs unzip lsof net-tools gcc cmake build-essential

出现以下页面,说明国内apt源已替换成功,且能正常安装apt软件和工具

image.png

2. 安装 NVIDIA CUDA Toolkit 12.1

  • 下载 CUDA Keyring :
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.0-1_all.deb

这个命令用于下载 CUDA 的 GPG 密钥环,它用于验证 CUDA 软件包的签名。这是确保软件包安全性的一个重要步骤。

  • 安装 CUDA Keyring :
dpkg -i cuda-keyring_1.0-1_all.deb

使用 dpkg 安装下载的密钥环,以便 apt 能够验证从 NVIDIA 仓库下载的软件包的签名。

image.png

  • 删除旧的 apt 密钥(如果必要) :
apt-key del 7fa2af80

这一步可能不是必需的,除非您知道 7fa2af80 是与 CUDA 相关的旧密钥,并且您想从系统中删除它以避免混淆。通常情况下,如果您只是安装 CUDA 并使用 NVIDIA 提供的最新密钥环,这一步可以跳过。

  • 更新 apt 包列表 :
apt-get update

更新 apt 的软件包列表,以便包括刚刚通过 cuda-keyring 添加的 NVIDIA 仓库中的软件包。

  • 安装 CUDA Toolkit :
apt-get -y install cuda-toolkit-12-1

image.png

出现以下页面,说明 NVIDIA CUDA Toolkit 12.1 安装成功

image.png

注意:这里可能有一个问题。NVIDIA 官方 Ubuntu 仓库中可能不包含直接名为 cuda-toolkit-12-1 的包。通常,您会安装一个名为 cuda 或 cuda-12-1 的元包,它会作为依赖项拉入 CUDA Toolkit 的所有组件。请检查 NVIDIA 的官方文档或仓库,以确认正确的包名。

如果您正在寻找安装特定版本的 CUDA Toolkit,您可能需要安装类似 cuda-12-1 的包(如果可用),或者从 NVIDIA 的官方网站下载 CUDA Toolkit 的 .run 安装程序进行手动安装。

请确保您查看 NVIDIA 的官方文档或 Ubuntu 的 NVIDIA CUDA 仓库以获取最准确的包名和安装指令。

image.png

  • 出现以上情况,需要配置 NVIDIA CUDA Toolkit 12.1 系统环境变量

编辑 ~/.bashrc 文件

# 编辑 ~/.bashrc 文件
vim ~/.bashrc

插入以下环境变量

# 插入以下环境变量
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

image.png

激活 ~/.bashrc 文件

# 激活 ~/.bashrc 文件
source ~/.bashrc

查看cuda系统环境变量

which nvcc
nvcc -V

image.png

3. 安装 Miniconda:

  • 下载 Miniconda 安装脚本 :
    • 使用 wget 命令从 Anaconda 的官方仓库下载 Miniconda 的安装脚本。Miniconda 是一个更小的 Anaconda 发行版,包含了 Anaconda 的核心组件,用于安装和管理 Python 包。
  • 运行 Miniconda 安装脚本 :
    • 使用 bash 命令运行下载的 Miniconda 安装脚本。这将启动 Miniconda 的安装过程。
# 下载 Miniconda 安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 运行 Miniconda 安装脚本
bash Miniconda3-latest-Linux-x86_64.sh

# 初次安装需要激活 base 环境
source ~/.bashrc

按下回车键(enter)

image.png

输入yes

image.png

输入yes

image.png

安装成功如下图所示

image.png

pip配置清华源加速

# 编辑 /etc/pip.conf 文件
vim  /etc/pip.conf

加入以下代码

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

注意事项:

  • 请确保您的系统是 Linux x86_64 架构,因为下载的 Miniconda 版本是为该架构设计的。
  • 在运行安装脚本之前,您可能需要使用 chmod +x Miniconda3-latest-Linux-x86_64.sh 命令给予脚本执行权限。
  • 安装过程中,您将被提示是否同意许可协议,以及是否将 Miniconda 初始化。通常选择 "yes" 以完成安装和初始化。
  • 安装完成后,您可以使用 conda 命令来管理 Python 环境和包。
  • 如果链接无法访问或解析失败,可能是因为网络问题或链接本身的问题。请检查网络连接,并确保链接是最新的和有效的。如果问题依旧,请访问 Anaconda 的官方网站获取最新的下载链接。

4. 从 github 仓库 克隆项目

  • 克隆存储库:
# 克隆 InstantID 项目
git clone https://github.com/InstantID/InstantID.git

image.png

如果 github 无法访问,使用 国内镜像 进行克隆

# 克隆 InstantID 项目
git clone https://gitee.com/empty-snow/InstantID.git

出现以上页面即是克隆项目成功!

请注意,如果 git clone https://github.com/InstantID/InstantID.git 这个链接不存在或者无效,git clone 命令将不会成功克隆项目,并且会报错。确保链接是有效的,并且您有足够的权限访问该存储库。

5. 创建虚拟环境

# 创建一个名为 InstantID 的新虚拟环境,并指定 Python 版本为 3.12
conda create -n InstantID python=3.12

image.png

6. 安装模型依赖库

  • 切换到项目目录、激活虚拟环境、安装依赖
# 切换到 InstantID 项目工作目录
cd InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 安装 requirements.txt 依赖
pip install -r gradio_demo/requirements.txt

image.png

出现以上报错,需要修改 requirements.txt 文件

vim gradio_demo/requirements.txt

image.png

整体替换为:

diffusers
torch
torchvision
transformers
accelerate
safetensors
einops
onnxruntime-gpu
spaces
omegaconf
peft
huggingface-hub
opencv-python
insightface
gradio
controlnet_aux
gdown
peft

再次执行安装代码:

# 切换到 InstantID 项目工作目录
cd InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 安装 requirements.txt 依赖
pip install -r gradio_demo/requirements.txt

image.png

  • 依赖安装成功如下图所示:

image.png

7. 下载预训练模型

  • 执行下载模型脚本:
python gradio_demo/download_models.py

image.png

无法访问 Hugging Face 官网,需要进入 HF Mirror 进行模型搜索、下载:

image.png

image.png

# 下载模型
git lfs install
git clone https://hf-mirror.com/InstantX/InstantID checkpoints
  • 模型下载完成的截图:

image.png

8. 运行 app.py 文件

# 切换到 InstantID 项目工作目录
cd InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 运行 app.py 文件
python gradio_demo/app.py

image.png

github官网下载较慢,直接在本地下载,再上传到服务器(可以使用Xshell等工具进行上传)

https://drive.usercontent.google.com/download?id=18wEUfMNohBJ4K3Ly5wpTejPfDzp-8fI8&export=download

image.png

# 进入 models/ 目录
cd /InstantID/models/

# 解压缩 antelopev2.zip 文件
unzip antelopev2.zip

image.png

再次运行 app.py 文件

# 切换到 InstantID 项目工作目录
cd /InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 运行 app.py 文件
python gradio_demo/app.py

image.png

在运行过程中,出现以上报错,需要进入 Hugging Face 官网,如果 Hugging Face 官网无法访问,则需要进入 HF Mirror 国内加速进行wangqixun/YamerMIX_v8 模型搜索、下载:

image.png

image.png

# 下载 wangqixun/YamerMIX_v8 模型
git lfs install
git clone https://hf-mirror.com/wangqixun/YamerMIX_v8 wangqixun/YamerMIX_v8

image.png

下载完成的页面:

image.png

再次运行 app.py 文件

# 切换到 InstantID 项目工作目录
cd /InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 运行 app.py 文件
python gradio_demo/app.py

image.png

再次运行的过程中,出现以上报错,需要进入 Hugging Face 官网,如果 Hugging Face 官网无法访问,则需要进入 HF Mirror 国内加速进行latent-consistency/lcm-lora-sdxl 模型搜索、下载:

image.png

image.png

# 下载 latent-consistency/lcm-lora-sdxl 模型
git lfs install
git clone https://hf-mirror.com/latent-consistency/lcm-lora-sdxl latent-consistency/lcm-lora-sdxl

image.png

再次运行 app.py 文件

# 切换到 InstantID 项目工作目录
cd /InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 运行 app.py 文件
python gradio_demo/app.py

image.png

出现以上访问链接,则代表模型已经部署成功,现在还需要修改访问IP和端口号:

# 切换到 InstantID 项目工作目录
cd /InstantID

# 激活 InstantID 虚拟环境
conda activate InstantID

# 设置 Gradio 服务器名称和端口
export GRADIO_SERVER_NAME=0.0.0.0
export GRADIO_SERVER_PORT=8080

# 运行 app.py 文件
python gradio_demo/app.py

image.png

最终的本地访问链接

image.png

最后出现以下 gradio 页面,即是模型已搭建完成。

三、网页演示

image.png

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

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

相关文章

Anolis OS 8.8 CentOS8离线安装mysql-8.0.9

下载mysql安装包: mysql下载地址 在Linux系统中,mysql的安装包除了要区分系统和cpu架构之外,还区分安装方式,下载不同的包,安装方式也完全不一样,安装完成后的效果也完全不一样。 我之前下载的包按照官方…

Zabbix企业级应用案列

随着业务的越发复杂,对软件系统的要求越来越高,这意味着我们需要随时掌控系统的运行情况。因此,对系统的实时监控以及可视化展示,就成了基础架构的必须能力。 一、zabbix可视化 1.Grafana 简介 Grafana 是一个开源的指标量监测和…

汽车保养维修|基于java的汽车保养系统小程序(源码+数据库+文档)

汽车保养系统小程序 目录 基于java的汽车保养系统小程序 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云…

简单聊聊bait文件

场景:业务同事发现某云主机部署了企业主机安全,在该主机上发现了一个诱饵文件,显示注意:此文件是诱饵文件,用于防止重要文件被病毒加密。请勿修改或删除此文件。 解决方法:联系企业主机安全运维同事发现&am…

基于SpringBoot+Vue的小区停车场管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

opencv之图像轮廓(三)--凸包

文章目录 前言获取凸包凸缺陷几何学测试测试轮廓是否是凸形的点到轮廓的距离 形状场景算法比较轮廓轮廓的特征值宽高比ExtentSolidity等效直径(Equivalent Diameter)方向掩模和像素点使用Numpy函数获取轮廓像素点使用OpenCV函数获取轮廓点 最大值和最小值…

太牛了!AI大佬的课程!吴恩达、李飞飞、李宏毅、Hinton、LeCun...

本文精心梳理了AI顶级大佬教授的人工智能课程,涵盖了深度学习、机器学习等多个领域的前沿内容。 这些课程将引领您深入了解决策树、朴素贝叶斯、逻辑回归、神经网络和深度学习等核心知识点,同时还将探索贝叶斯学习、支持向量机和核方法、聚类、无监督学…

2024开学季,这五款学生必备好物请不要错过!

转眼又到了开学季,想必许多踏入大学校园的新同学们已经难掩心中的兴奋与期待,正摩拳擦掌准备拥抱即将到来的大学生活。不过,在你们迫不及待地迎接新阶段之前,何不利用开学季的各种优惠活动,为自己挑选一些实用的必备好…

NX二次开发—柱面中心线工具

设计一个柱面中心线工具,可以实现选择对象,画出圆柱的中心线,可以更改中心的线的颜色、线型、线宽和图层,是否延长,是否关联。 先在NX上进行界面设计 添加选择对象,并设置标题,选择设置为多选 添加组,在组里添加线条颜色/线型/线宽,设置颜色ColorValue和线型Value 这…

OrionX GPU算力池助力AI OCR场景应用

01 AI OCR的历史及概念 OCR(Optical Character Recognition,光学字符识别)是指采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文…

Java 冒泡排序

1&#xff0e;冒泡排序是最出名的排序算法之一&#xff0c;总共有八大排序&#xff01; 2&#xff0e;冒泡排序的算法相对简单&#xff0c;两层循环&#xff0c;外层冒泡轮数&#xff0c;里层以此比较。 如下&#xff1a; j < array.length - 1-i的作用&#xff1a;下一轮比…

内衣洗衣机哪个牌子好用?汇总五款主流硬核内衣洗衣机

内衣洗衣机是近年来备受关注的小家电产品&#xff0c;虽然市场火爆&#xff0c;但还是存在大部分人对内衣洗衣机的不了解&#xff0c;会购买到质量差、清洗效果不好的内衣洗衣机&#xff0c;面对众多内衣洗衣机品牌&#xff0c;到底内衣迷你洗衣机什么牌子好呢&#xff1f;今天…

多线程篇五——wait和notify

多线程篇五——wait和notify 如笔者理解有误&#xff0c;欢迎交流指正⭐ 线程的执行先后顺序难以预料【抢占式执行】&#xff0c;但是实际开发中我们会需要掌握当下线程的执行顺序. 这就是wait和notify的作用.【都是Object方法即随便定义一个对象豆可以使用wait和notify】 wa…

跟李沐学AI:长短期记忆网络LSTM

输入们、遗忘门和输出门 LSTM引入输入门、忘记门和输出门 输入门计算公式为&#xff1a;。 遗忘门计算公式为&#xff1a;。 输出门计算公式为&#xff1a;。 它们由三个具有sigmoid激活函数的全连接层处理&#xff0c; 以计算输入门、遗忘门和输出门的值。 因此&#xff0c…

为什么不推荐使用Stack

Java已不推荐使用Stack&#xff0c;而是推荐使用更高效的ArrayDeque 为什么不推荐使用 性能低&#xff1a;是因为 Stack 继承自 Vector&#xff0c; 而 Vector 在每个方法中都加了锁。由于需要兼容老的项目&#xff0c;很难在原有的基础上进行优化&#xff0c;因此 Vector 就被…

鸟类目标检测系统源码分享

鸟类目标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

亲测好用,ChatGPT 3.5/4.0新手使用手册~

都知道ChatGPT很强大&#xff0c;聊聊天、写论文、搞翻译、写代码、写文案、审合同等等&#xff0c;无所不能~ 那么到底怎么使用呢&#xff1f;其实很简单了&#xff0c;国内AI产品发展也很快&#xff0c;很多都很好用了~ 我一直在用&#xff0c;建议收藏下来~ 有最先进、最…

RocketMQ出现The broker does not support consumer to filter message by SQL92

在使用RocketMQ使用SQL过滤消息的时候&#xff0c;出现下面错误 原因是我们的配置文件没有开启SQL过滤功能&#xff0c;我们需要在每个配置文件中添加下面命令 #开启过滤消息时支持SQL92标准 enablePropertyFiltertrue接着我们重启namesrv与broker服务就解决问题 # 1.进入bi…

Robust Image Denoising through Adversarial Frequency Mixup

基于对抗性混频的鲁棒图像去噪 论文链接&#xff1a;https://openaccess.thecvf.com/CVPR2024/Ryou_Robust_Image_Denoising_through_Adversarial_Frequency_Mixup 项目链接&#xff1a;https://github.com/dhryougit/AFM Abstract 基于深度神经网络的图像去噪方法经常与训练…

哈希表的底层实现(1)---C++版

目录 哈希表的基本原理 哈希表的优点 哈希表的缺点 应用场景 闭散列法 开散列法 开放定值法Open Addressing——线性探测的模拟实现 超大重点部分评析 链地址法Separate Chaining——哈希桶的模拟实现 哈希表&#xff08;Hash Table&#xff09;是一种数据结构&#x…