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

LLM | 论文精读 | CVPR | SelTDA:将大型视觉语言模型应用于数据匮乏的视觉问答任务

论文标题:How to Specialize Large Vision-Language Models to Data-Scarce VQA Tasks? Self-Train on Unlabeled Images!

作者:Zaid Khan, Vijay Kumar BG, Samuel Schulter, Xiang Yu, Yun Fu, Manmohan Chandraker

期刊:CVPR 2023

DOI:待更新

email:yuhan.huang@whu.edu.cn

创作不易,恳请大家点赞收藏支持:)

1. 引言

近年来,视觉问答(Visual Question Answering,VQA)任务在大规模视觉语言模型(Vision-Language Models,VLM)上取得了令人瞩目的成就。然而,当我们面对数据稀缺的专业任务时,如基于知识的VQA或非自然图像域的VQA,模型的表现仍然有些力不从心。对于这些高难度的任务,想要收集足够的标注数据十分困难,因此本文提出了一种名为SelTDA(Self-Taught Data Augmentation)的自我训练策略,试图通过一种聪明的方式来解决这一问题。在不需要额外人工标注的情况下,SelTDA能帮助大规模VLM在小规模数据集上表现得更好。这种方法有点像自学成才,模型自己想办法去理解和提升。

2. 研究动机与方法概述

在图1中,作者介绍了SelTDA的整体工作原理。简单来说,这个方法通过一个教师模型来生成图像的伪标签问题和答案,以此来扩充目标数据集。这样一来,我们就不需要额外的人工标注,只需要一些未标注的图像数据。这听起来是不是很省心?不仅省下了大量标注时间,还能让小规模数据集的训练变得更加可行且高效。

图1:SelTDA框架概述 图1生动地展示了SelTDA如何将未标注的图像变为有用的训练数据。首先,教师模型会对图像进行伪标签的生成,接着这些伪标签就被用于微调学生模型。在这个过程中,SelTDA不仅扩展了训练数据的数量,还大大提升了模型的鲁棒性和跨域泛化能力。就像让模型学会举一反三,不仅在原有的领域内学得好,在新领域也能应对自如。

3. 动机实验

在图2中,作者展示了SelTDA背后的动机实验。这个实验主要是为了测试一个有趣的想法:能不能利用预训练的大型VLM来生成文本,然后让它在VQA任务中使用这些文本?实验中使用了BLIP模型(图2的右侧面板)来给图像打标签,然后将这些生成的文本转换成问题,以测试模型在回答这些问题时的表现。

图2:生成文本与自我一致性 实验结果表明,尽管模型生成的文本具有一定的多样性,但在生成的问题中,有些答案却是错的(例如,模型回答“否”,但其实应该是“是”)。这表明,VLM内部其实隐藏着一些未被完全利用的知识,而这些知识通过直接生成文本可以更好地提取出来。这正是SelTDA方法的核心动机之一,即通过模型的生成能力为未标注的数据生成更多有价值的问题和答案。

4. 方法详细描述

SelTDA的训练框架主要包括三个阶段,过程简单而高效:

  1. 教师模型训练:首先,让教师模型通过图像到文本的生成任务进行训练,就像老师在学习如何出题。

  2. 伪标签生成:接着,教师模型对未标注的图像进行伪标签的生成,包含问题和答案的配对。这些伪标签相当于老师给出的练习题。

  3. 学生模型训练:最后,学生模型使用原始数据集与生成的伪标签进行微调,就像学生通过做练习题不断提高自己的能力。

在图3中,作者提供了SelTDA训练框架的概览。从教师模型的创建,到未标注图像的伪标注,再到学生模型的最终微调,这一过程被清晰地描述出来。教师模型通过生成“问题-答案”对来模拟目标数据集的分布,这使得原本小规模的数据集得以有效扩展,大大增强了模型的学习效果。

图3:SelTDA框架概览 图3的流程图详细说明了SelTDA的步骤,包括如何利用教师模型生成伪标签,以及如何利用这些标签微调学生模型。SelTDA的最大优势在于可以有效增加训练数据的多样性,从而提升模型的泛化能力和表现力。换句话说,这个方法就像是让学生在不同题目上多加练习,学得更扎实。

