DreamClear:字节跳动开源了高性能图像修复技术,中科院加持,商业免费使用

哇,字节跳动开源了DreamClear项目,采用的是Apache-2.0开源协议,可以商用,并且用户可以自由地使用、复制、修改和分发该软件,甚至可以用于私有项目中。这对于开发者和企业来说是个好消息,因为它们可以利用这项技术来提升自己的产品和服务,同时还能享受到开源社区带来的协作和创新优势。

1. 它是什么

DreamClear 是一项由中国科学院自动化研究所和字节跳动共同开发的高性能图像修复技术,专注于隐私安全的数据集管理。这项技术主要面向图像质量提升和细节恢复等应用场景,通过利用先进的深度学习模型,将低质量(LQ)图像恢复为高质量(HQ)图像,具有优秀的性能表现。该技术不仅考虑了图像恢复的效果,还注重确保数据隐私,从而符合现代社会对隐私保护的需求。

2. 功能特色

  • 图像恢复:DreamClear 能够将低质量图像恢复为高质量图像,提升图像的细节和质量。
  • 隐私保护:在进行图像恢复的同时,DreamClear 还考虑到了数据隐私的保护,确保在使用过程中用户的隐私安全。
  • 深度学习模型:利用深度学习技术,DreamClear 能够智能地识别和修复图像中的问题,提高恢复效果。
  • 开源:DreamClear 已经开源,可以通过 GitHub 访问其代码和相关文档,便于开发者和研究人员进一步研究和应用。

3. 定价信息或价格

DreamClear 作为一个开源项目,对所有用户都是免费的。用户可以自由下载和使用其代码,无需支付任何费用。

4. 如何使用

DreamClear 的开源地址见:DreamClear使用指南 | MeoAI AI技术。您可以通过这个链接查看 GitHub 仓库和带注释的代码,以及模型的链接地址,获取更多详细信息和使用指南。

  • 访问 GitHub:用户可以直接访问 DreamClear 的 GitHub 仓库,克隆或下载项目代码。
依赖项和安装

1.克隆此仓库并导航到DreamClear文件夹:

2.创建Conda环境并安装包:

3.下载预训练模型(所有模型都可以在Huggingface上方便地下载):

🎰训练

I - 准备训练数据 类似于SeeSR,我们预先准备了HQ-LQ图像对,用于IR模型的训练。运行以下命令以生成训练的配对数据:

# 使用make_paired_data.py脚本生成训练数据对
python3 tools/make_paired_data.py \
  --gt_path gt_path1 gt_path2 ... \ 
  --save_dir /path/to/save/folder/ \
  --epoch 1 # 指定生成配对数据的轮数

生成配对数据后,您可以使用MLLM(例如,LLaVA)为HQ图像生成详细的文本提示。然后您需要使用T5提取文本特征,以节省训练时间。运行:

# 使用extract_t5_features.py脚本提取T5特征
python3 tools/extract_t5_features.py \
  --t5_ckpt /path/to/t5-v1_1-xxl \
  --caption_folder /path/to/caption/folder \
  --save_npz_folder /path/to/save/npz/folder

最终,训练数据集的目录结构应如下所示:

training_datasets_folder/
└── gt
    └── 0000001.png # GT图像, 分辨率为(1024, 1024, 3)
    └── ...
└── sr_bicubic
    └── 0000001.png # LQ图像加上双三次上采样,分辨率为(1024, 1024, 3)
    └── ...
└── caption
    └── 0000001.txt # 标题文件(训练中未使用)
    └── ...
└── npz
    └── 0000001.npz # T5特征文件
    └── ...

II - 训练DreamClear 运行以下命令以默认设置训练DreamClear:

# 使用torch.distributed.launch启动分布式训练
python3 -m torch.distributed.launch --nproc_per_node=8 --nnodes=... --node_rank=... --master_addr=... --master_port=... \
  train_dreamclear.py configs/DreamClear/DreamClear_Train.py \
  --load_from /path/to/PixArt-XL-2-1024-MS.pth \
  --vae_pretrained /path/to/sd-vae-ft-ema \
  --swinir_pretrained /path/to/general_swinir_v1.ckpt \
  --val_image /path/to/RealLQ250/lq/val_image.png \
  --val_npz /path/to/RealLQ250/npz/val_image.npz \
  --work_dir experiments/train_dreamclear

请在configs/DreamClear/DreamClear_Train.py中修改训练数据集的路径。您还可以根据您自己的GPU机器修改训练超参数(例如,lr, train_batch_size, gradient_accumulation_steps)。

⚡ 推理

我们提供了RealLQ250基准,可以从Google Drive下载。

测试DreamClear进行图像恢复 运行以下命令以从256恢复到1024的LQ图像:

# 使用torch.distributed.launch启动推理过程
python3 -m torch.distributed.launch --nproc_per_node 1 --master_port 1234 \
  test_1024.py configs/DreamClear/DreamClear_Test.py \
  --dreamclear_ckpt /path/to/DreamClear-1024.pth \
  --swinir_ckpt /path/to/general_swinir_v1.ckpt \
  --vae_ckpt /path/to/sd-vae-ft-ema \
  --lre --cfg_scale 4.5 --color_align wavelet \
  --image_path /path/to/RealLQ250/lq \
  --npz_path /path/to/RealLQ250/npz \
  --save_dir validation

在高级基准上的评估 分割和检测的测试说明可以在它们各自的文件夹中找到。

5. 技术基础

  1. 深度扩散先验(Deep Diffusion Prior): DreamClear的核心思想是在干净图像分布中进行搜索,该分布由扩散先验表示,以找到清晰图像,同时保持对输入的退化图像的忠实。这种方法不需要对图像退化的类型有明确的先验知识,而是通过将退化图像嵌入到预训练的扩散模型的潜在空间中,并通过对这些生成清晰图像的扩散过程进行精心设计的重新采样,从而实现图像的恢复。
  2. 方差保持采样(Variance Preservation Sampling, VPS)技术: DreamClear利用了一种新颖的方差保持采样技术,这种技术有助于在扩散过程中保持图像的方差,这对于生成高质量的恢复图像至关重要。VPS技术引导受损的低概率潜变量朝向附近的高概率区域,从而可以生成清晰样本。这样,VPS作为一种通用解决方案,即使不知道具体的退化模型,也可以确保忠实度。
  3. 无监督和训练自由的方法: DreamClear是一个无监督和训练自由的盲图像修复方法,它不需要退化先验知识,但能产生高保真度和普适性,适用于各种类型的图像退化。DreamClear嵌入退化图像回到预训练的扩散模型的潜在空间,并通过一个精心设计的扩散过程重新采样,模仿生成清晰图像的过程。

DreamClear 的核心技术亮点在于其能够从低分辨率图像中生成高分辨率图像,同时保持隐私安全。它利用生成高质量(HQ)-低质量(LQ)图像配对的专用数据集进行训练,避免了传统数据收集中的版权和隐私难题。DreamClear 的“自适应调制器混合”模块(MoAM)可以动态适配多个图像恢复模型,使其适应不同的图像劣化类型,并进一步扩展了模型的适用性。

6. 适用场景

  • 图像质量提升:适用于需要提升图像质量的场景,如老照片修复、低分辨率图像增强等。
  • 细节恢复:适用于需要恢复图像细节的场景,如监控视频增强、医学影像处理等。
  • 隐私保护:适用于对数据隐私有较高要求的图像处理场景,确保在提升图像质量的同时保护用户隐私。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/916701.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter:android studio无法运行到模拟机的问题

提示如下错误信息: Entrypoint is not a Dart filenot applicable for the "main.dart" configurat点击运行按钮提示让填写以下信息 或者出现无法选择模拟机的情况 发下下列问题: 无法运行的项目默认根目录地址: 可以正常运行…

FromData格式提交接口时入参被转成JSON格式问题

本地上传文件后通过事件提交文件,一般先通过前端组件生成文本流,在通过接口提交文本流,提交文本流一般使用FormData的入参形式传入,接口请求头也默认"Content-Type": “multipart/form-data”,但是某些场景统…

<AI 学习> 下载 Stable Diffusions via Windows OS

注意: 不能使用 网络路径 不再支持 HTTPS 登录,需要 Token 1. 获得合法的授权 Stability AI License — Stability AI 上面的链接打开,去申请 许可 2. 拥有 HuggingFace 账号 注册:https://huggingface.co/ 3. 配置 Tok…

MySQL缓存使用率超过80%的解决方法

MySQL缓存使用率超过80%的解决方法 一、识别缓存使用率过高的问题1.1 使用SHOW GLOBAL STATUS命令监控1.2 监控其他相关指标二、分析缓存使用率过高的原因2.1 数据量增长2.2 查询模式变化2.3 配置不当三、解决缓存使用率过高的方法3.1 调整Buffer Pool大小3.1.1 计算合理的Buff…

39.安卓逆向-壳-smali语法3(方法)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于:图灵Python学院 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要盲目相信。 工…

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务(Task)介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…

RHCE的学习(18)

第二章 变量和引用 深入认识变量 在程序设计语言中,变量是一个非常重要的概念。也是初学者在进行Shell程序设计之前必须掌握的一个非常基础的概念。只有理解变量的使用方法,才能设计出良好的程序。本节将介绍Shell中变量的相关知识。 什么是变量 顾名思义…

AG32 FPGA部分简单开发

