adcsr图像超分代码_MMEditing: 多任务图像视频编辑工具箱

2023-11-03

我们近期在 OpenMMLab 项目中开源了 MMEditing。这是一个图像和视频编辑的工具箱,它目前包含了常见的编辑任务,比如图像修复,图像抠图,超分辨率和生成模型。在编辑图像或者视频的时候,我们往往是需要组合使用以上任务的,因此我们将它们整理到一个统一的框架下,方便大家使用。

目前 MMEditing 的 repo 已经上线,欢迎大家点赞提 issue:

open-mmlab/mmediting​github.com

在具体介绍每一个子任务前,让我们先来看一下 MMEditing 的优势吧!

1. 统一的框架:我们设计了先进的框架来统一最常见的图像修复,图像抠图,超分辨率和生成模型这几个任务。用户可以在一个框架中方便地调用不同的算法和模型。

2. 灵活的模块化设计:用户能够基于这套框架灵活地增加新的功能和算法。

3. 丰富的模型和文档:下图中展示了我们支持的算法数目,要知道其中有不少算法是首次有完整的复现哦~我们也完善了文档(文档覆盖率高达90%以上)和入门材料,方便用户上手。

4. 高效的实现:MMEditing所有的训练包括 GAN 的对抗训练都是基于高效的分布式训练框架部署的,对于一些基础的操作单元,我们也相应地进行了优化。

强调一下,现在的 MMEditing 不仅仅是研究导向的框架,还是一个可以用于入门和教学的框架,在这里你可以看到 low-level vision 中常用的模型和基础的任务,每个模型也都被很好地拆解,方便大家上手探索其中的奥秘。

下面让我们一起来走进 MMEditing,进一步了解一下不同的任务。

Super-Resolution 超分辨率

超分辨率(简称超分),是将低分辨率图像放大到高分辨率图像,如下图,一只小狒狒经过 SR网络后,可以得到放大,变成一只“大”狒狒。

随着深度学习的兴起,早在2014年,香港中文大学多媒体实验室就提出了首个使用卷积神经网络解决超分辨率的模型——SRCNN。作为图像超分辨率工作,SRCNN 对后续计算机视觉的底层算法研究产生了重要影响。后续,各种各样的网络结构如雨后春笋般地冒了出来,比如VDSR,EDSR,SRResNet 等等; 还有追求视觉效果的 SRGAN, ESRGAN。

MMEditing把一些基本的超分算法,比如 SRCNN,EDSR,SResNet,SRGAN还有视频的 EDVR 算法都包括进去。之前 OpenMMLab 中的 MMSR 也有类似的功能,相比之下,MMEditing 使用了更好的框架设计,用上了 MMCV 和 MMDetection 在发展过程中的经验积淀。整个 MM 系列都采用了类似的框架,只要掌握了一种,就能够轻而易举地掌握其他任务的代码库。

Inpainting修复

Inpainting(图像修复)是图像编辑领域里面一项基础的任务,其主要目标是修复图像中的受损(污染)区域。如下图中,左边是原图,中间是受损区域示意图,你可以去除图像中的不想要的人物,或者是图像中杂乱的不规则的受损区域。然后经过 Inpainting 修复算法就得到最右边的图啦。

Inpainting 作为一项基础任务,现如今已经被广泛的应用到各种各样的场景,比如面部修复,背景填充以及视频编辑中。

之前传统的 Patch-Matching 算法可以通过图中已知区域的纹理来快速填补当前受损区域。随着深度学习的发展,越来越多的工作利用深度神经网络实现更好的图像修复效果。深度图像修复领域中,有许多经典的开创性的工作像 Global&Local、Partial Conv 以及 DeepFill 系列,他们作为深度图像修复的经典模型被广泛地应用到后来的研究工作当中。可是这些方法都没有官方的 PyTorch 实现,为了方便大家更好的研究和深入了解这些模型,我们在 MMEditing 中集成了这些算法的训练和测试功能。同时,我们对其中一些重要的模块进行了代码上的优化,以使其更加符合 PyTorch 的风格,甚至是更快的 GPU 计算,从而能够有更好的训练速度。