5. 实验与结果

5.1 A-OKVQA与ArtVQA上的自我训练

作者将SelTDA在两个数据集上进行了测试:A-OKVQA(自然图像中的外部知识VQA)和ArtVQA(艺术图像中的外部知识VQA)。结果显示,SelTDA在这两个数据稀缺的场景中显著提高了模型的准确性(如表1和表2所示)。

表1:A-OKVQA上的性能提升 表1中可以看到,使用SelTDA后的模型表现明显优于其他使用大规模预训练数据的基线模型,尤其是在没有使用额外的VQAv2数据的情况下,SelTDA依然取得了出色的表现。这证明了自我训练在增强小数据集任务中的有效性。

表2:ArtVQA上的性能提升 表2展示了SelTDA在艺术图像任务上的表现,特别是在那些需要依赖视觉细节的问题上(如“Grounded”部分),SelTDA使模型的准确率显著提高。可以说,SelTDA不仅让模型更聪明,还让它更具艺术鉴赏力!

5.2 伪标签的消融分析

在表3中,作者对教师模型生成的100个随机样本问题进行了手动评估。结果显示,生成的伪标签虽然存在一些噪声,但这种噪声并没有显著低于人类标注之间的一致性。这说明,尽管生成数据有些不完美,但其质量已经足够好,足以用于增强模型的训练。

表3:生成问题的手动评估 通过对生成的问题进行分类,作者发现,涉及外部知识或复杂推理的问题相对较难生成正确答案,而视觉识别类的问题则更容易生成正确答案。这一发现进一步表明,模型在生成一些特定类型的问题上还是具备相当能力的。

图5:t-SNE嵌入显示生成问题的相似性 图5使用t-SNE对教师模型生成的问题进行了可视化,展示了生成的问题与目标数据集中的真实问题在分布上的相似性。橙色代表ArtVQA中的生成问题,这些问题与ArtVQA中的真实问题非常接近,同时覆盖的范围更大,表明生成的问题具有更高的多样性。换句话说,模型不再局限于某些特定的“套路”,而是有更多的创新性。

图6:由教师模型生成的问题的Sunburst图 图6展示了由教师模型生成的问题类型分布,其中以“how”开头的问题最为常见。这种分布的多样性使得模型在训练过程中得到了更多不同类型的问题,这对于提升模型的泛化能力和多样性理解尤为重要。SelTDA的强大之处就在于,它不仅教会模型回答问题,还教会模型如何提出有价值的问题。

5.3 域泛化与鲁棒性分析

为了进一步验证SelTDA的泛化能力,作者还在不同领域的数据集上进行了测试,包括医学VQA(PathVQA)、艺术VQA(ArtVQA)和遥感VQA(RSVQA)。结果显示,无论在哪个领域,SelTDA都显著提高了模型的表现(如表6所示)。

表6:跨领域的泛化性能 表6显示,SelTDA在从自然图像到其他领域(如医学、艺术和遥感)的迁移上展现了强大的泛化能力。尤其是在艺术图像上,表现尤为显著。这说明了自然图像和艺术图像之间在视觉和语义上的某些共性,SelTDA成功地利用了这一共性。

5.4 数值推理能力的提升

在表7中,作者对模型在数值推理问题上的表现进行了评估。SelTDA显著增强了模型在数值推理上的能力,避免了小规模数据集训练中的“灾难性遗忘”现象。这一点尤其难能可贵,因为数值推理问题通常需要模型具备更高的理解能力和细节捕捉能力。

表7:数值推理能力评估 实验结果表明,SelTDA可以有效提升模型在需要数值推理的问题上的表现。这是因为在生成的问题中,“how many”这类问题占据了较高比例,这些问题为模型提供了更多的训练机会,使其在面对类似问题时更加得心应手。

6. 结论与未来工作

