0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用OpenVINO GenAI和LoRA适配器进行图像生成

英特尔物联网 来源:英特尔物联网 2025-03-12 13:49 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:

武卓 英特尔 AI 软件布道师

借助生成式 AI 模型(如 Stable Diffusion 和 FLUX.1),用户可以将平平无奇的文本提示词转换为令人惊艳的视觉效果。但如果你想生成更具风格化或定制化的图像,开源的基础模型可能无法满足你的所有需求。这时,LoRA(低秩自适应)就派上用场了。许多风格修改和增强功能现以 LoRA 的形式发布,作为基础模型的模块化附加组件。通过添加LoRA适配器,使得大家可以随心所欲、生成风格多变的个性化图像。

通过将 LoRA 集成到 OpenVINO GenAI 中,开发者可以一次加载多个 LoRA 适配器,并在运行推理时快速动态切换,无需重新编译基础模型。这使得用户能够以高效、可扩展的方式生成满足特定需求的、多样化、高质量的输出。现在,让我们深入了解具体步骤,借助 OpenVINO 将你的图像生成项目推向全新高度!

目录

克隆openvino.genai GitHub仓库

为AI模型转换安装相关依赖包

下载和转换AI模型及相应的分词器

选择单个或者多个LoRA 适配器来进行图像生成

C++创建和运行LoRA图像生成示例

结论

第0步:

问 OpenVINO GenAI 示例代码,体验 LoRA 适配器加持的文本生成图像功能

了解如何使用 OpenVINO GenAI 搭配 LoRA 进行文本生成图像的最简单方法,就是查看代码仓库中的示例源码。

以下是使用 LoRA 进行图像生成的 Python 示例脚本:

def main():
  parser = argparse.ArgumentParser()
  parser.add_argument('models_path')
  parser.add_argument('prompt')
  args, adapters = parser.parse_known_args()


  prompt = args.prompt


  device = "CPU" # GPU, NPU can be used as well
  adapter_config = openvino_genai.AdapterConfig()


  # Multiple LoRA adapters applied simultaneously are supported, parse them all and corresponding alphas from cmd parameters:
  for i in range(int(len(adapters) / 2)):
    adapter = openvino_genai.Adapter(adapters[2 * i])
    alpha = float(adapters[2 * i + 1])
    adapter_config.add(adapter, alpha)


  # LoRA adapters passed to the constructor will be activated by default in next generates
  pipe = openvino_genai.Text2ImagePipeline(args.models_path, device, adapters=adapter_config)
  print("Generating image with LoRA adapters applied, resulting image will be in lora.bmp")
  image = pipe.generate(prompt,
             generator=Generator(42),
             width=512,
             height=896,
             num_inference_steps=20)


  image_write("lora.bmp", image)

你会发现,只需少量代码,就能将 LoRA 适配器(单个或多个)轻松融入 OpenVINO GenAI 的文本生成图像流程。运行 LoRA 图像生成脚本,就像这样简单:

python lora_text2image.py FLUX.1-dev/INT4 " albert einstein, yarn art style" pytorch_lora_weights.safetensors 1.0

其中pytorch_lora_weights.safetensors 就是我们选择的用于图像生成的LoRA 适配器。

Step 1: 克隆openvino.genai GitHub仓库

4e46be76-fb35-11ef-9310-92fbcf53809c.png

从openvino.genai GitHub仓库克隆OpenVINO GenAI的开源代码。

Step 2:为AI模型转换安装相关依赖包

前往 文本生成图像(Text-to-Image)LoRA 示例:

openvino.genaisamplespythonimage_generation

在这个文件夹中,你可以找到关于示例的相关README.md 文件. 你也可以直接从 OpenVINO 下载页面访问该 README 文件。

现在,你需要准备一个 Python 虚拟环境,用于模型下载和转换。可以使用以下代码完成设置:

python -m venv venv_export
venv_exportScriptsactivate
pip install --upgrade-strategy eager -r ../../export-requirements.txt

Step 3:下载和转换AI模型及相应的分词器

为了生成图像,我们将使用 FLUX.1-dev模型,并且可以通过一条命令下载并转换为 OpenVINO IR 格式:

optimum-cli export openvino --model black-forest-labs/FLUX.1-dev --weight-format int4 --group-size 64 --ratio 1.0 FLUX.1-dev/INT4

如果由小伙伴不方便从HuggingFace的网站直接下载模型的,也可以先利用以下命令,从魔搭社区下载模型

modelscope download --model black-forest-labs/FLUX.1-dev

将模型保存在本地后,再次运行以下命令,

optimum-cli export openvino --model/FLUX.1-dev –task text-to-image --weight-format int4 --group-size 64 --ratio 1.0 FLUX.1-dev/INT4

完成模型的转换和导出。此外,OpenVINO 还支持其他适用于 LoRA 适配器的文本生成图像模型,完整列表请见此处。欢迎尝试不同模型,探索更多可能性!

过一会儿,转换完成后的模型就保留在了本地磁盘上,并准备好进行图像生成。如果不再需要转换(或优化)AI 模型,你可以删除 venv_export 文件夹,这些依赖包在 AI 推理的过程中并不需要。或者,你也可以直接从我们在HuggingFace这里或者魔搭社区这里的模型专区下载我们工程师已转换和量化的 FLUX.1 模型,跳过上述 第 2 步和第 3 步 的模型下载和转换步骤,直接从下方的推理步骤开始使用模型!

HuggingFace

https://huggingface.co/OpenVINO/FLUX.1-schnell-int4-ov

魔搭社区

https://modelscope.cn/models/OpenVINO/FLUX.1-schnell-int4-ov

Step 4: 选择单个或者多个LoRA 适配器来进行图像生成

首先,我建议你准备一个 Python 虚拟环境来运行 AI 推理。与用于模型下载和转换的环境不同,这里你只需要安装一个 Python 包 —— openvino.genai。

python -m venv venv
venvScriptsactivate
pip install -r ../../deployment-requirements.txt

openvino_genai.AdapterConfig用于在 openvino_genai.Text2ImagePipeline 中管理 LoRA 适配器。它可以用于添加、移除适配器,或调整它们的权重系数(Alpha)来实现风格融合。你可以在配置中加入一个或多个适配器,并通过 Alpha 系数进行混合,以生成更具风格化和创意的图像。目前,OpenVINO GenAI 支持以 Safetensors 格式保存的 LoRA 适配器。你可以使用 CivitAI 或 HuggingFace Hub上的公开预训练适配器,或者自行训练适配器来满足个性化需求。

CivitAI

https://civitai.com/

HuggingFace Hub

https://huggingface.co/models

以下是用于处理多个 LoRA 适配器的代码示例,

  adapter_config = openvino_genai.AdapterConfig()


  # Multiple LoRA adapters applied simultaneously are supported, parse them all and corresponding alphas from cmd parameters:
  for i in range(int(len(adapters) / 2)):
    adapter = openvino_genai.Adapter(adapters[2 * i])
    alpha = float(adapters[2 * i + 1])
    adapter_config.add(adapter, alpha)

将 LoRA 集成到 OpenVINO GenAI 的文本生成图像流程中,仅需一行代码,如下所示:

  # LoRA adapters passed to the constructor will be activated by default in next generates
  pipe = openvino_genai.Text2ImagePipeline(args.models_path, device, adapters=adapter_config)

选择单个LoRA适配器进行图像生成

python lora_text2image.py .FLUX.1-devINT4 "albert einstein" pytorch_lora_weights.safetensors 1.0

使用上述命令,你可以生成带有 “Yarn art” LoRA 风格的图像,并使用 INT4 量化的 FLUX.1-dev 模型,效果如下:

选择多个LoRA 适配器进行图像生成

当然,你还可以在一次推理中轻松使用多个 LoRA 适配器运行 Text2ImagePipeline。例如,使用以下命令,可以将 “浮世绘艺术(Ukiyo-e Art)” 风格与 “点绘风格(Point style)” 结合,并搭配转化和导出为OpenVINO 格式的SDXL-LCM模型(具体步骤参考这里)来生成图像:

python lora.py "./sdxl-lcm" "a cute cat in sunglasses" araminta_k_the_point.safetensors 0.8 "Ukiyo-e Art.safetensors" 0.6

生成的融合了多个LoRA风格的图像就如下图所示

