5分钟跑通SV3D:一张图片生成3D环绕视频
【免费下载链接】generative-modelsGenerative Models by Stability AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models
本文带你走通 Stability AI 的 generative-models 项目中 SV3D 的完整实战流程:给一张静态图片,SV3D 图生视频模型就能自动补全物体四周的视角,输出 21 帧的 360° 3D 环绕视频。不用多机位拍摄、不用 3D 建模,电商展示和社媒内容制作都能直接用。你只需要一台带 GPU 的机器,和一条命令。
🚀 装好环境,跑第一条命令
先克隆仓库并配置虚拟环境。项目官方在 Python 3.10 下测试过,依赖较多,建议单独建环境:
# 目的:克隆仓库并进入项目目录 git clone https://gitcode.com/GitHub_Trending/ge/generative-models cd generative-models # 目的:创建 python3.10 虚拟环境并安装依赖 python3.10 -m venv .generativemodels source .generativemodels/bin/activate pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip3 install -r requirements/pt2.txt pip3 install .再下载 SV3D_u 的权重文件。配置文件scripts/sampling/configs/sv3d_u.yaml里写死了从checkpoints/sv3d_u.safetensors加载,路径要对得上:
# 目的:安装下载工具并拉取 SV3D_u 权重 pip3 install -U "huggingface_hub[cli]" huggingface-cli download stabilityai/sv3d sv3d_u.safetensors --local-dir checkpoints然后直接跑仓库自带的示例图片,这条命令会加载模型、生成 21 帧环绕视频并写成一个 mp4:
python scripts/sampling/simple_video_sample.py \ --input_path assets/test_image.png \ --version sv3d_u跑完后去outputs/simple_video_sample/sv3d_u/看结果:000000.mp4就是 3D 环绕视频,旁边还存了一份输入图000000.jpg。仓库给的示例输入长这样,单主体、背景干净,最适合作为第一次运行的输入:
示例输入:单主体图片,SV3D 会围绕它生成一周环绕视角
🎯 sv3d_u 和 sv3d_p 两个版本怎么选
两个版本共用同一个入口脚本,区别只在--version参数:
| 版本 | 特点 | 适合场景 |
|---|---|---|
sv3d_u | 无相机条件,自动学出一条 360° 环绕路径 | 快速出片、效果预览 |
sv3d_p | 可用--elevations_deg/--azimuths_deg指定相机轨迹 | 需要精确控制视角走向 |
上面已经跑过sv3d_u。换成sv3d_p需要先下载对应权重,再用一个固定的仰角生成环绕视频:
# 目的:下载 SV3D_p 权重 huggingface-cli download stabilityai/sv3d sv3d_p.safetensors --local-dir checkpoints # 目的:按 10° 仰角生成环绕视频 python scripts/sampling/simple_video_sample.py \ --input_path assets/test_image.png \ --version sv3d_p \ --elevations_deg 10.0想自定义轨迹时,复用上面的命令再加--azimuths_deg:传入 21 个按升序排列的方位角(0~360),--elevations_deg也可以从单个数换成 21 个值的列表,逐帧控制俯仰。比如让前半程视角走得慢、后半程走得快:
python scripts/sampling/simple_video_sample.py \ --input_path assets/test_image.png \ --version sv3d_p \ --elevations_deg 10.0 \ --azimuths_deg "[0, 18, 36, 54, 72, 90, 108, 126, 144, 162, 180, 198, 216, 234, 252, 270, 288, 306, 324, 342, 360]"两个细节:--input_path除了单张图片,也可以传一个装满图片的文件夹,会按文件顺序逐张出片,方便批量处理。另外脚本会把输入原图直接替换到视频最后一帧,首尾相同,导出后可以直接做无缝循环。
SV3D 输出的环绕视角示意:主体外观在旋转过程中保持一致
⚙️ 参数怎么调才不翻车
可调参数都在scripts/sampling/simple_video_sample.py的sample()函数签名里,常用的四个:
--num_steps:采样步数,sv3d_u/sv3d_p默认 50。降到 20~30 出片快,细节会略糙,适合先试参数;定稿时调回 50。--seed:随机种子,默认 23。固定种子同一输入结果可复现,换种子可以抽不同效果。--decoding_t:一次解码多少帧,默认 14。这是显存消耗最大的参数,爆显存时先降它。--fps_id/--motion_bucket_id:告诉模型帧率和运动幅度,默认 6 和 127 是按训练分布设的,一般不用动。
调参顺序建议:先固定--seed,只用--num_steps找质量底线;显存告急再降--decoding_t;其他参数保持默认。
🧯 输入图和显存这两处坑
第一次跑失败大多出在输入图上,记住三条:
- 尺寸:模型只在 576×576 上训练过,输入不是这个尺寸会打印 WARNING,效果变差。建议先把主体裁成 576×576 正方形再喂进去。
- 背景:脚本会对非 RGBA 输入自动做 rembg 抠图(alpha matting),再把主体居中、白底补到 576×576。所以复杂背景的照片也能用,前提是主体能切干净;如果主体边缘复杂(毛发、透明件),可以先自己抠好导出 RGBA 图,脚本会跳过自动抠图。
- 数量:单物体效果最稳,多主体或文字密集的图容易出现形变。
显存不够时,SV3D 这条脚本没有分辨率参数(固定 576×576),省显存的唯一旋钮就是--decoding_t 1,出片会变慢但能跑起来。注意--remove_bg和--img_size是 SV4D 脚本的参数,SV3D 这条没有,别照搬网上的命令。
🎬 进阶玩法:从静态图到动态 4D 视频
单图环绕只解决"静止物体转圈"。如果你的素材是一段 21 帧的短视频(物体在动),SV4D 2.0 能在时间维度上再生成新视角,输出真正的 4D 新视角视频。典型用法是把这种视频放到商品详情页,让顾客不用转圈就能看到动态产品的各个侧面。
# 目的:下载 SV4D 2.0 权重 huggingface-cli download stabilityai/sv4d2.0 sv4d2.safetensors --local-dir checkpoints # 目的:用仓库自带示例视频跑一次推理 python scripts/sampling/simple_video_sample_4d2.py \ --input_path assets/sv4d_videos/camel.gif \ --output_folder outputs/sv4d2--input_path支持 gif、mp4 或帧图片文件夹。显存紧张时,给上面的命令追加--encoding_t=1 --decoding_t=1 --img_size=512;纯色背景的输入再加--remove_bg=True,抠图后效果更干净。
SV4D 2.0 输出:运动物体在环绕新视角下的 4D 视频示意
🔍 原理速览
- 先压缩再生成:输入图先被 VAE 在空间上压缩 8 倍成 4 通道 latent,视频 UNet 在 latent 空间里把 21 帧整段去噪,最后逐帧解码回像素,所以
--decoding_t才那么吃显存。 - 相机参数也是条件:
sv3d_p的脚本会把仰角、方位角换算成极坐标(polars_rad、azimuths_rad)作为条件喂给模型,每一帧都"知道"自己该从哪个角度拍;sv3d_u没有这个条件,环绕路径是模型自己学出来的。 - 时空混合注意力:
sgm/modules/video_attention.py里的VideoTransformerBlock对同一份特征分别做空间注意力和时间注意力,前者保证单帧内外观一致,后者保证帧间过渡平滑,这正是环绕一圈物体不变形的关键。
✅ 下一步行动
- 用
--version sv3d_p换一组自己的仰角序列跑一遍,观察视角走向如何变化。 - 把
assets/sv4d_videos/camel.gif用 SV4D 2.0 跑通,和单图环绕版本对比差异。 - 想边点边调参数,开可视化界面:
streamlit run scripts/demo/video_sampling.py(支持 SVD 与 SV3D),SV4D 另有 gradio 版python -m scripts.demo.gradio_app_sv4d。
【免费下载链接】generative-modelsGenerative Models by Stability AI项目地址: https://gitcode.com/GitHub_Trending/ge/generative-models
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考