Python——生成AIGC图像

文章目录

一、背景介绍

二、效果图展示

三、完整代码

四、分步解释

五、实用建议

1)提示词技巧

2)性能优化

3)常见问题处理

4)扩展功能建议

六、注意事项

1. 硬件要求

2. 法律合规

3. 模型安全

一、背景介绍

AIGC(AI-Generated Content),即由人工智能生成的内容,涵盖了文本、图像、音频、视频等各种形式。通过深度学习、生成对抗网络(GAN)和扩散模型等技术,AIGC 能够生成高度逼真、具有艺术性的内容。

最初的AIGC主要集中于文本生成,如自动回复、新闻摘要等。但随着技术的进步,AIGC逐渐进入了图像、音频、视频生成等领域。尤其是近年来图像生成技术的突破,让AIGC成为了视觉内容生产的新利器,实现了从文本描述到图像生成的跨越。本文以当下最流行的Stable Diffusion深度学习模型,写一个python脚本实现AIGC图像。

二、效果图展示

三、完整代码

以下是一个使用 Stable Diffusion 模型生成图像的 Python 示例脚本,包含详细注释和解释:

# -*- coding: utf-8 -*-
"""
AIGC图像生成脚本(需要NVIDIA GPU和至少8GB显存)
使用 Hugging Face 的 diffusers 库实现
"""# 安装依赖(首次运行需要执行)
# pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
# pip install diffusers transformers accelerateimport torch
from diffusers import StableDiffusionPipeline
from datetime import datetimedef generate_image(prompt: str,                   # 生成提示词negative_prompt: str = None,   # 负面提示词save_path: str = "./outputs",  # 保存路径height: int = 512,             # 图像高度width: int = 512,              # 图像宽度steps: int = 20,               # 生成步数guidance_scale: float = 7.5,   # 提示词相关性num_images: int = 1            # 生成数量
):# 1. 创建模型管道pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",torch_dtype=torch.float16,  # 使用半精度减少显存占用safety_checker=None,        # 禁用安全检查(可生成更广泛内容)).to("cuda")# 2. 执行生成images = pipe(prompt=prompt,negative_prompt=negative_prompt,height=height,width=width,num_inference_steps=steps,guidance_scale=guidance_scale,num_images_per_prompt=num_images,).images# 3. 保存结果timestamp = datetime.now().strftime("%Y%m%d%H%M%S")for i, img in enumerate(images):filename = f"{save_path}/{timestamp}_{i}.png"img.save(filename)print(f"Saved: {filename}")return imagesif __name__ == "__main__":# 示例参数PROMPT = "A beautiful sunset over snow mountains, digital art, vibrant colors"NEGATIVE_PROMPT = "blurry, low quality, deformed"# 执行生成generated_images = generate_image(prompt=PROMPT,negative_prompt=NEGATIVE_PROMPT,steps=25,guidance_scale=8.0,num_images=2)

四、分步解释

  1. 依赖安装

    pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu118
    pip install diffusers transformers accelerate

  • torch:PyTorch深度学习框架

  • diffusers:Hugging Face的扩散模型库

  • transformers:自然语言处理模型

  • accelerate:分布式训练加速库

      2. 模型加载

pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",torch_dtype=torch.float16,safety_checker=None
).to("cuda")
  • 使用Hugging Face模型中心的官方Stable Diffusion v1-5版本

  • torch.float16:使用半精度浮点数,减少显存占用(需要RTX系列GPU)

  • safety_checker=None:禁用内容过滤器(允许生成更多类型内容)

     3. 核心参数说明

height=512, width=512    # 图像分辨率(推荐512x512或768x768)
num_inference_steps=20   # 生成步数(20-50,质量vs速度)
guidance_scale=7.5       # 提示词相关性(7-12,值越大越严格)
num_images_per_prompt=1  # 单次生成数量

    4. 生成过程

images = pipe(...).images
  • 实际执行文本到图像的扩散过程

  • 过程包含约20次迭代去噪步骤

  • 生成PIL格式图像列表

五、实用建议

