当前位置: 首页 > news >正文

【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 被裁剪为多个候选视图。裁剪区域的计算方式为

其中,b_{r}表示参考区域的边界框,b_{x}表示整个图像的尺寸,t 表示插值系数。在训练过程中,从候选视图中随机选择 n 个视图,以模拟由于注视和眼球快速运动而生成的图像。 n 个视图对应于插值系数 t,即t=\left [ t_{1},t_{2},..., t_{n}\right ]

3.1.2 随机多视图嵌入

采样的n个视图,经过ViT模块获得空间特征并后接RoI Align模块得到区域嵌入\left \{ r_{i} \right \}_{i=1,2,..,n},如下图左侧所示。

由于crop、resize和 RoI-Align 操作引入的空间误差,区域嵌入在空间上并不对齐。受 deformable convolution 启发,提出了1个对齐模块Align module,通过将\left \{ r_{i} \right \}_{i=2,3,..,n}r_{1}对齐来减少偏差,其中,r_{1} 是仅包含参考区域的视图的区域嵌入。对于每个区域嵌入r_{i},首先,将其与 r_{1}连接,然后通过Conv计算2D偏移图;然后,𝑟𝑖的空间特征然后根据2D偏移重新采样;最后,对齐后的区域嵌入r_{i}沿通道维度连接并通过 MLPs 层进行融合。输出进一步通过视觉重采样模块,即 Q-former进行压缩,得到区域表示x_{v}

3.1.3 视觉语言对齐

通过随机多视图嵌入模块计算得到的区域表示x_{v},由3个解码器D_{x}进行解码,如上图右侧所示,分别受到3个多模态任务的监督。

i) 图像区域标签生成。采用基于查询的轻量级识别解码器进行区域标签生成。解码器  D_{tag}通过使用标签作为query,x_{v}作为key和value,计算预定义标记的置信度来完成标记过程。从字幕中解析出标签,以监督解码器,采用非对称损失。

ii) 区域 - 文本对比学习。解码器 D_{rtc}是基于查询的识别解码器,计算字幕与区域特征之间的相似性分数,使用Sigmoid损失。

iii) 语言建模。采用预训练的大语言模型 D_{llm}将区域表示x_{v} 转换为语言描述,采用cross-entropy损失。

3.2 动态多模态参考

在推理过程中,通过调整插值系数t=\left [ t_{1},t_{2},..., t_{n}\right ],得到具有动态分辨率的区域表示。在3个多模态任务上评估动态分辨率的影响,n=2,结果如下图所示。

可以看出,属性检测在t_{2}=0.1时(无上下文视图)可以获得更好的结果;字幕生成任务则在t_{2}=0.4t_{2}=0.5时(需要上下文来理解参考的区域)表现更佳,在t_{2}> 0.5时表现下降。

当任务已知时,可以根据任务特性采样合适的视图;当任务未知时,需要根据插值系数t,t\in \left \{ 0.1,0.1,...,1.0 \right \}构建候选视图。通过贪婪搜索算法从候选中选择n个视图,搜索目标为:

其中,t_{i}表示第i个插值系数,x\left ( t_{i} \right )表示第i个视图,pHASH(\cdot )表示感知图像哈希函数,\oplus表示异或操作。

3.3  多种视图

DynRefer学习多个区域表示x_{v}\left ( t \right ),如下图所示。

四.实验

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导入必要的库&#xff0c;加载给定的数据&#xff0c;划分测试集和训练集之后训练预测和评估即可 具体代码如下&#xff1a; import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…...

C语言练习(16)

猴子吃桃问题。猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第10天早上想再吃时&#xff0c;见只剩一个桃子了…...

SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨

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

R语言学习笔记之开发环境配置

一、概要 整个安装过程及遇到的问题记录 操作步骤备注&#xff08;包含遇到的问题&#xff09;1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖&#xff0c;试错逐步下载并安装…...

多版本并发控制:MVCC的作用和基本原理

多版本并发控制&#xff1a;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 存在&#xff0c;但被 nvm 覆盖了&#xff0c;可以通过禁用或卸载 nvm 恢复到系统…...

【数据结构进阶】红黑树超详解 + 实现(附源码)

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;数据结构 目录 前言 一、红黑树介绍 二、红黑树原理详解 三、红黑树的实现 1. 节点定义 2. 红黑树类型定义及接口声明 3. 红黑树的插入&#xff08;重点&a…...

leetcode_3092. 最高频率的 ID

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

鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)

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

数据统计–图形报表(day11)

Apache ECharts 介绍 Apache ECharts 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网地址&#xff1a;Apache ECharts 入门案例 Apache Echarts官方…...

源码分析之Openlayers样式篇CircleStyle类

访问Openlayers网站(https://jinuss.github.io/Openlayers_map_pages/&#xff0c;网站是基于Vue3 Openlayers&#xff0c;里面有大量的实践和案例。觉得还不错&#xff0c;可以 给个小星星Star&#xff0c;鼓励一波 https://github.com/Jinuss/OpenlayersMap哦~ 概述 在 Ope…...

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题

操作系统&#xff1a;CentOS 9 Zabbix版本&#xff1a;Zabbix7.2 问题描述&#xff1a;主机图形中文字符乱码 解决方案&#xff1a; # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体&#xff1a; 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…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...