Matting抠像

抠像(Matting)问题是一个在计算机视觉研究领域有重要价值的研究课题,其在工业界也有非常重要的应用。

抠像是将前景从图片或者视频中与背景分离开来的问题,比如下图中,输入是左图,一位超级可爱的小姐姐在秀丽的风景前中,我们希望得到右边的小姐姐的抠像结果(b)。它和 segmentation分割的不同之处在于,matting 需要得到更精准的边缘(如头发)以及与背景的组合系数。

为了降低求解的难度,一种最常见的方式是引入用户输入的 trimap(如下图),来对图片进行简单的三分类。其中,图中的黑色为背景,白色为前景,灰色为未知区域。给定 trimap 后,我们只需要求解未知区域的抠图结果,这大大降低了求解的难度。

在 MMEditing 中,我们首次完整复现了 DIM(Deep Image Matting)在原论文中的性能。除此之外,MMEditing 还包含当前开源 Matting 模型中性能最好的 GCA Matting 模型,以及速度最快的 IndexNet Matting。

Generation生成模型

Generation,中文含义为“生成”。所谓生成,不同于其他图像编辑的任务,旨在创造新的图像。我们试图通过深度学习的方式,让神经网络成为创造者,产生新的信息。生成任务一般分为两种,非条件(unconditional)和条件(conditional)的生成。所谓非条件生成,主要是从潜在空间(latent space)中的噪声(noise)往图像域(image domain)进行转换,并试图近似相关边缘概率分布,产生逼真的图像;所谓条件生成,主要是从一个图像域映射到潜在空间,并进一步转换到另一个图像域。目前的MMEditing主要支持后者,即从一个图像域映射到另一个图像域,如分割的mask转换到真实图像、马转换到斑马等。后者的条件生成也更加符合目前图像编辑的主题。

而目前 MMEditing 支持的条件图像生成,又可以分为两种不同的设定。其中一种生成模型的训练数据中,包含成对的训练数据,被称为“成对图像到图像转换(paired image-to-image translation)”。这种设定一般生成任务的难度比较低,但对数据本身的要求比较高,生成效果一般比较良好。最经典的成对图像到图像转换的方法,名为 pix2pix。 它也是图像到图像转换领域开山鼻祖的文章,因此我们在这个版本中首先考虑对它进行实现,获得了与作者官方实现一致的结果。

另一种生成模型的训练数据中,仅包含非成对的训练数据,被称为“非成对图像到图像转换(unpaired image-to-image translation)”。这种设定一般对数据要求较低,很容易构建两个明确的图像域,但生成难度较大,生成效果会略微降低。提出非成对图像到图像转换问题,并首先给出解决方案(cycle-consistency)的方法,名为 CycleGAN。CycleGAN 作为最经典的非成对图像到图像转换的生成方法,我们在这个版本中同样首先考虑对它进行实现和效果对齐。

生成(Generation)任务通常比较困难,但向人们展示出了惊人的效果和广阔的研究前景。在未来 MMEditing 代码库的版本中,我们会考虑加入更多不同的生成设定,以及多种生成方法,让我们的代码库更加全面、丰富、强大。

结语

MMEditing 作为 OpenMMLab 的一员,后面会逐渐地完善,不断修改 bugs,持续添加新功能。欢迎大家一起来完善 MMEditing,共同贡献 OpenMMLab! 下面是 OpenMMLab 中的其他成员的介绍,后续会有更多重磅的 project 出现,希望大家持续关注我们的OpenMMLab 计划,并且参与其中哈。

陈恺:OpenMMLab 重磅升级:百花齐放春满园​zhuanlan.zhihu.com 陈恺:MMDetection V2.0:更快更强的通用目标检测平台​zhuanlan.zhihu.com 包小张:MMDetection3D:新一代通用3D目标检测平台​zhuanlan.zhihu.com 徐嘉瑞:MMSegmentation:标准统一的语义分割框架​zhuanlan.zhihu.com
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

