全新 AIGC 开源库 MMagic :引领 Diffusion Model,超越编辑,释放魔力!
自从 MMEditing 诞生以来,它一直是许多图像超分、编辑和生成任务的首选算法库,帮助多个研究团队取得 10 余项国际顶级赛事的胜利,支撑了 100 多个 GitHub 生态项目。经过 OpenMMLab 2.0 的迭代更新以及与 MMGeneration 的代码合并,MMEditing 已经成为了一个支持基于 GAN 和传统 CNN 的底层视觉算法的强大工具。
而今天,MMEditing 将拥抱生成式 AI(Generative AI),正式更名为 MMagic(Multimodal Advanced, Generative, and Intelligent Creation),致力于打造更先进、更全面的 AIGC 开源算法库。

MMagic 体验网址: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 中支持了快速推理接口,只需要指定模型,就可以快速调用:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLfrom 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 推理:
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLpython 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
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXML# 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 与多帧渲染
—— 炫酷的图像 / 长视频生成
Plain textANTLR4BashCC#CSSCoffeeScriptCMakeDartDjangoDockerEJSErlangGitGoGraphQLGroovyHTMLJavaJavaScriptJSONJSXKotlinLaTeXLessLuaMakefileMarkdownMATLABMarkupObjective-CPerlPHPPowerShell.propertiesProtocol BuffersPythonRRubySass (Sass)Sass (Scss)SchemeSQLShellSwiftSVGTSXTypeScriptWebAssemblyYAMLXMLfrom mmagic.apis import MMagicInferencermagician = 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!
点击这里可了解有关 OpenMMLab 和 MMagic 的更多情报。