自从 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 开源算法库 。
https://github.com/open-mmlab/mmagic
(欢迎体验,文末点击阅读原文可直达)
配合 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,并统一各种任务在训练与推理时的数据格式
趣味玩法
新增 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张图像
支持 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]
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'
# download video from 'https://download.openmmlab.com/mmediting/data/basketball.mp4'
video = 'basketball.mp4'
save_path = '/path/to/your/output/video.mp4'
magician.infer(video=video, prompt=prompt, negative_prompt=negative_prompt, save_path=save_path)
科研累了?打打篮球活动一下!
各种风格都支持嗷!
SAM + MMagic = Generate Anything!
当下流行的 SAM(segment anything model)也可以为 MMagic 提供更多加持!想制作自己的动画,可以移步至 OpenMMLab PlayGround:https://github.com/open-mmlab/playground/blob/main/mmediting\_sam/README.md
使用 MMagic,体验更多生成的魔力!让我们一起开启超越编辑的新纪元!More than Editing, Unlock the Magic!
https://github.com/open-mmlab/mmagic
(欢迎体验,文末点击阅读原文可直达)
欢迎大家在评论区说出你想要 MMagic 支持的算法和功能,也许不久就能跟大家见面哦!
目前 MMagic SIG 正在招募中,欢迎扫码报名,与我们共建更先进、更全面的 AIGC 开源算法库!
[复旦 MOSS 开源,主要设计者首次直播,开发历程独家分享!
2023-04-24
[首次线下大集合|多模态 AI 开发者聚会@深圳站
2023-04-24