adcsr图像超分代码_MMEditing: 多任务图像视频编辑工具箱 的相关文章

  • MFC学习笔记 — XP系统写文件失败问题

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要说
  • 层序输出二叉树

    package Leetcode import java util ArrayList import java util Arrays import java util LinkedList import java util Queue A
  • java.net.SocketException: Software caused connection abort: socket write error

    最近碰到一个莫名的BUG ClientAbortException java net SocketException Software caused connection abort socket write error at org ap
  • CUDA编程: GPU与CPU之间使用全局统一内存的完整代码及编译

    CUDA编程 GPU与CPU之间使用全局统一内存的完整代码及编译 最近碰到一个应用场景 需要从GPU访问host上创建的 一个很大的布隆过滤器 准确说是改进后的布谷鸟过滤器 由于GPU卡上的显存有限 把整个过滤器复制到GPU卡显然不可能 于
  • css grid随页面大小_基于VUE、echarts和Grid的大屏数据可视化实现技术

    简介 数据可视化技术是将把比较复杂 抽象的数据通过可视的技术以人们更易理解的形式展示出来 数据可视化技术促进了数据信息的传播和应用 数据可视化技术是抽象数据的具象表达 大屏数据可视化是以大屏为主要展示载体的数据可视化 目前市场上大屏设备有1
  • MySQL数据表查询

    作者介绍 一个有梦想 有理想 有目标的 且渴望能够学有所成的追梦人 学习格言 不读书的人 思想就会停止 狄德罗 个人主页 进入博主主页 专栏系列 进入MySQL知识专栏 欢迎小伙伴们访问到博主的文章内容 在浏览阅读过程发现需要纠正的地方 烦
  • 不同服务器的servlet之间使用url传输xml文件?,详解WEB应用的部署文件web.xml

    本文使用的服务器是Tomcat服务器 Web应用发布描述文件web xml是在Servlet规范中定义的 web xml存放在WEB INF 目录下 在分析web xml文档之前我想先说一下web xml中根元素各子元素的顺序问题 因为在w
  • vue组件内动态改meta.title浏览器头部提示信息

    前言 vue中我们经常见的是随着切换不同的页面可以修改页面上的meta title 但是还有另一种情况是我们要在组件内部改动他的提示信息 比如 我们封装了一个详情组件 然后需要每次进来的时候获取后台数据 然后根据数据来修改我们页面上的标题信
  • Python爬取京东商品信息-cookie登录、二次请求、来源检查

    Python爬虫 爬取京东商品 因为要教实验室的其他 小朋友 所以自己要在课余时间学下 Python 昨天突发奇想 之前在爬取淘宝的过程中免不了遇到问题 那么在爬取其他网站的时候也会遇到问题 俗话说 问题才是最好的老师 PS 编的 那么就不
  • C++的使用小教程7——类的静态成员

    C 的使用小教程7 类的静态成员 1 什么是静态成员 2 类的静态数据实例 3 类的静态函数实例 学习好幸苦 1 什么是静态成员 当我们声明一个类的成员为静态时 无论创建多少个类的对象 静态成员是共享的 我们可以在类的外部对静态成员进行初始
  • ue材质球就有hlsl代码面板,不需要按照迪士尼pbr自己推导,然后HLSL转GLSL,这样就可以把ue的效果转到GLSL上了。或者用shadertoy

    突然想起 ue材质编辑器就有HLSL代码面板 照抄就行 我去年用迪士尼套公式写到Osg是有问题的 原因就是参数设置不对 应该现在虚幻引擎编辑器里调试OK后 再传递 迪士尼PBR的附加代码还是不简练 应该直接抄UE
  • Python编译器及第三方库

    Python是一种解释型语言 因此没有直接的编译器 相反 Python解释器会逐行解析和执行源代码 然而 存在一些将Python代码转换为其他语言 如C或机器码 的工具 以提高执行速度 文件 url80 ctfile com f 25127
  • 课堂作业--物不知数

    物不知数 出自 孙子算经 题目如下 今有物不知其数 一一数之剩零 二二数之剩一 三三数之剩零 四四数之剩一 五五数之剩一 六六数之剩三 七七数之剩零 八八数之剩一 九九数之剩零 问物几何
  • BUUCTF Misc [ACTF新生赛2020]NTFS数据流 & john-in-the-middle & [ACTF新生赛2020]swp & 喵喵喵

    目录 ACTF新生赛2020 NTFS数据流 john in the middle ACTF新生赛2020 swp 喵喵喵 ACTF新生赛2020 NTFS数据流 下载文件 得到500个txt文件 提示了NTFS流隐写 所以使用NtfsSt
  • OpenLDAP学习笔记

    LDAP协议 目录是一组具有类似属性 以一定逻辑和层次组合的信息 常见的例子是通讯簿 由以字母顺序排列的名字 地址和电话号码组成 目录服务是一种在分布式环境中发现目标的方法 目录具有两个主要组成部分 第一部分是数据库 数据库是分布式的 且拥
  • C++运行栈与函数调用的执行

    1 运行栈工作原理 C 变量在运行时依靠地址加以区分 变量的定义全部写在函数以外 这样的变量叫做全局变量 变量的定义放在一个函数之内 这样的变量叫做局部变量 全局变量 在目标代码中都是用一个唯一确定的地址定位的 然而 对于全局变量却不能如此
  • extern和static对变量的作用

    一 extern对变量的作用 1 引言 在java中 我们都知道 定义在前的变量可以调用定义在后的变量 但是在c中 这是不被允许的 我们有以下几个解决途径 1 将变量c的定义提前 2 对变量c进行声明操作 3 进行重复定义操作 有点奇怪 这
  • Easy Code Mybatis-plus自用模板

    1 idea先安装插件 EasyCode 2 设置模板信息 通过设置找到插件 点击添加模板具体配置看如下 Controller 导入宏定义 define vm define init 设置表后缀 宏定义 setTableSuffix Con
  • EasyExcel--基础--03--读Excel

    EasyExcel 基础 03 读Excel 代码位置 https gitee com DanShenGuiZu learnDemo tree master easyExcel learn 1 依赖

