AI实战营第二期 第十节 《MMagic 代码课》——笔记11

这篇具有很好参考价值的文章主要介绍了AI实战营第二期 第十节 《MMagic 代码课》——笔记11。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

AI实战营第二期 第十节 《MMagic 代码课》

MMagic (Multimodal Advanced, Generative, and Intelligent Creation) 是一个供专业人工智能研究人员和机器学习工程师去处理、编辑和生成图像与视频的开源 AIGC 工具箱。
AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

MMagic 允许研究人员和工程师使用最先进的预训练模型,并且可以轻松训练和开发新的定制模型。

MMagic 支持各种基础生成模型,包括:

  • 无条件生成对抗网络 (GANs)

  • 条件生成对抗网络 (GANs)

  • 内部学习

  • 扩散模型

  • 还有许多其他生成模型即将推出!

MMagic 支持各种应用程序,包括:

  • 图文生成

  • 图像翻译

  • 3D 生成

  • 图像超分辨率

  • 视频超分辨率

  • 视频插帧

  • 图像补全

  • 图像抠图

  • 图像修复

  • 图像上色

  • 图像生成

  • 还有许多其他应用程序即将推出!

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

【课程链接】https://www.bilibili.com/video/BV1gM4y1n7vP/
【讲师介绍】张子豪 OpenMMLab算法工程师

OpenMMLab 生成模型+底层视觉+AIGC+多模态 算法库 MMagic
MMagic主页:https://github.com/open-mmlab/mmagic
代码教程:https://github.com/TommyZihao/MMagic_Tutorials
中文文档:https://mmagic.readthedocs.io/zh_CN/latest/

【代码教程目录】
安装配置MMagic环境
黑白老照片上色
文生图-Stable Diffusion
文生图-Dreambooth
图生图-ControlNet

安装配置MMagic

安装Pytorch

!pip3 install install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html

安装MMCV和MMEngine环境

[2]

!pip3 install openmim
!mim install 'mmcv>=2.0.0'
!mim install 'mmengine'

安装MMagic

!mim install 'mmagic'
从源码安装MMagic
!rm -rf mmagic # 删除原有的 mmagic 文件夹(如有)
!git clone https://github.com/open-mmlab/mmagic.git # 下载 mmagic 源代码
import os
os.chdir('mmagic')
!pip3 install -e .

检查安装成功

# 检查 Pytorch
import torch, torchvision
print('Pytorch 版本', torch.__version__)
print('CUDA 是否可用',torch.cuda.is_available())

