一个全面的 AI 多媒体处理项目,支持文本生成图片/视频、图片生成图片/视频、视频生成视频,以及图片/视频识别功能。项目采用由简入深的设计,从最基础的示例到高级参数控制,帮助用户逐步学习和使用 AI 多媒体技术。
- 文本生成图片(Text-to-Image):根据文字描述生成图片
- 文本生成视频(Text-to-Video):根据文字描述生成视频
- 图片生成图片(Image-to-Image):基于输入图片和文字描述生成新图片
- 图片生成视频(Image-to-Video):基于输入图片生成视频
- 视频生成视频(Video-to-Video):基于输入视频和文字描述生成新视频
- 图片识别(Image Recognition):图片分类和目标检测
- 视频识别(Video Recognition):视频分类和目标检测
- 由简入深:从最基础的示例到高级参数控制
- 参数可调:支持多种参数精细控制生成效果
- 易于使用:清晰的代码结构和详细的注释
- 专业实现:使用 Hugging Face Diffusers、Transformers 等库,稳定可靠
- 模块化设计:按功能模块组织,便于维护和扩展
- Python 3.8+
- CUDA 11.8+(可选,用于 GPU 加速,CPU 也可运行但速度较慢)
- 至少 8GB 内存(推荐 16GB+)
- 至少 20GB 可用磁盘空间(用于下载模型)
- 视频处理功能需要更多内存和存储空间
git clone <repository-url>
cd aipicture# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txt# 方式1: 运行验证脚本(推荐)
python verify_project.py
# 方式2: 手动验证
python -c "import torch; print(f'PyTorch版本: {torch.__version__}'); print(f'CUDA可用: {torch.cuda.is_available()}')"最简单的开始方式,交互式菜单引导:
python quick_start.py这将显示一个菜单,你可以选择要运行的功能。
# 基础版本
python modules/text_to_image/01_basic_text_to_image.py
# 进阶版本
python modules/text_to_image/02_advanced_text_to_image.py# 基础版本
python modules/image_to_image/01_basic_image_to_image.py
# 进阶版本
python modules/image_to_image/02_advanced_image_to_image.py# 基础版本
python modules/text_to_video/01_basic_text_to_video.py
# 进阶版本
python modules/text_to_video/02_advanced_text_to_video.py# 基础版本
python modules/image_to_video/01_basic_image_to_video.py
# 进阶版本
python modules/image_to_video/02_advanced_image_to_video.py# 基础版本
python modules/video_to_video/01_basic_video_to_video.py
# 进阶版本
python modules/video_to_video/02_advanced_video_to_video.py# 基础版本
python modules/image_recognition/01_basic_image_recognition.py
# 进阶版本
python modules/image_recognition/02_advanced_image_recognition.py# 基础版本
python modules/video_recognition/01_basic_video_recognition.py
# 进阶版本
python modules/video_recognition/02_advanced_video_recognition.py运行完整功能演示:
python 05_comprehensive_example.pyaipicture/
├── README.md # 项目说明文档(本文件)
├── USAGE_GUIDE.md # 详细使用指南
├── requirements.txt # 项目依赖
├── config.py # 配置文件
├── utils.py # 工具函数
│
├── quick_start.py # 快速开始脚本(推荐新手使用)
├── 05_comprehensive_example.py # 综合示例:完整功能演示
│
├── modules/ # 功能模块目录
│ ├── text_to_image/ # 文本生成图片模块
│ │ ├── __init__.py
│ │ ├── 01_basic_text_to_image.py
│ │ └── 02_advanced_text_to_image.py
│ │
│ ├── text_to_video/ # 文本生成视频模块
│ │ ├── __init__.py
│ │ ├── 01_basic_text_to_video.py
│ │ └── 02_advanced_text_to_video.py
│ │
│ ├── image_to_image/ # 图片生成图片模块
│ │ ├── __init__.py
│ │ ├── 01_basic_image_to_image.py
│ │ └── 02_advanced_image_to_image.py
│ │
│ ├── image_to_video/ # 图片生成视频模块
│ │ ├── __init__.py
│ │ ├── 01_basic_image_to_video.py
│ │ └── 02_advanced_image_to_video.py
│ │
│ ├── video_to_video/ # 视频生成视频模块
│ │ ├── __init__.py
│ │ ├── 01_basic_video_to_video.py
│ │ └── 02_advanced_video_to_video.py
│ │
│ ├── image_recognition/ # 图片识别模块
│ │ ├── __init__.py
│ │ ├── 01_basic_image_recognition.py
│ │ └── 02_advanced_image_recognition.py
│ │
│ └── video_recognition/ # 视频识别模块
│ ├── __init__.py
│ ├── 01_basic_video_recognition.py
│ └── 02_advanced_video_recognition.py
│
├── outputs/ # 输出目录
│ ├── images/ # 生成的图片输出
│ │ ├── basic_text_to_image/
│ │ ├── advanced_text_to_image/
│ │ ├── basic_image_to_image/
│ │ ├── advanced_image_to_image/
│ │ └── ...
│ └── videos/ # 生成的视频输出
│ ├── basic_text_to_video/
│ ├── advanced_text_to_video/
│ └── ...
│
└── examples/ # 示例文件目录
├── images/ # 示例图片
└── videos/ # 示例视频
from modules.text_to_image import AdvancedTextToImage
generator = AdvancedTextToImage()
# 生成一张图片
generator.generate(
prompt="a beautiful sunset over the ocean, peaceful, serene",
negative_prompt="blurry, low quality, distorted",
num_inference_steps=50,
guidance_scale=7.5,
output_name="sunset_ocean"
)from modules.text_to_video import AdvancedTextToVideo
generator = AdvancedTextToVideo()
# 生成一个视频
generator.generate(
prompt="a beautiful sunset over the ocean, peaceful, serene",
num_frames=16,
fps=8,
output_name="sunset_video"
)from modules.image_to_image import AdvancedImageToImage
generator = AdvancedImageToImage()
# 将图片转换为油画风格
generator.generate(
image_path="examples/images/input.jpg",
prompt="oil painting style, artistic, detailed",
strength=0.7,
output_name="oil_painting"
)from modules.image_to_video import AdvancedImageToVideo
generator = AdvancedImageToVideo()
# 根据图片生成视频
generator.generate(
image_path="examples/images/input.jpg",
num_frames=14,
fps=7,
motion_bucket_id=127,
output_name="image_to_video"
)from modules.video_to_video import AdvancedVideoToVideo
generator = AdvancedVideoToVideo()
# 将视频转换为动画风格
generator.generate(
video_path="examples/videos/input.mp4",
prompt="anime style, vibrant colors, detailed",
strength=0.75,
num_frames=30,
fps=8,
output_name="anime_video"
)from modules.image_recognition import AdvancedImageRecognition
recognizer = AdvancedImageRecognition()
# 图片分类
results = recognizer.classify("examples/images/test.jpg", top_k=5)
for label, confidence in results:
print(f"{label}: {confidence:.2f}%")
# 目标检测
detections = recognizer.detect("examples/images/test.jpg", confidence_threshold=0.5)
for det in detections:
print(f"{det['label']}: {det['confidence']:.2f}%")from modules.video_recognition import AdvancedVideoRecognition
recognizer = AdvancedVideoRecognition()
# 视频分类
results = recognizer.classify("examples/videos/test.mp4", sample_frames=10, top_k=5)
for result in results:
print(f"{result['label']}: {result['percentage']:.1f}%")
# 视频目标检测
detections = recognizer.detect("examples/videos/test.mp4", sample_frames=10)
for result in detections:
print(f"{result['label']}: {result['detections']} 次检测")| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
prompt |
str | 必需 | 正面提示词,描述想要生成的内容 |
negative_prompt |
str | None | 负面提示词,描述不想要的内容 |
num_inference_steps |
int | 50 | 推理步数(20-100),越多质量越好但越慢 |
guidance_scale |
float | 7.5 | 引导强度(1-20),越高越遵循提示词 |
height |
int | 512 | 图片高度(必须是8的倍数) |
width |
int | 512 | 图片宽度(必须是8的倍数) |
seed |
int | None | 随机种子,用于复现结果 |
strength |
float | 0.75 | 修改强度(0.0-1.0),仅用于图片/视频生成 |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
num_frames |
int | 16 | 视频帧数(8-32),越多越流畅但越慢 |
fps |
int | 8 | 帧率(4-12),影响播放速度 |
motion_bucket_id |
int | 127 | 运动强度(1-255),仅用于图片生成视频 |
height |
int | 256 | 视频高度(必须是8的倍数) |
width |
int | 256 | 视频宽度(必须是8的倍数) |
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
top_k |
int | 5 | 返回前k个最可能的类别 |
confidence_threshold |
float | 0.5 | 置信度阈值(0.0-1.0) |
sample_frames |
int | 10 | 采样帧数(仅用于视频识别) |
-
具体描述:使用具体、详细的描述,而不是抽象概念
- ✅ 好:
"a majestic lion standing on a rock at sunset, golden hour lighting, photorealistic, detailed fur" - ❌ 差:
"a lion"
- ✅ 好:
-
使用风格关键词:添加艺术风格、质量描述
- 风格:
"oil painting","anime style","cyberpunk","watercolor" - 质量:
"high quality","detailed","4k","professional"
- 风格:
-
负面提示词:使用负面提示词排除不想要的内容
- 常见负面词:
"blurry","low quality","distorted","ugly","deformed"
- 常见负面词:
-
推理步数(num_inference_steps)
- 20-30 步:快速预览
- 50 步:平衡质量和速度(推荐)
- 80-100 步:最高质量(较慢)
-
引导强度(guidance_scale)
- 1-5:创意性强,但可能偏离提示词
- 7-9:平衡(推荐)
- 10-20:严格遵循提示词,但可能过于生硬
-
修改强度(strength,仅图片/视频生成)
- 0.3-0.5:轻微修改,保持原图结构
- 0.6-0.8:中等修改(推荐)
- 0.9-1.0:大幅修改,接近重新生成
-
视频帧数(num_frames)
- 8-14 帧:快速生成,适合简单动画
- 16-24 帧:平衡质量和速度(推荐)
- 25-32 帧:高质量,流畅动画(较慢)
- 使用 GPU:如果有 NVIDIA GPU,确保安装了 CUDA 版本的 PyTorch
- 启用注意力切片:代码已自动启用,可节省内存
- 使用 float16:在 GPU 上使用 float16 可节省内存并加速
- 批量处理:如果需要处理多张图片/视频,考虑批量处理
- 视频处理:视频处理非常耗时,建议先处理少量帧测试效果
A: 模型首次运行会自动从 Hugging Face 下载。如果下载慢,可以:
- 使用镜像站点
- 手动下载模型到本地
- 使用 VPN 或代理
A:
- 使用 CPU 模式(虽然慢但内存占用小)
- 减小图片/视频尺寸
- 减少推理步数
- 减少视频帧数
- 确保已启用注意力切片(代码已自动处理)
A:
- 增加推理步数(50-80 步)
- 使用更详细的提示词
- 添加负面提示词排除不想要的内容
- 尝试不同的随机种子
A:
- 减少视频帧数(8-14 帧)
- 使用较小的视频尺寸
- 使用 GPU 加速
- 考虑使用更快的模型
A:
- 考虑使用 GPU(NVIDIA GPU + CUDA)
- 减少推理步数
- 使用较小的图片/视频尺寸
- 考虑使用云端 GPU 服务
- PyTorch: 深度学习框架
- Diffusers: Hugging Face 的扩散模型库
- Transformers: 预训练模型库
- Pillow: 图像处理
- OpenCV: 视频处理
- MoviePy: 视频编辑
- YOLO: 目标检测
- Stable Diffusion: 图片生成模型
- Stable Video Diffusion: 视频生成模型
本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request!
如有问题或建议,请提交 Issue。
-
初学者:
- 运行
quick_start.py体验所有功能 - 阅读基础示例代码(01_*.py)
- 尝试修改提示词,观察效果
- 运行
-
进阶用户:
- 学习进阶示例代码(02_*.py)
- 阅读
USAGE_GUIDE.md了解参数调优 - 尝试不同的参数组合
-
高级用户:
- 研究
05_comprehensive_example.py的完整工作流 - 自定义和扩展功能
- 优化性能和使用体验
- 研究
注意:首次运行需要下载模型(约 10-20GB),请确保网络连接稳定并有足够的磁盘空间。视频生成功能需要更多时间和资源,请耐心等待。