随机推荐

  • Redis的embstr与raw编码方式不再以39字节为界了!

    版权声明 本文为博主原创文章 未经博主允许不得转载 https blog csdn net XiyouLinux Kangyijie article details 78045385 引言 从 中国软件杯 回来之后 一直对项目中没用到Red
  • redis支持的五种数据类型及其底层实现

    Redis对象类型简介 Redis是一种key value型数据库 其中 每个key和value都是使用对象表示的 比如 我们执行以下代码 其中的key是message 是一个包含了字符串 message 的对象 而value是一个包含了
  • java向文件写入的多种方式

    1 使用FileWriter 自己测试效率最高 try File file new File path 文件路径 FileWriter fileWriter new FileWriter file for int i 0 i lt 1000
  • 学计算机这么课最大的收获是啥,计算机课程学习心得范文

    计算机网络系统是一个集计算机硬件设备 通信设施 软件系统及数据处理能力为一体的 能够实现资源共享的现代化综合服务系统 计算机网络系统的组成可分为三个部分 即硬件系统 软件系统及网络信息系统 下面是学习啦小编为大家收集整理的计算机课程学习心得
  • 电流采样电路

    文章目录 前言 一 差分放大电路的优点 二 注意事项 总结 前言 有时候我们需要对电流进行采样 但是电流实际是不好测量的 最简单的方法就是把电流转化为电压 这里推荐一种比较简单的放大电路 差分放大电路 大家可以看模电课本 283 284页的
  • vue开发一些常遇见的问题

    1 显示富文本的内容 自动换行样式 文本超出 div class introduction div introduction font size 16px font weight 400 color 666666 letter spacin
  • html background属性

    background属性 属性解释 background属性是css中应用比较多 且比较重要的一个属性 它是负责给盒子设置背景图片和背景颜色的 background是一个复合属性 它可以分解成如下几个设置项 background color
  • 2022年陕西省职业院校技能大赛中职组网络安全赛项规程

    2022年陕西省职业院校技能大赛中职组 网络安全赛项规程 一 赛项名称 赛项名称 网络安全 赛项归属 信息技术类 二 竞赛目的 为检验中职学校网络信息安全人才培养成效 促进网络信息安全专业教学改革 培养大批既满足国家网络安全战略需要有具备世
  • 获取下拉框选中的值

    1 当Jquery是1 9以下版本 selector live change function 执行的代码 2 当Jquery版本大于1 9 body on change selector function 执行的代码 3 简单版 推荐使用
  • Spring MVC 配置HttpMessageConverter和Conversion-service的问题

    最近开始学习spring mvc 配置HttpMessageConverter来转换json和xml 以及配置conversion service来格式化数据 这个两个配置总不能都测试通过 要么是第一个转换json和xml出错 格式化数据通
  • 自定义注解的场景及其实现

    自定义注解的场景及其实现 自定义注解的场景 登陆 权限拦截 日志处理 以及各种Java框架 如Spring Mybatis Hibernate JUnit 实现方法 Java自定义注解通过运行期间靠反射获取注解 实际开发过程中 如果我们需要
  • Elasticsearch学习笔记4:Springboot整合ES

    一 编写ES配置类 import org springframework context annotation Bean import org springframework context annotation Configuration
  • 区块链入门必读(FISCO)

    关键概念 区块链是由多个学科交叉组合形成的一门技术 本章将阐述区块链相关的基本概念 对涉及的基本理论进行科普介绍 如果您已经对这些基本技术很熟悉 可以跳过本章 区块链是什么 区块链 blockchain 是在比特币之后提出的一个概念 在中本
  • Java的文件上传

    文件上传效果图 代码如下 package star july upload import java io File import java io IOException import java util List import java u
  • ChatGPT在电子健康记录和医疗信息查询中的应用前景如何?

    电子健康记录 EHRs 和医疗信息查询在现代医疗保健系统中起着至关重要的作用 它们有助于提高患者护理的质量 提高医疗保健的效率 减少错误 促进患者参与 并促进医学研究和数据驱动的决策 ChatGPT作为一种人工智能技术 在这一领域具有巨大的
  • 关于vtk中的vtkActor、vtkRenderer、vtkRenderWindow的设置

    1 正常显示vtk 需要 vtkActor 可以有多个 进行一些演员的处理 vtkRenderer 可以有多个 将vtkActor进行加入 vtkRenderWindow 只能有一个 将vtkRenderer进行加入 vtkRenderWi
  • js 分浏览器设置style属性

    http www cnblogs com jianshao810 archive 2010 06 20 1761120 html var cssText font weight bold color red 下面写法用于firefox类型浏
  • 史上最牛,接口自动化测试-yaml框架配置文件总结(超级详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • EasyUI项目之购物车功能

    前言 继续讲解EasyUi项目 网上书城 之加入购物车 清空购物车功能 码字不易 点个关注 转载请说明 开发工具 eclipse MySQL 目录 1 目标 2 代码展示 加入购物车 清空购物车 思维导图 实现购物车的三种方式 1 目标 加
  • adcsr图像超分代码_MMEditing: 多任务图像视频编辑工具箱

    我们近期在 OpenMMLab 项目中开源了 MMEditing 这是一个图像和视频编辑的工具箱 它目前包含了常见的编辑任务 比如图像修复 图像抠图 超分辨率和生成模型 在编辑图像或者视频的时候 我们往往是需要组合使用以上任务的 因此我们将