如何快速低成本训练私有领域的 AIGC 模型?

已经收集了自有领域的数据集了,有没有什么快速的技术路径可以沿用,包括利用 Hugging Face 等开源模型进行训练,具体操作有没有什么可实操的文档…
关注者
1,634
被浏览
479,815
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

自从 MMEditing 诞生以来,它一直是许多图像超分、编辑和生成任务的首选算法库,帮助多个研究团队取得 10 余 项国际顶级赛事的胜利,支撑了 100 多个 GitHub 生态项目。经过 OpenMMLab 2.0 的迭代更新以及与 MMGeneration 的代码合并,MMEditing 已经成为了一个支持基于 GAN 和传统 CNN 的底层视觉算法的强大工具。

而今天,MMEditing 将拥抱生成式 AI(Generative AI),正式更名为 MMagic M ultimodal A dvanced, G enerative, and I ntelligent Creation),致力于打造更先进、更全面的 AIGC 开源算法库。

配合 MMEngine 出色的训练与实验管理支持,MMagic 将为广大研究者与 AIGC 爱好者们提供更加快捷灵活的实验支持,助力你的 AIGC 探索之旅。

在 MMagic 中,我们支持了针对 Stable Diffusion 的微调、图像编辑、图像及视频生成等任务。此外我们还支持 xFormers 等优化策略,提高训练与推理效率。

针对 Diffusion Model ,我们提供了以下“魔法”:

  • 支持基于 Stable Diffusion 与 Disco Diffusion 的图像生成
  • 支持 Dreambooth 以及 DreamBooth LoRA 等 Finetune 方法
  • 支持 ControlNet 进行可控性的文本到图像生成
  • 支持 xFormers 加速
  • 支持基于 MultiFrame Render 的视频生成
  • 支持通过 Wrapper 调用 Diffusers 的基础模型以及采样策略


为了提升你的“施法”效率 ,我们对“魔术回路”做了以下调整:

  • 对 33 种算法支持 Pytorch 2.0 加速
  • 支持快速推理接口
  • 重构 MultiValLoop 与 MultiTestLoop,同时支持生成类型指标(e.g. FID)与重建类型指标(e.g. SSIM) 的评测,同时支持一次性评测多个数据集
  • 重构 DataSample,支持 batch 维度的组合与拆分
  • 重构 DataPreprocessor,并统一各种任务在训练与推理时的数据格式

趣味玩法

1. 新增 Inferencer —— 几行代码快速实现模型推理

MMagic 中支持了快速推理接口,只需要指定模型,就可以快速调用:

from mmagic.apis import MMagicInferencer
# create an inferencer!
magician = MMagicInferencer(model_name='stable_diffusion')
text_prompts = 'A mecha robot in a favela in expressionist style'
result_out_dir = 'robot.png'
magician.infer(text=text_prompts, result_out_dir=result_out_dir)

也可以通过命令行进行 demo 推理:

python demo/mmediting_inference_demo.py --model-name eg3d \
    --model-config configs/eg3d/eg3d_cvt-official-rgb_afhq-512x512.py \
    --model-ckpt https://download.openmmlab.com/mmediting/eg3d/eg3d_cvt-official-rgb_afhq-512x512-ca1dd7c9.pth \
    --result-out-dir eg3d_output \  # 保存图片及视频 `eg3d_output`
    --interpolation camera \  # 对相机位置插值
    --num-images 100  # 插值过程中生成100张图像


2. 支持 MultiLoop —— 多种数据集一次性评测

为了方便用户一次性对多个数据集的多种指标进行评测,我们提供了 MultiValLoop MultiTestLoop

# 1. 使用 `MultiValLoop` 代替 MMEngine 中默认提供的 `ValLoop`
val_cfg = dict(type='MultiValLoop')
# 2. 配置针对不同数据集的评测指标
div2k_evaluator = dict(
    type='EditEvaluator',
    metrics=dict(type='SSIM', crop_border=2, prefix='DIV2K'))
set5_evaluator = dict(
    type='EditEvaluator',
    metrics=[
        dict(type='PSNR', crop_border=2, prefix='Set5'),
        dict(type='SSIM', crop_border=2, prefix='Set5'),
val_evaluator = [div2k_evaluator, set5_evaluator]
# 3. 配置数据集
div2k_dataloader = dict(...)
set5_dataloader = dict(...)
val_dataloader = [div2k_dataloader, set5_dataloader]

3. MMagic 支持通过 ControlNet 与多帧渲染 —— 炫酷的图像/长视频生成

from mmagic.apis import MMagicInferencer
magician = MMagicInferencer(model_name='controlnet_animation')
prompt = 'aa handsome man, silver hair, smiling, play basketball'
negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, ' + \
                  'extra digit, fewer digits, cropped, worst quality, low quality'