1)提示词技巧

  • 使用英文描述(模型对英文理解更好)

  • 包含艺术风格描述(如:"digital art", "oil painting")

  • 添加质量关键词(如:"4k", "ultra detailed")

  • 示例:"A cyberpunk cityscape at night, neon lights, raining, 4k resolution, cinematic lighting"

2)性能优化

  • 降低分辨率(如:384x384)可减少显存需求

  • 设置num_images=1减少批次生成显存消耗

  • 使用torch.float16需要至少RTX 20系列显卡

3)常见问题处理

  • 显存不足:尝试减小分辨率或使用torch.float32

  • 生成速度慢:减少num_inference_steps到20以下

  • 图像质量差:增加guidance_scale到9-12之间

4)扩展功能建议

  1. 添加交互界面:

    # 可添加Gradio或Streamlit创建Web界面
    import gradio as grgr.Interface(fn=generate_image,inputs=[gr.Text(label="Prompt"),gr.Text(label="Negative Prompt"),gr.Slider(384, 768, value=512, step=64, label="Width"),gr.Slider(384, 768, value=512, step=64, label="Height")],outputs=gr.Gallery()
    ).launch()
  2. 使用新模板:

    # 更换模型名称即可使用不同版本
    "stabilityai/stable-diffusion-2-1"  # SD 2.1版本
    "stabilityai/stable-diffusion-xl-base-1.0"  # SDXL 1.0

     3. 添加高级功能:

from diffusers import ControlNetModel, StableDiffusionControlNetPipeline# 使用ControlNet添加姿势/边缘控制
controlnet = ControlNetModel.from_pretrained("lllyasviel/sd-controlnet-canny",torch_dtype=torch.float16
)
pipe = StableDiffusionControlNetPipeline(...)

六、注意事项

1. 硬件要求

  • 需要NVIDIA GPU(推荐RTX 3060 12GB以上)

  • 至少8GB显存(SDXL需要12GB以上)

  • 支持CUDA的显卡驱动

2. 法律合规

  • 遵守模型许可证(Stable Diffusion使用CreativeML Open RAIL-M)

  • 不得生成违法或侵权内容

  • 商业使用需注意版权问题

3. 模型安全

  • 不建议完全禁用safety_checker

  • 谨慎处理用户输入提示词

  • 添加内容审核机制(针对生产环境)

建议在Jupyter Notebook或Colab中测试运行,首次执行需要下载约5GB的模型文件。可通过缓存机制(设置cache_dir参数)优化重复加载体验。

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

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

相关文章

多任务(20250210)

1. 进程的概念 (1) 程序:是一段存放在外存中代码的集合(静态的) (2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的) 2. 如何实现多任务 Linux中,通过进程、线性实现多任务 3. 进程 正在执行的程序(动态),需…

【2025最新版】Chrome谷歌浏览器如何能恢复到之前的旧版本

背景 今天程序突然出了bug,无法自动测试了,显示Chrome版本不匹配,一看,Chrome居然在我已经关闭升级的情况下,又给我升级了,然后就悲剧了,我的代码不能用了。 于是,做了以下几步&…

解决OpenEuler系统修改句柄无效的问题

本文测试基于OpenEuler的操作系统,比如BC-Linux。 想要使修改文件句柄(即最大打开文件数)永久生效,通常需要编辑 /etc/security/limits.conf 文件。但可能出现修改了文件之后,并未生效的情况,下面就介绍下可…

自制AirTag,支持安卓/鸿蒙/PC/Home Assistant,无需拥有iPhone

苹果的AirTag很贵,虽然某强北有平价代替品,但是仍需要苹果设备才能绑定,才能查看位置。不支持安卓/鸿蒙/PC,也不支持集成到Home Assistant中。 AirTag 的原理 每个AirTag都会发送一个蓝牙信号,其可以被临近的苹果设备…

双重差分学习笔记

双重差分适用的研究场景: 研究某项政策或者冲击造成的影响 例如,某某小学在2024.12.12日颁布了小红花激励措施,我们要研究这项措施对学生成绩的影响,此时,就可以使用双重差分模型。 双重差分适用的数据类型&#xf…

python入门笔记5-集合与字典

元组 Python 的元组(tuple,简写为tup)与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号​()​,列表使用方括号​[]​。 好处就是节省内存。 集合 集合是无序、不重复元素的容器。 用 {} 或 set() 创建…

