【Image Captioning】DynRefer
DynRefer是由中国科学院大学于2024年提出的用于1种用于区域级多模态任务的模型。DynRefer 通过模拟人类视觉认知过程,显著提升了区域级多模态识别能力。通过引入人眼的动态分辨率机制, 能够以同时完成区域识别、区域属性检测和区域字幕生成任务。
文章链接:https://arxiv.org/abs/2405.16071
代码链接:https://github.com/callsys/DynRefer
一.介绍
区域级多模态任务模仿人类认知过程,根据特定的任务要求(开放词汇检测、属性识别、字幕生成等)将参考的图像区域翻译为语言输出。现有的方法以固定的分辨率作为输入,限制模型对于丰富分辨率的处理能力且难以捕获上下文信息。
人类的认知系统可以根据特定的语言描述(任务要求)通过注视和调整眼动的过程来调整视觉输入,形成非均匀的分辨率。现存的多模态大语言模型不具备视觉区域选择能力,导致应用于具体任务时缺乏特异性。
受视觉认知机制的启发,即增加聚焦区域的分辨率,同时抑制不相关的背景区域,提出动态分辨率方法,如下图所示。
DynRefer在训练时引入随机视觉-语言对齐,首先,对参考区域的周围进行采样,构建随机分辨率的图像;然后,将图像嵌入于具体任务的语言描述对齐。在推理时,执行动态多模态参考,形成与图像和语言描述先验相对应的动态分辨率图像。
二.相关工作
视觉语言模型
根据训练目标,Vision-Language Models(VLMs)可以分为图文对比学习、图文匹配、语言建模3种类型。应用于区域级任务时,模型在区域-文本对上进行训练以获取区域级理解能力。
区域级多模态任务
(1) 检测
基于对比学习的方法通过计算图像划定区域的特征与文本特征之间的相似度确定检测类别;基于语言建模的方法借助大语言模型,得到开放集中和图像区域最可能的类别。
(2) 属性
一些研究基于COCO Attributes、VAW等属性数据集,训练多分类网络实现属性预测;一些研究受到CLIP 、OVAD模型的启发,从字幕中得到属性类别(开集预测)。
(3)字幕生成
使用多模态模型生成区域级字幕的方法被研究者广泛采用。GRiT通过将对象类别看作为简短的字幕来统一分类和字幕生成任务;CapDet则是在预训练设置中将字幕与开放集检测结合起来。
视觉认知动态分辨率
视觉认知领域的研究表明,人类视觉系统具有动态分辨率。相比之下,计算机视觉系统缺乏动态机制,只能捕获静态视图。
三.方法
3.1 随机视觉-语言对齐
3.1.1 多视图构建
原始图像 x 被裁剪为多个候选视图。裁剪区域的计算方式为
其中,表示参考区域的边界框,
表示整个图像的尺寸,t 表示插值系数。在训练过程中,从候选视图中随机选择 n 个视图,以模拟由于注视和眼球快速运动而生成的图像。 n 个视图对应于插值系数 t,即t=
。
3.1.2 随机多视图嵌入
采样的n个视图,经过ViT模块获得空间特征并后接RoI Align模块得到区域嵌入,如下图左侧所示。
由于crop、resize和 RoI-Align 操作引入的空间误差,区域嵌入在空间上并不对齐。受 deformable convolution 启发,提出了1个对齐模块Align module,通过将与
对齐来减少偏差,其中,
是仅包含参考区域的视图的区域嵌入。对于每个区域嵌入
,首先,将其与
连接,然后通过Conv计算2D偏移图;然后,𝑟𝑖的空间特征然后根据2D偏移重新采样;最后,对齐后的区域嵌入
沿通道维度连接并通过 MLPs 层进行融合。输出进一步通过视觉重采样模块,即 Q-former进行压缩,得到区域表示
。
3.1.3 视觉语言对齐
通过随机多视图嵌入模块计算得到的区域表示,由3个解码器
进行解码,如上图右侧所示,分别受到3个多模态任务的监督。
i) 图像区域标签生成。采用基于查询的轻量级识别解码器进行区域标签生成。解码器 通过使用标签作为query,
作为key和value,计算预定义标记的置信度来完成标记过程。从字幕中解析出标签,以监督解码器,采用非对称损失。
ii) 区域 - 文本对比学习。解码器 是基于查询的识别解码器,计算字幕与区域特征之间的相似性分数,使用Sigmoid损失。
iii) 语言建模。采用预训练的大语言模型 将区域表示
转换为语言描述,采用cross-entropy损失。
3.2 动态多模态参考
在推理过程中,通过调整插值系数t=,得到具有动态分辨率的区域表示。在3个多模态任务上评估动态分辨率的影响,n=2,结果如下图所示。
可以看出,属性检测在时(无上下文视图)可以获得更好的结果;字幕生成任务则在
或
时(需要上下文来理解参考的区域)表现更佳,在
时表现下降。
当任务已知时,可以根据任务特性采样合适的视图;当任务未知时,需要根据插值系数构建候选视图。通过贪婪搜索算法从候选中选择n个视图,搜索目标为:
其中,表示第i个插值系数,
表示第i个视图,
表示感知图像哈希函数,
表示异或操作。
3.3 多种视图
DynRefer学习多个区域表示,如下图所示。
四.实验
DynRefer基于LAVIS框架实现,LLM模型采用Flan-T5XL,视觉重采样采用Q-former,采样视图呗调整为224*224分辨率,模型在VG V1.2上进行训练。
4.1 性能
区域级字幕
在区域级字幕任务中,与SOTA方法的对比结果如下。
在密集字幕中,与SOTA方法的对比结果如下。
开放词汇属性识别
在OVAD数据集上的表现如下表所示。
开放词汇区域识别
在COCO-2017数据集上的表现如下表所示。
多任务能力
DynRefer模型可以实现多模态多任务处理(字幕、标签、属性、类别),如下图所示。
相关文章:

【Image Captioning】DynRefer
DynRefer是由中国科学院大学于2024年提出的用于1种用于区域级多模态任务的模型。DynRefer 通过模拟人类视觉认知过程,显著提升了区域级多模态识别能力。通过引入人眼的动态分辨率机制, 能够以同时完成区域识别、区域属性检测和区域字幕生成任务。 文章链…...

Midjourney基础-常用修饰词+权重的用法大全
用好修饰词很关键 Midjourney要用除了掌握好提示词的写法,按照上一篇《做Midjourney最好图文教程-提示词公式以及高级参数讲解》画面主体 场景氛围 主体行为 构图方式 艺术风格 图像质量。 要画出有质感的内容我们必须要掌握好“修饰词”,这些修饰…...
没有屋檐的房子-023粪堆旁边的舞蹈
爱美是天性,贫苦的农村人也一样,贫苦的时代也一样。 本世纪,广场舞在华夏大地遍地开花,甚至都传到了外面。但是广场舞这种舞蹈形式并不是互联网时代的特产,也不是电声设备日益高级和普及时代的特产,更不是大…...

基于Docker的Kafka分布式集群
目录 1. 说明 2. 服务器规划 3. docker-compose文件 kafka{i}.yaml kafka-ui.yaml 4. kafka-ui配置集群监控 5. 参数表 6. 测试脚本 生产者-异步生产: AsyncKafkaProducer1.py 消费者-异步消费: AsyncKafkaConsumer1.py 7. 参考 1. 说明 创建一个本地开发环境所需的k…...

【博客之星】年度总结:在云影与墨香中探寻成长的足迹
🐇明明跟你说过:个人主页 🔖行路有良友,便是天堂🔖 目录 一、年度回顾 1、创作历程 2、个人成长 3、个人生活与博客事业 二、技术总结 1、赛道选择 2、技术工具 3、实战项目 三、前景与展望 1、云原生未来…...

SpringBoot的Swagger配置
一、Swagger配置 1.添加依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version> </dependency> 2.修改WebMvcConfig Slf4j Configurat…...

