CoSeR: Bridging Image and Language for Cognitive Super-Resolution

2023-12-05 05:44

本文主要是介绍CoSeR: Bridging Image and Language for Cognitive Super-Resolution,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

主页:CoSeR: Bridging Image and Language for Cognitive Super-Resolution (coser-main.github.io)

图像超分辨率技术旨在将低分辨率图像转换为高分辨率图像,从而提高图像的清晰度和细节真实性。这项技术在手机拍照等领域有着广泛的应用和需求。随着超分技术的发展和手机硬件性能的提升,人们期望拍摄出更加清晰的照片。然而,现有的超分方法存在一些局限性,如图2所示,主要有以下两个方面:

  • 一是缺乏泛化能力。为了实现更好的超分效果,通常需要针对特定场景使用特定传感器采集到的数据来进行模型训练,这种学习方式拟合了某种低清图像和高清图像间的映射,但在其他场景下表现不佳。此外,逐场景训练的方式计算成本较高,不利于模型的部署和更新。    

  • 二是缺乏理解能力。现有的超分方法主要依赖于从大量数据中学习图像的退化分布,忽视了对图像内容的理解,无法利用常识来准确恢复物体的结构和纹理。

人类在处理信息时,有两种不同的认知反馈系统。诺贝尔奖经济学得主丹尼尔·卡尔曼在《思考,快与慢》中将它们称为系统一和系统二,如图3所示。系统一是快速的、直觉的、基于记忆的反馈,比如,我们可以脱口而出十以内的加减运算。系统二是缓慢的、多步的反馈,比如,28x39往往需要逐步运算。现有的超分方法更贴近系统一,它们主要依赖于从大量数据中学习图像的退化分布,忽视了对图像内容的理解,无法按照常识来准确恢复物体的结构和纹理,也无法处理域外的退化情况。本文认为,真正能有效应用于真实场景的画质大模型应该具备类似系统二的多步修复能力,即基于对图像内容的认知,结合先验知识来实现图像超分(Cognitive Super-Resolution,CoSeR)。

 

 

CoSeR模仿了人类专家修复低质量图像自上而下的思维方式,首先建立对图像内容的全面认知,包括识别场景和主要物体的特征,随后将重点转移到对图像细节的检查和还原。本文的主要贡献如下:

  • 提出了一种通用的万物超分画质大模型CoSeR,它能够从低清图像中提取认知特征,包括场景内容理解和纹理细节信息,从而提高模型的泛化能力和理解能力。   

  • 提出了一种基于认知特征的参考图像生成方法,它能够生成与低清图像内容一致的高质量参考图像,用于指导图像的恢复过程,增强图像的保真度和美感度。

  • 提出了一种“All-in-Attention”模块,它能够将低清图像、认知特征、参考图像三个条件注入到模型当中,实现多源信息的融合和增强。

  • 在多个测试集和评价指标上,相较于现有方法,CoSeR均取得了更好的效果。同时,CoSeR在真实场景下也展现颇佳。

方法介绍

图4展示了CoSeR的整体架构。CoSeR首先使用认知编码器来对低清图像进行解析,将提取到的认知特征传递给Stable Diffusion模型,用以激活扩散模型中的图像先验,从而恢复更精细的细节。此外,CoSeR利用认知特征来生成与低清图像内容一致的高质量参考图像。这些参考图像作为辅助信息,有助于提升超分辨率效果。最终,CoSeR使用提出的“All-in-Attention”模块,将低清图像、认知特征、参考图像三个条件注入到模型当中,进一步提升结果的保真度。 

                                        图4. 本文提出的万物超分画质大模型CoSeR 

图5展示了CoSeR参考图像生成的效果。与直接从低清图像中获取描述的方法相比,CoSeR的认知特征保留了细粒度的图像特征,在生成具有高度相似内容的参考图像时具有优势。在图5的第一行,使用BLIP2从低清图像生成的描述无法准确识别动物的类别、颜色和纹理。此外,CoSeR的认知特征对于低清图像更加鲁棒。例如,在图5的第二行,由于输入分布的差异,BLIP2会生成错误的图像描述,而CoSeR生成了内容一致的高质量参考图像。最后,相比于BLIP2大模型接近7B的参数量,CoSeR的认知编码器只有其3%的参数量,极大提升了推理速度。

 

这篇关于CoSeR: Bridging Image and Language for Cognitive Super-Resolution的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/456375

相关文章

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

UML- 统一建模语言(Unified Modeling Language)创建项目的序列图及类图

陈科肇 ============= 1.主要模型 在UML系统开发中有三个主要的模型: 功能模型:从用户的角度展示系统的功能,包括用例图。 对象模型:采用对象、属性、操作、关联等概念展示系统的结构和基础,包括类图、对象图、包图。 动态模型:展现系统的内部行为。 包括序列图、活动图、状态图。 因为要创建个人空间项目并不是一个很大的项目,我这里只须关注两种图的创建就可以了,而在开始创建UML图

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

问:Super与this在Java中有什么区别?

this: this 关键字用于引用当前对象。它通常用于区分成员变量和方法参数或局部变量。在实例方法中,this 指向调用该方法的对象。在构造函数中,this 指向正在被初始化的对象。 super: super 关键字用于引用父类(超类)的构造函数、方法或变量。在子类的构造函数中,super() 用于调用父类的构造函数。在子类的方法中,super.methodName() 用于调用父类的方法。

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光

Unity 资源 之 Super Confetti FX:点亮项目的璀璨粒子之光 一,前言二,资源包内容三,免费获取资源包 一,前言 在创意的世界里,每一个细节都能决定一个项目的独特魅力。今天,要向大家介绍一款令人惊艳的粒子效果包 ——Super Confetti FX。 二,资源包内容 💥充满活力与动态,是 Super Confetti FX 最显著的标签。它宛如一位

MTK Android P/Q system/vendor/super快速打包

一、Android 新版本默认开启了动态分区,把system vendor  product等分区打包成一个super分区。这对于我们使用替换分区的方法来排查问题不是很方便,直接替换一个super也不知道到底是哪个部分导致的。所以我们需要自己制作super.img来缩小范围。下面讲讲如何快速生成system、vendor、super,以及vbmeta(校验image,不匹配可能会导致不开机) 二

? extends T 和 ? super T分别是什么意思?有什么不同?

<? extends T>首先你很容易误解它为继承于T的所有类的集合,这是大错特错的,相信能看下去你一定见过或用过List<? extends T>吧?为什么我说理解成一个集合是错呢?如果理解成一个集合那为什么不用List<T>来表示?所以<? extends T>不是一个集合,而是T的某一种子类的意思,记住是一种,单一的一种,问题来了,由于连哪一种都不确定,带来了不确定性,所以是不可能通过add

java基础总结11-面向对象7(super关键字)

在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象。怎么去引用里面的父类对象呢?使用super来引用,this指的是当前对象的引用,super是当前对象里面的父对象的引用。 1 super关键字测试 package cn.galc.test;/*** 父类* @autho