DevOps自动化部署详解:从理念到实践

在软件开发日益快速迭代的今天,如何以高效、稳定且可重复的方式将代码变更从开发环境自动部署到生产环境成为企业竞争的重要因素。DevOps 正是在这一背景下应运而生,它打破开发、测试、运维之间的壁垒,通过自动化工具和流程,实现持…

Python 将PPT幻灯片和形状转换为多种图片格式(JPG, PNG, BMP, SVG, TIFF)

目录 安装所需的库 使用Python将PowerPoint幻灯片转换为JPG、PNG和BMP图片 按实际尺寸将幻灯片保存为图片 按自定义尺寸将幻灯片保存为图片 使用Python将PowerPoint幻灯片转换为SVG图片 使用Python将PowerPoint幻灯片转换为多页TIFF图片 使用Python将PowerPoint幻灯片中…

【设计模式】【创建型模式】工厂方法模式(Factory Methods)

👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…

基于STM32的智能工业设备健康监测系统

1. 引言 工业设备故障导致的生产停滞问题日益突出,传统人工巡检方式效率低且难以捕捉早期隐患。本文设计了一款基于STM32的智能工业设备健康监测系统,通过振动分析、温度监测与声纹识别技术,实现设备状态实时评估、故障预警与维护决策支持&a…

第4章:在LangChain中如何实现响应式流(Response Streaming)

文章介绍了 LangChain4j 中的 响应流式传输(Response Streaming) 功能,展示了如何通过低层次的 LLM(大语言模型)API 实现逐个令牌(token)的流式响应。 响应式流(Response Streaming&…

旧手机热点无法提供ipv6解决方法(emui 8 热点提供ipv6)

旧手机热点无法提供ipv6解决方法 手机:荣耀8x 系统版本: EMUI 8 网络:移动流量卡 解决方案 设置-》无线和网络-》移动网络-》接入点名称(APN)-》cmiot 修改 APN协议: IPv4/IPv6 修改 APN漫游协议: IPv4/IPv6

Memcached和redis对比了解

1.介绍 Memcached 是一个高性能、分布式的内存缓存系统,用于加速动态 Web 应用程序,减少数据库负载。它的核心功能是将数据存储在内存中,并通过基于键值对(Key-Value)的方式快速读取数据。 Redis 和 Memcached 选择建…

mysql之如何获知版本

你可以通过在 MySQL 命令行客户端执行简单的 SQL 查询来获取 MySQL 的版本信息。以下是获取 MySQL 版本的常见方法: 使用 SELECT VERSION(); 查询: SELECT VERSION();执行这个查询后,MySQL 会返回一个字符串,其中包含了 MySQL 服…

SOME/IP--协议英文原文讲解9

前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2.1.4 T…

汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常

故障现象  一辆2010款路虎揽胜车,搭载5.0 L发动机,累计行驶里程约为16万km。车主反映,接通空调开关后,有时出风忽大忽小,有时不出风,有时要等2 min左右才出风;有时两三天出现一次,…

【SQL】SQL多表查询

多表查询案例联系点击此处 🎄概念 一般我们说的多表查询都涉及外键和父子表之间的关系。比如一对多:一般前面指的是父表后面指的是子表。 ⭐分类 一对多(多对一) 多对多 一对一 ⭐一对多 📢案例:部门与员工的关系 📢关系&…

HTML/CSS中后代选择器

1.作用:选中指定元素中,符合要求的后代元素. 2.语法:选择器1 选择器2 选择器3 ...... 选择器n(使用空格隔开) 3.举例: /* 选中ul中的所有li */ul li{color: red;}/* 选中类名为subject元素中的所有li */.subject li{color: blue;}/* 选中类名为subject元素中的所有类名为f…

Spring-GPT智谱清言AI项目(附源码)

一、项目介绍 本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…

GPT-SoVITS更新V3 win整合包

GPT-SoVITS 是由社区开发者联合打造的开源语音生成框架,其创新性地融合了GPT语言模型与SoVITS(Singing Voice Inference and Timbre Synthesis)语音合成技术,实现了仅需5秒语音样本即可生成高保真目标音色的突破。该项目凭借其开箱…