[

检查 mmcv

import mmcv
from mmcv.ops import get_compiling_cuda_version, get_compiler_version
print('MMCV版本', mmcv.__version__)
print('CUDA版本', get_compiling_cuda_version())
print('编译器版本', get_compiler_version())

检查 mmagic

import mmagic
print('MMagic版本', mmagic.__version__)
MMagic版本 1.0.2dev0

安装其它工具包

!pip install opencv-python pillow matplotlib seaborn tqdm -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install clip transformers gradio 'httpx[socks]' diffusers==0.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
!mim install 'mmdet>=3.0.0'

黑白照片上色

进入 MMagic 主目录

import os
os.chdir('mmagic')

下载样例图片

[2]

!wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20230613-MMagic/data/test_colorization.jpg -O test_colorization.jpg

运行预测

[3]
!python demo/mmagic_inference_demo.py
–model-name inst_colorization
–img test_colorization.jpg
–result-out-dir out_colorization.png

文生图-Stable Diffusion

from mmagic.apis import MMagicInferencer
sd_inferencer = MMagicInferencer(model_name='stable_diffusion')
text_prompts = 'A panda is having dinner at KFC'

text_prompts = 'A Persian cat walking in the streets of New York'

sd_inferencer.infer(text=text_prompts, low_cpu_mem_usage=True,result_out_dir='output/sd_res.png')

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

文生图-Dreambooth

新建文件夹data/dreambooth/imgs/


修改config/dreambooth/文件夹中的dreambooth-lora.py脚本
AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

dataset = dict(
    type='DreamBoothDataset',
    data_root='./data/dreambooth',
    # TODO: rename to instance
    concept_dir='imgs',
    prompt='a photo of gril',
    pipeline=pipeline)

然后执行命令:

!bash tools/dist_train.sh configs/dreambooth/dreambooth-lora.py 1

用训练好的模型做预测

from mmengine import Config

from mmagic.registry import MODELS
from mmagic.utils import register_all_modules

register_all_modules()
cfg = Config.fromfile('./mmagic/configs/dreambooth/dreambooth-lora.py')
dreambooth_lora = MODELS.build(cfg.model)

state = torch.load('mmagic/work_dirs/dreambooth-lora/iter_1000.pth')['state_dict']

def convert_state_dict(state):
    state_dict_new = {}
    for k, v in state.items():
        if '.module' in k:
            k_new = k.replace('.module', '')
        else:
            k_new = k
        if 'vae' in k:
            if 'to_q' in k:
                k_new = k.replace('to_q', 'query')
            elif 'to_k' in k:
                k_new = k.replace('to_k', 'key')
            elif 'to_v' in k:
                k_new = k.replace('to_v', 'value')
            elif 'to_out' in k:
                k_new = k.replace('to_out.0', 'proj_attn')
        state_dict_new[k_new] = v
    return state_dict_new
dreambooth_lora.load_state_dict(convert_state_dict(state))
dreambooth_lora = dreambooth_lora.cuda()
samples = dreambooth_lora.infer('side view of gril', guidance_scale=5)
samples['samples'][0]

图生图-ControlNet-Canny

导入工具包

import cv2
import numpy as np
import mmcv
from mmengine import Config
from PIL import Image

from mmagic.registry import MODELS
from mmagic.utils import register_all_modules

register_all_modules()

载入ControlNet模型

cfg = Config.fromfile('configs/controlnet/controlnet-canny.py')
controlnet = MODELS.build(cfg.model).cuda()

输入Canny边缘图

control_url = 'https://user-images.githubusercontent.com/28132635/230288866-99603172-04cb-47b3-8adb-d1aa532d1d2c.jpg'
control_img = mmcv.imread(control_url)
control = cv2.Canny(control_img, 100, 200)
control = control[:, :, None]
control = np.concatenate([control] * 3, axis=2)
control = Image.fromarray(control)

咒语Prompt

prompt ='Room with blue walls and a yellow ceiling.'

执行预测

output_dict = controlnet.infer(prompt, control=control)
samples = output_dict['samples']
for idx, sample in enumerate(samples):
    sample.save(f'sample_{idx}.png')
controls = output_dict['controls']
for idx, control in enumerate(controls):
    control.save(f'control_{idx}.png')

图生图-ControlNet-Pose

import mmcv
from mmengine import Config
from PIL import Image

from mmagic.registry import MODELS
from mmagic.utils import register_all_modules

register_all_modules()

载入ControlNet模型

cfg = Config.fromfile('configs/controlnet/controlnet-pose.py')
# convert ControlNet's weight from SD-v1.5 to Counterfeit-v2.5
cfg.model.unet.from_pretrained = 'gsdf/Counterfeit-V2.5'
cfg.model.vae.from_pretrained = 'gsdf/Counterfeit-V2.5'
cfg.model.init_cfg['type'] = 'convert_from_unet'
controlnet = MODELS.build(cfg.model).cuda()
# call init_weights manually to convert weight
controlnet.init_weights()

咒语Prompt

prompt = 'masterpiece, best quality, sky, black hair, skirt, sailor collar, looking at viewer, short hair, building, bangs, neckerchief, long sleeves, cloudy sky, power lines, shirt, cityscape, pleated skirt, scenery, blunt bangs, city, night, black sailor collar, closed mouth'

输入Pose图

control_url = 'https://user-images.githubusercontent.com/28132635/230380893-2eae68af-d610-4f7f-aa68-c2f22c2abf7e.png'
control_img = mmcv.imread(control_url)
control = Image.fromarray(control_img)
control.save('control.png')

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

执行预测

output_dict = controlnet.infer(prompt, control=control, width=512, height=512, guidance_scale=7.5)
samples = output_dict['samples']
for idx, sample in enumerate(samples):
    sample.save(f'sample_{idx}.png')
controls = output_dict['controls']
for idx, control in enumerate(controls):
    control.save(f'control_{idx}.png')

图生图-ControlNet Animation

方式一:Gradio命令行

!python demo/gradio_controlnet_animation.py

点击URL,打开Gradio在线交互式网站,上传视频,执行预测
方式二:MMagic API

# 导入工具包
from mmagic.apis import MMagicInferencer

# Create a MMEdit instance and infer
editor = MMagicInferencer(model_name='controlnet_animation')
# 指定 prompt 咒语
prompt = 'a girl, black hair, T-shirt, smoking, best quality, extremely detailed'
negative_prompt = 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'

# 待测视频
# https://user-images.githubusercontent.com/12782558/227418400-80ad9123-7f8e-4c1a-8e19-0892ebad2a4f.mp4
video = '../run_forrest_frames_rename_resized.mp4'
save_path = '../output_video.mp4'
# 执行预测
editor.infer(video=video, prompt=prompt, image_width=512, image_height=512, negative_prompt=negative_prompt, save_path=save_path)

训练自己的ControlNet

下载数据集

!rm -rf fill50k.zip fill50k
!wget https://huggingface.co/lllyasviel/ControlNet/blob/main/training/fill50k.zip
!unzip fill50k.zip >> /dev/null # 解压压缩包
!rm -rf fill50k.zip # 删除压缩包

训练

!bash tools/dist_train.sh configs/controlnet/controlnet-1xb1-demo_dataset 1
from mmagic.apis import MMagicInferencer
import matplotlib.pyplot as plt
sd_inferencer = MMagicInferencer(model_name='stable_diffusion')

import cv2
import numpy as np
import mmcv
from mmengine import Config
from PIL import Image

from mmagic.registry import MODELS
from mmagic.utils import register_all_modules

register_all_modules()
cfg = Config.fromfile('configs/controlnet/controlnet-canny.py')
controlnet = MODELS.build(cfg.model).cuda()
control_img = mmcv.imread('11.JPG')
control = cv2.Canny(control_img, 100, 200)
control = control[:, :, None]
control = np.concatenate([control] * 3, axis=2)
control = Image.fromarray(control)
plt.subplot(121)
plt.imshow(control_img)
plt.subplot(122)
plt.imshow(control)
plt.show()
prompt = 'Make this room full of warmth.'
output_dict = controlnet.infer(prompt, control=control)
samples = output_dict['samples']
for idx, sample in enumerate(samples):
    sample.save(f'sample_{idx}.png')
controls = output_dict['controls']
for idx, control in enumerate(controls):
    control.save(f'control_{idx}.png')

plt.subplot(121)
plt.imshow(control_img)
plt.subplot(122)
sample_0 = mmcv.imread('./sample_0.png')
plt.imshow(sample_0)
plt.show()

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划

AI实战营第二期 第十节 《MMagic 代码课》——笔记11,OpenMMLab,人工智能,笔记,原力计划文章来源地址https://www.toymoban.com/news/detail-627383.html

到了这里,关于AI实战营第二期 第十节 《MMagic 代码课》——笔记11的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI实战营第二期 第九节 《底层视觉与MMEditing》——笔记10

    本节内容 : 图像超分辨率 Super Resolution 基于卷积网络的模型 SRCNN 与 FSRCNN 损失函数 对抗生成网络 GAN 简介 基于 GAN 的模型 SRGAN 与 ESRGAN 视频超分辨率介绍 实践 MMEditing 1 图像超分辨率 : 根据从低分辨率图像重构高分辨率图像 。 将图像放大,变清晰 提高图像的分辨率 高分图像

    2024年02月09日
    浏览(36)
  • AI实战营第二期 第七节 《语义分割与MMSegmentation》——笔记8

    MMSegmentation 是一个基于 PyTorch 的语义分割开源工具箱。它是 OpenMMLab 项目的一部分。 main 分支代码目前支持 PyTorch 1.6 以上的版本。 代码链接:https://gitee.com/open-mmlab/mmsegmentation 统一的基准平台。我们将各种各样的语义分割算法集成到了一个统一的工具箱,进行基准测试。 模块

    2024年02月08日
    浏览(41)
  • OpenMMLab-AI实战营第二期-课程笔记-Class 1:开营仪式&OpenMMLab概述

    OpenMMLab 简介 why? 随着深度学习、计算机视觉等学科的发展,各大研究机构和公司陆续开源自己的深度学习框架,论文发表同时开源代码也成了行业内的习惯。 when? OpenMMLab诞生于2018年,是一个由中国开发者主导,有国际影响力的人工智能·计算机视觉开源算法体系。 相比之

    2024年02月07日
    浏览(49)
  • OpenMMLab-AI实战营第二期-课程笔记-Class 3:RTMPose关键点检测

    主讲人:张子豪(同济子豪兄)https://space.bilibili.com/1900783 课程地址:RTMPose关键点检测-安装MMDetection和MMPose_哔哩哔哩_bilibili MMPose主页:https://github.com/open-mmlab/mmpose 教程地址:TommyZihao/MMPose_Tutorials: Jupyter notebook tutorials for mmpose (github.com) 以三角板关键点检测场景为例,结合O

    2024年02月08日
    浏览(52)
  • 【OpenMMLab AI实战营第二期】目标检测与MMDetection

    目标检测的基本范式 划窗 使用卷积实现密集预测 锚框 多尺度检测与FPN 单阶段无锚框检测器选讲 RPN YOLO、SSD Focal Loss与RetinaNet FCOS YOLO系列选讲 什么是目标检测 目标检测:给定一张图片,用矩形框框出所有感兴趣物体同时预测物体类别 目标检测与图像分类区别 图像分类通常

    2024年02月08日
    浏览(56)
  • 【OpenMMLab】AI实战营第二期Day10:底层视觉与MMEditing

    本课程包含底层视觉和MMEditing两个部分。第一部分介绍图像超分、深度学习和网络训练的相关算法,第二部分介绍超像素卷积、无监督学习、卷积网络和空间注意机制,以及这些算法在视觉框架中的实践应用。 📷介绍计算机视觉里面一个重要的问题:图像超分辨率以及相关

    2024年02月09日
    浏览(42)
  • OpenMMLab-AI实战营第二期——5-1.语义分割与MMSegmentation

    视频链接:语义分割与MMSegmentation 好的教程:超详细!手把手带你轻松用 MMSegmentation 跑语义分割数据集 以及:超详细!带你轻松掌握 MMSegmentation 整体构建流程 案例代码:https://github.com/TommyZihao/MMSegmentation_Tutorials 2.1.1 按颜色 最简单的思路:按照颜色聚类,基于同一物体颜色

    2024年02月09日
    浏览(41)
  • OpenMMLab-AI实战营第二期——2-1.人体关键点检测与MMPose

    视频链接:B站-人体关键点检测与MMPose 关键点提取,属于模式识别 人体姿态估计的下游任务:行为识别(比如:拥抱。。) 下游任务:CG和动画,这个是最常见的应用 下游任务:人机交互(手势识别,依据收拾做出不同的响应,比如:HoloLens会对五指手势(3D)做出不同的反

    2024年02月11日
    浏览(43)
  • AI实战营第二期——第一次作业:基于RTMPose的耳朵穴位关键点检测

    根据中医的“倒置胎儿”学说,耳朵的穴位反映了人体全身脏器的健康,耳穴按摩可以缓解失眠多梦、内分泌失调等疾病。耳朵面积较小,但穴位密集,涉及耳舟、耳轮、三角窝、耳甲艇、对耳轮等三维轮廓,普通人难以精准定位耳朵穴位。 Labelme标注关键点检测数据集(子

    2024年02月08日
    浏览(45)
  • AI实战营:生成模型+底层视觉+AIGC多模态 算法库MMagic

    目录  环境安装 黑白照片上色 文生图-Stable Diffusion  文生图-Dreambooth 图生图-ControlNet-Canny 图生图-ControlNet-Pose 图生图-ControlNet Animation 训练自己的ControlNet           下载样例图    样例效果: 测试结果:  测试效果: 在数据集上训练Dreambooth, 数据集下载链接 用训练好的模型

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包