machine learning knn算法之使用KNN对鸢尾花数据集进行分类
通过导入必要的scikit-learn导入必要的库,加载给定的数据,划分测试集和训练集之后训练预测和评估即可 具体代码如下: import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…...

C语言练习(16)
猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第10天早上想再吃时,见只剩一个桃子了…...

SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨
在本次技术研讨会上,来自汽车与科技领域的专家们围绕汽车软件定义及自动驾驶技术展开了深入交流与探讨。从 SOAFEE 蓝图计划的创新性理念,到 Autoware 开源项目及 Open AD Kit 在实际应用中的探索,再到 Edge Workload Abstraction and Orches…...

R语言学习笔记之开发环境配置
一、概要 整个安装过程及遇到的问题记录 操作步骤备注(包含遇到的问题)1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖,试错逐步下载并安装…...

多版本并发控制:MVCC的作用和基本原理
多版本并发控制:MVCC的作用和基本原理 1、MVCC简介1.1 快照读与当前读的区别1.1.1 快照读1.1.2 当前读 1.2 数据库的读写问题1.3 MVCC的作用 2、MVCC实现原理之ReadView2.1 什么是ReadView2.2 ReadView的设计思路2.3 MVCC整体操作流程 1、MVCC简介 1.1 快照读与当前…...
ubuntu18.04安装nvm管理本机node和npm
ubuntu18.04安装nvm管理本机node和npm nvm的使用方法1. 安装nvm2. 加载nvm3. 安装执行版本4. 设置默认版本(可选)5. 检查:6. 将配置加入到shell配置文件中(默认已经加入) 如果系统全局的 Node.js 存在,但被 nvm 覆盖了,可以通过禁用或卸载 nvm 恢复到系统…...

【数据结构进阶】红黑树超详解 + 实现(附源码)
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、红黑树介绍 二、红黑树原理详解 三、红黑树的实现 1. 节点定义 2. 红黑树类型定义及接口声明 3. 红黑树的插入(重点&a…...

leetcode_3092. 最高频率的 ID
https://leetcode.cn/problems/most-frequent-ids/description/ 看到这个数据范围 最极端情况 如果nums全为一个数 并且数量取到最大 那么范围是10的10次方 需要longlong储存 这题主要运用了哈希表配合multiset实现 哈希表主要用作存储某个数的出现次数 mst则用于记录出现次…...

鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)
目录 1)仓颉的SDK下载 1--进入仓颉的官网 2--点击图片中的下载按钮 3--在新跳转的页面点击即刻下载 4--下载 5--找到你们自己下载好的地方 6--解压软件 2)仓颉编程环境配置 1--找到自己的根目录 2--进入命令行窗口 3--输入 envsetup.bat 4--验证是否安…...

数据统计–图形报表(day11)
Apache ECharts 介绍 Apache ECharts 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 入门案例 Apache Echarts官方…...

源码分析之Openlayers样式篇CircleStyle类
访问Openlayers网站(https://jinuss.github.io/Openlayers_map_pages/,网站是基于Vue3 Openlayers,里面有大量的实践和案例。觉得还不错,可以 给个小星星Star,鼓励一波 https://github.com/Jinuss/OpenlayersMap哦~ 概述 在 Ope…...

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题
操作系统:CentOS 9 Zabbix版本:Zabbix7.2 问题描述:主机图形中文字符乱码 解决方案: # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体: fc-list :lan…...
AF3 FourierEmbedding类源码解读
FourierEmbedding 是一个用于扩散条件的傅里叶嵌入类,其核心是将输入的时间步噪声强度或控制参数(timestep)转换为高维的周期性特征。 源代码: class FourierEmbedding(nn.Module):"""Fourier embedding for diffusion conditioning."""de…...
vsftpd虚拟用户部署
vsftpd虚拟用户部署 案例提供两个用户如下,使用centos7验证可行。 test *AO9ih&7 ftp DTx4zp_shell脚本运行一键安装vsftp #!/bin/bash yum -y install vsftpd ftp >/etc/vsftpd/vsftpd.conf cat <<EOL >> /etc/vsftpd/vsftpd.conf anonymous_enableNO l…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...