环境 Quartus 13.0(Quartus 不能使用Lite 版本,需要使用Full 版本)AGM SDKSupra(快捷方式在SDK目录下,具体路径为AgRV_pio\packages\tool-agrv_logic\bin) FPGA编程 在AG32芯片中,拥有异构双…

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined

VUE_PROD_HYDRATION_MISMATCH_DETAILS 未明确定义。您正在运行 Vue 的 esm-bundler 构建,它期望这些编译时功能标志通过捆绑器配置全局注入,以便在生产捆绑包中获得更好的tree-shaking优化。 Vue.js应用程序正在使用ESM(ECMAScript模块&#…

Spring——事务

事务 JdbcTemplate 简介 Spring框架对JDBC进行封装&#xff0c;使用JdbcTemplate方便实现对数据库操作 准备工作 ①搭建子模块 搭建子模块&#xff1a;spring-jdbc-tx ②加入依赖 <dependencies><!--spring jdbc Spring 持久化层支持jar包--><dependenc…

集合类源码浅析のJDK1.8ConcurrentHashMap(下篇)

文章目录 前言一、分段扩容1、addCount2、transfer3、helpTransfer 二、查询二、删除总结 前言 主要记录ConcurrentHashMap&#xff08;笔记中简称CHM&#xff09;的查询&#xff0c;删除&#xff0c;以及扩容方法的关键源码分析。 一、分段扩容 1、addCount 扩容的逻辑主要在…

H5页面多个视频如何只同时播放一个?

目录 背景1. 首先介绍下 muted 属性2. 监听播放和暂停操作3. 视频播放完毕后返回桌面&#xff0c;再进入H5页面发现视频封面丢失置灰解决思路&#xff1a; 背景 页面模块同时有个四个视频模块&#xff0c;发现可以同时播放四个视频&#xff0c;但是理想的是每次只播放一个。 …

D69【 python 接口自动化学习】- python 基础之数据库

day69 Python 执行 SQL 语句 学习日期&#xff1a;20241115 学习目标&#xff1a; MySQL 数据库&#xfe63;- Python连接redis 学习笔记&#xff1a; redis数据库的用途 使用Python访问redis数据库 使用Python对redis数据库进行读写操作 总结 1. redis是一款高性能的键…

jmeter常用配置元件介绍总结之逻辑控制器

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之逻辑控制器 逻辑控制器1.IF控制器2.事务控制器3.循环控制器4.While控制器5.ForEach控制器6.Include控制器7.Runtime控制器8.临界部分控制器9.交替控制器10.仅一次控制器11.简单控制器12.随机控制器13.随机顺序控制器14.吞…

21.<基于Spring图书管理系统②(图书列表+删除图书+更改图书)(非强制登录版本完结)>

PS&#xff1a; 开闭原则 定义和背景‌ ‌开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;‌&#xff0c;也称为开放封闭原则&#xff0c;是面向对象设计中的一个基本原则。该原则强调软件中的模块、类或函数应该对扩展开放&#xff0c;对修改封闭。这意味着一个软…

springboot实现简单的数据查询接口(无实体类)

目录 前言&#xff1a;springboot整体架构 1、ZjGxbMapper.xml 2、ZjGxbMapper.java 3、ZjGxbService.java 4、ZjGxbController.java 5、调用接口测试数据是否正确 6、打包放到服务器即可 前言&#xff1a;springboot整体架构 文件架构&#xff0c;主要编写框选的这几类…

【已解决】 Tomcat10.1.x使用JSTL标签库

IDEA创建Java EE项目&#xff0c;使用Spring Spring MVC MyBatis框架&#xff0c;使用maven管理依赖。项目当前的环境是&#xff1a; Tomat 10.1.28Maven 3.6.3JDK 17 项目的功能&#xff1a;读取数据库的report表中的数据&#xff0c;返回一个List集合对象reportList在JSP…

权限相关知识

1.Linux权限的概念 在说Linux权限的概念之前我来问大家一个问题&#xff0c;你们觉得什么是权限&#xff1f; 权限平时的体现呢&#xff0c;就比如不是校长的亲戚就不能逛办公室&#xff0c;没充会员的爱奇艺看不了VIP影视剧&#xff0c;没成会员的的蛋糕店拿不到会员价等等等…

uniapp如何i18n国际化

1、正常情况下项目在代码生成的时候就已经有i18n的相关依赖&#xff0c;如果没有可以自行使用如下命令下载&#xff1a; npm install vue-i18n --save 2、创建相关文件 en文件下&#xff1a; zh文件下&#xff1a; index文件下&#xff1a; 3、在main.js中注册&#xff1a…

[刷题]入门3.彩票摇奖

博客主页&#xff1a;算法歌者本篇专栏&#xff1a;[刷题]您的支持&#xff0c;是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接&#xff1a;洛谷-P2550-彩票摇奖 2、基础 此题目考察数组、三重循环、自增操作的能力。 3、思路 写代码时候&#xf…