综上所述,SelTDA通过利用未标注图像为VQA任务生成伪标签,成功扩展了原本小规模的数据集,提高了模型的鲁棒性、域泛化能力以及数值推理能力。当然,SelTDA也有其不足之处,比如伪标签的噪声和在特定领域中的表现不够稳定。此外,由于自我训练的方式可能会放大训练数据中的偏差,因此未来的研究可以结合外部知识来进行事实核查,或者引入逻辑一致性的自我推理机制,以进一步提高伪标签的质量。

总结

通过对这篇论文的详细解析,我们了解到SelTDA的创新点以及其在解决数据稀缺问题上的强大之处。它不仅提升了小规模数据集的表现,还让模型具备了应对各种新领域的能力。SelTDA的成功展示了自我训练在增强模型泛化能力上的巨大潜力,未来,随着更多改进的加入,相信这一策略能带来更多惊喜。

希望这篇精读文档能够帮助您更好地理解这篇论文的内容。如果您有任何疑问或需要更详细的解释,随时联系我哦~

相关文章:

LLM | 论文精读 | CVPR | SelTDA:将大型视觉语言模型应用于数据匮乏的视觉问答任务

论文标题:How to Specialize Large Vision-Language Models to Data-Scarce VQA Tasks? Self-Train on Unlabeled Images! 作者:Zaid Khan, Vijay Kumar BG, Samuel Schulter, Xiang Yu, Yun Fu, Manmohan Chandraker 期刊:CVPR 2023 DOI…...

kafka里的consumer 是推还是拉?

大家好,我是锋哥。今天分享关于【kafka里的consumer 是推还是拉?】面试题?希望对大家有帮助; kafka里的consumer 是推还是拉? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中,消费者&…...

针对物联网边缘设备基于EIT的手部手势识别的1D CNN效率增强的组合模型压缩方法

论文标题:Combinative Model Compression Approach for Enhancing 1D CNN Efficiency for EIT-based Hand Gesture Recognition on IoT Edge Devices 中文标题:针对物联网边缘设备基于EIT的手部手势识别的1D CNN效率增强的组合模型压缩方法 作者信息&a…...

商品满减、限时活动、折扣活动的计算最划算 golang