OpenVINO GenAI 支持以 Safetensors 格式保存的 LoRA 适配器。你可以使用 CivitAI 或 HuggingFace Hub上的公开预训练适配器,或者自行训练 LoRA 适配器,以满足个性化需求。

请注意,在加载预训练的 LoRA 适配器之前,请确保它们与基础模型架构兼容。例如,如果你使用 SDXL 模型,则需要提供专为该模型类型训练的 LoRA 适配器。否则,例如使用 FLUX 训练的适配器,将无法正确集成到推理流水线中,也无法成功运行模型推理。

Step 5: 用C++创建和运行LoRA图像生成示例

尽管 Python 作为编程语言功能强大,且非常适合代码实验,但在许多情况下,C++ 更适用于桌面应用程序的开发。下面是用于 LoRA 图像生成 的 C++ 代码示例:

const std::string device = "CPU"; // GPU, NPU can be used as well


  ov::AdapterConfig adapter_config;
  // Multiple LoRA adapters applied simultaneously are supported, parse them all and corresponding alphas from cmd parameters:
  for(size_t i = 0; i < (argc - 3)/2; ++i) {
        ov::Adapter adapter(argv[3 + 2*i]);
        float alpha = std::atof(argv[3 + 2*i + 1]);
        adapter_config.add(adapter, alpha);
    }


    // LoRA adapters passed to the constructor will be activated by default in next generates
    ov::Text2ImagePipeline pipe(models_path, device, ov::adapters(adapter_config));


    std::cout << "Generating image with LoRA adapters applied, resulting image will be in lora.bmp
";
    ov::Tensor image = pipe.generate(prompt,
        ov::make_shared(42)),
    ov::width(512),
    ov::height(896),
    ov::num_inference_steps(20));
  imwrite("lora.bmp", image, true);

关于使用 C++ 构建 LoRA 文本生成图像 应用的详细指南,请查看此处。

小结

我们演示了如何使用 OpenVINO GenAI 通过文本提示词结合多个 LoRA 适配器 进行图像生成。借助提供的工具和代码,无论你偏好哪种编程语言,都能轻松上手。