可以对商品的不同活动(如满减、限时价和折扣)进行分组,并在购物车中显示各个活动标签下的最优价格组合。以下代码将商品按活动类别进行分组计算,并输出在购物车中的显示信息。 package mainimport ("fmt""math&qu…...

vue3 + ts + element-plus 二次封装 el-table

一、实现效果: (1)数据为空时: (2)有数据时:存在数据合并;可自定义表头和列的内容 (3)新增行: (4)删除行: &a…...

python传递json参数给php

python传递json参数给php 在Python中,你可以使用requests库来发送JSON数据给一个PHP脚本。以下是一个简单的例子: 首先,安装requests库(如果你还没有安装的话): pip install requests 然后,…...

2.若依vue表格数据根据不同状态显示不同颜色style

例如国标显示蓝色&#xff0c;超标是红色 使用是蓝色&#xff0c;未使用是绿色 <el-table-column label"外卖配送是否完成评价" align"center" prop"isOverFlag"> <template slot-scope"scope"> …...

JZ2440开发板——LCD

以下内容源于韦东山嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 之前在博文中学习过LCD&#xff08;SoC是S5PV210&#xff09;&#xff0c;作为对比&#xff0c;本文学习S3C2440这款SoC的LCD方面的内容。主要涉及以下三个内容&#xff1a; 一、LCD的硬件原理 1.…...

YOLOv6-4.0部分代码阅读笔记-yolo_lite.py

yolo_lite.py yolov6\models\yolo_lite.py 所需的库和模块 #!/usr/bin/env python3 # -*- coding:utf-8 -*- import math import torch import torch.nn as nn import torch.nn.functional as F from yolov6.layers.common import * from yolov6.utils.torch_utils import i…...

奇瑞汽车:降阶模型在新能源汽车热管理仿真上的应用

随着新能源汽车的发展&#xff0c;对仿真技术的要求也越来越高。那么奇瑞汽车利用降阶模型在新能源汽车热管理仿真上做了哪些应用呢&#xff1f;本次内容主要从四个方面展开介绍&#xff1a; 1、 奇瑞汽车简介&#xff1b; 2、 热管理降阶模型开发的背景&#xff1b; 3、 高低…...

传统的自然语言处理评估指标

目录 传统的自然语言处理评估指标 EM(Exact Match) BLEU(Bilingual Evaluation Understudy) 传统的自然语言处理评估指标 传统评估指标 EM(Exact Match) 计算方式:如果生成的答案与参考答案完全相同(字符级完全匹配),则 EM 得分为 1,否则为 0。这是一种比较严格的…...

WPF+MVVM案例实战(十七)- 自定义字体图标按钮的封装与实现(ABC类)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1、案例效果1、按钮分类2、ABC类按钮实现1、文件创建2、字体图标资源3、自定义依赖属性4、按钮特效样式实现 3、按钮案例演示1、页面实现与文件创建2、依赖注入3 运…...

Redis数据结构:List类型全面解析

文章目录 一、List数据类型1.1 简介1.2 应用场景1.3 底层结构 二、数据结构2.1 压缩列表ZipList2.2 双向链表LinkedList&#xff08;后续已废弃&#xff09;2.3 快速链表QuickList 三、List常见命令 一、List数据类型 1.1 简介 详细介绍&#xff1a;Redis五种数据类型、Strin…...

人工智能证书合集

本文将对目前市面上主流官方机构颁发的人工智能证书进行整理和介绍&#xff0c;由于整理的证书较多&#xff0c;本文共一万八千多字&#xff0c;请根据自己的考证需求阅读对应部分的内容&#xff0c;希望本文对人工智能行业的从业人员和计划从事人工智能相关岗位工作的人员有所…...

php开发实战分析(8):优化MySQL分页查询与数量统计,提升数据库性能

在开发过程中&#xff0c;我们遇到了一段用于从数据库中查询部门信息的PHP代码。该代码负责根据不同的条件&#xff08;如部门名称和来源&#xff09;筛选数据&#xff0c;并返回分页结果及总记录数。然而&#xff0c;原始代码存在一些问题&#xff0c;包括重复的查询条件构建逻…...

shell脚本案例:RAC配置多路径时获取磁盘设备WWID和磁盘大小

使用场景 在RAC配置多路径时&#xff0c;需要获取到磁盘设备的wwid。因为RAC的磁盘配置是提前规划好的&#xff0c;只知道wwid&#xff0c;不知道磁盘对应大小&#xff0c;是不知道应该如何配置多路径的mutipath.conf文件的&#xff1b;而凭借肉眼手工去对应磁盘设备的wwid和大…...

Android Framework AMS(10)广播组件分析-1

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读应用层广播组件的发送广播和接收处理广播 2个过程&#xff0c;以及从APP层到AMS调用之间的打通。关注思维导图中左上部分即可。 有…...

在 Node.js 中使用 .env 文件

什么是 .env 文件&#xff1f; 文件.env是包含环境变量键值对的简单文本文件。此文件的内容不会被签入源代码管理&#xff0c;从而确保敏感数据的安全。 示例 PORT 4000 DATABASE_URL mongodb://localhost: 27017 /mydb API_KEY abcd1234 NODE_ENV development 在 Node.…...

CesiumJS 案例 P19:添加矩形、监听鼠标左击、监听鼠标右击、监听鼠标移动

CesiumJS CesiumJS API&#xff1a;https://cesium.com/learn/cesiumjs/ref-doc/index.html CesiumJS 是一个开源的 JavaScript 库&#xff0c;它用于在网页中创建和控制 3D 地球仪&#xff08;地图&#xff09; 一、添加矩形 <!DOCTYPE html> <html lang"en&…...

路测毫米波雷达标定和目标跟踪

1 2 3 4 5 6 查找匹配时&#xff0c;先对数据排序。逐帧对数据处理&#xff0c;运行速度快。单帧有噪点&#xff0c;多帧处理&#xff0c;准确率更高一些。 7 8 9 10 参考 路侧毫米波雷达标定与目标跟踪哔哔哩_bilibili路侧毫米波雷达标定与目标跟踪, 视频播放量 5855、弹幕量…...

【sqlmap使用手册-持续更新中】

SQLMap 简介 SQLMap 是一个开源的渗透测试工具&#xff0c;用于自动化检测和利用 SQL 注入漏洞。它支持多种数据库&#xff0c;包括 MySQL、PostgreSQL、Oracle、SQL Server 等。 可以通过以下命令安装sqlmap git clone https://github.com/sqlmapproject/sqlmap.git最常用的…...

面向对象三大特征之一:封 装

1、特点 封装是面向对象的核心思想&#xff0c;两层含义&#xff1a;一是一个整体&#xff08;把对象的属性和行为看成一个整体&#xff0c;即封装在一个对象种&#xff09;&#xff0c;二是信息隐藏&#xff0c;对外隐藏&#xff0c;但可以通过某种方式进行调用。 2、访问权…...

qt QMenuBar详解

1、概述 QMenuBar是Qt框架中用于创建菜单栏的类&#xff0c;它继承自QWidget。QMenuBar通常位于QMainWindow对象的标题栏下方&#xff0c;用于组织和管理多个QMenu&#xff08;菜单&#xff09;和QAction&#xff08;动作&#xff09;。菜单栏提供了一个水平排列的容器&#x…...

ESP32的下的蓝牙应用笔记(1)——Beacon蓝牙信标

Beacon蓝牙信标简介 ‌Beacon蓝牙信标‌是一种基于蓝牙低功耗&#xff08;BLE&#xff09;技术的设备&#xff0c;主要用于提供位置信息和数据传输服务。它通过周期性地广播信号&#xff0c;能够在一定范围内与其他蓝牙设备进行通信&#xff0c;从而提供精准的位置信息和相关服…...

控制台安全内部:创新如何塑造未来的硬件保护

在 Help Net Security 的采访中&#xff0c;安全研究人员 Specter 和 ChendoChap 讨论了游戏机独特的安全模型&#xff0c;并强调了它与其他消费设备的不同之处。 他们还分享了对游戏机安全性的进步将如何影响未来消费者和企业硬件设计的看法。 斯佩克特 (Specter) 是本周在阿…...

如何选择适合自己的 Python IDE

集成开发环境&#xff08;IDE&#xff09;是指提供广泛软件开发能力的软件应用程序。IDE 通常包括源代码编辑器、构建自动化工具和调试器。大多数现代 IDE 都配备了智能代码补全功能。在本文中&#xff0c;你将发现目前市场上最好的 Python IDE。 什么是 IDE&#xff1f; IDE…...

Matlab车牌识别课程设计报告模板(附源代码)

目 录 一&#xff0e;课程设计目的……………………………………………3 二&#xff0e;设计原理…………………………………………………3 三&#xff0e;详细设计步骤……………………………………………3 四. 设计结果及分析…………………………………………18 五. …...

kubesphere jenkins自动重定向 http://ks-apiserver:30880/oauth/authorize

问题&#xff1a;登陆kubesphere的jenkins Nodeport IP :Port 46.XXX.XXX.16:30180 自动跳转失败 http://ks-apiserver:30880/oauth/authorize?client_idjenkins&redirect_urihttp://46.XXX.XXX.16:30180/securityRealm/finishLogin&response_typecode&scopeopen…...

Vue3访问页面时自动获取数据

1. 使用生命周期钩子函数 # 后端代码--使用pywebview class Api:def greet(self):greet_text pywebview and vue3response {}response[text] greet_textreturn responseif __name__ __main__:# 前后端通信测试api Api()window webview.create_window(Vue app in pywebvie…...

go语言回调函数的使用

前言 在 Go 语言中&#xff0c;回调函数是一种将一个函数作为参数传递给另一个函数&#xff0c;在特定的事件发生时被调用的编程模式。 一、回调函数的定义 type OnTaskHandler func(r []byte)type remoteTaskClient struct {sync.RWMutexonTask OnTaskHandler } 以上定义了…...