你还可以通过 OpenVINO Notebook (https://github.com/openvinotoolkit/openvino_notebooks/tree/latest/notebooks/multilora-image-generation)体验 OpenVINO GenAI 的多 LoRA 适配器图像生成,运行效果如下:

欢迎尝试修改示例代码,并调整以下生成参数,探索更多可能性:

更改生成图像的宽度或高度

为同一提示词生成多张图片

调整推理步数,以优化生成质量和速度

调节引导尺度(Guidance Scale),影响生成结果的遵从度(了解更多详情)

(适用于 SD 1.x 和 2.x)当引导尺度 >1 时,添加 负向提示词 以优化生成效果

结合多个 LoRA 适配器,并调整混合系数,实现个性化风格融合

使用 OpenVINO GenAI,这一切都变得简单高效!快来试试吧!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 英特尔
    +关注

    关注

    61

    文章

    10275

    浏览量

    179274
  • PC
    PC
    +关注

    关注

    9

    文章

    2164

    浏览量

    158493
  • AI
    AI
    +关注

    关注

    89

    文章

    38090

    浏览量

    296491
  • 图像生成
    +关注

    关注

    0

    文章

    25

    浏览量

    7130
  • OpenVINO
    +关注

    关注

    0

    文章

    117

    浏览量

    715

原文标题:开发者实战|AI PC 新玩法:OpenVINO™ GenAI+LoRA 助你轻松实现个性化图像的高效生成

文章出处:【微信号:英特尔物联网,微信公众号:英特尔物联网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无法运行Whisper Asr GenAI OpenVINO™ Notebook怎么解决?

    冉小 声说-asr-genai OpenVINO™笔记本。 遇到的错误: Port for tensor name cache_position was not found.
    发表于 06-25 07:41

    电源适配器如何进行盐雾测试?

    办理盐雾测试流程(1)项目申请——向安磁检测递交申请。(2)资料准备——根据要求,提供相关的认证文件。(3)产品测试——公司将待测电源适配器样品寄到实验室进行测试。(4)编制报告——测试工程师根据合格
    发表于 06-26 09:28

    适配器模式实现

    目录第一章 适配器模式介绍第二章 适配器模式实现(类适配器)2.1、关系依赖图2.2、创建交流电2.3、定义直流电2.4、创建充电器2.5、创建手机类2.6、测试充电器2.7、点评该模式第三章
    发表于 09-15 07:11

    透射适配器

    透射适配器 透射适配器(TMA)也叫透扫描适配器、光罩或是透扫描精灵,主要用于平板式
    发表于 12-29 11:26 719次阅读

    网络适配器,什么是网络适配器

    网络适配器,什么是网络适配器 网卡,又称网络适配器或网络接口卡(NIC),英文名为Network Interface Card。在网络中,如果有一台计算
    发表于 04-03 14:11 2337次阅读

    USB充电用高效AC适配器USB充电用高效AC适配器

    USB充电用高效AC适配器USB充电用高效AC适配器
    发表于 09-15 14:29 23次下载
    USB充电用高效AC<b class='flag-5'>适配器</b>USB充电用高效AC<b class='flag-5'>适配器</b>

    光纤适配器是什么_光纤适配器的作用介绍

    本文开始介绍了什么是光纤适配器和光纤适配器的特点,其次分析了光纤适配器性能指标、分类以及常见的几种光纤连接器,最后阐述了光纤适配器的作用与应用范围。
    发表于 02-26 16:22 4.3w次阅读

    杂乱的适配器

    杂乱的适配器
    发表于 11-07 08:07 1次下载
    杂乱的<b class='flag-5'>适配器</b>!

    光纤适配器的作用 光纤适配器的特点

      光纤适配器是一种用于连接不同类型光纤接口的设备,它可以将不同类型的光纤接口之间进行转换,以实现不同类型网络设备之间的互联。光纤适配器通常包括光纤接口和光纤接口两种接口类型,可以将不同类型的光纤
    发表于 05-18 15:03 1893次阅读

    如何进行电源适配器的浪涌测试?

    如何进行电源适配器的浪涌测试? 电源适配器是供电的重要组成部分,它可以将交流电转换成直流电,为电子设备提供稳定的电源。然而,在电网中存在各种电力干扰,如浪涌电流、尖峰电压等。这些干扰可能对电源
    的头像 发表于 11-23 15:34 3160次阅读

    如何储存和运输电源适配器?如何选择具有节能功能的电源适配器

    如何储存和运输电源适配器?如何选择具有节能功能的电源适配器? 标题:电源适配器的储存与运输及选择节能功能的方法 引言: 电源适配器是我们日常生活中不可或缺的配件之一,无论是家庭、办公室
    的头像 发表于 11-24 14:08 2066次阅读

    什么是电源适配器的浪涌电流?浪涌电流对电源适配器有何影响?

    什么是电源适配器的浪涌电流?浪涌电流对电源适配器有何影响? 电源适配器的浪涌电流是指在电源启动或断开时,由于电源电压的突变引起的瞬态电流。这种瞬态电流瞬间达到峰值,然后逐渐衰减到稳定状态。 浪涌电流
    的头像 发表于 01-30 16:38 3270次阅读

    什么是电源适配器的转换效率?转换效率对电源适配器有何影响?

    什么是电源适配器的转换效率?转换效率对电源适配器有何影响?如何提高电源适配器的转换效率? 电源适配器的转换效率是指它所能输出的电能与输入的电能之间的转换效率。换句话说,转换效率越高,
    的头像 发表于 01-30 16:46 2935次阅读

    什么是蓝牙适配器?它有哪些性能特点?

    什么是蓝牙适配器?它有哪些性能特点? 蓝牙适配器是一种用于连接电脑、手机、平板电脑等设备的蓝牙设备。它的主要功能是将没有蓝牙功能的设备与支持蓝牙功能的设备进行连接和通信。蓝牙适配器可以
    的头像 发表于 02-02 14:56 4905次阅读

    适配器的电流大于原适配器可以吗

    适配器的电流大于原适配器是否可行,这是一个涉及到电子设备电源适配器使用和安全性的问题。 一、适配器的基本原理 适配器,也称为电源
    的头像 发表于 08-02 09:38 4405次阅读