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

COGVLM论文解读(COGVLM:VISUAL EXPERT FOR LARGE LANGUAGE MODELS)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、摘要
  • 二、引言
  • 三、模型方法
    • 1、模型思路
    • 2、融合公式
  • 四、训练方法
  • 总结


前言

2023年5月18日清华&智谱AI发布并开源VisualGLM-6B以来,清华KEG&智谱AI潜心打磨,又开发并开源了更加强大的多模态大模型CogVLM。CogVLM基于对视觉和语言信息之间融合的理解,是一种新的视觉语言基础模型 。CogVLM 可以在不牺牲任何 NLP 任务性能的情况下,实现视觉语言特征的深度融合,替换以往浅融合模式,使用重要的视觉专家模块。为此,我在阅读了论文后做出该论文解读内容,能帮助更多读者学习。

论文链接:点击这里
代码地址:点击这里
网页测试demo:点击这里
个人原文重点翻译:点击这里


一、摘要

我们提出了CogVLM模型,一个更强的open-sorce视觉语言基准模型。该模型不同于现有受欢迎大模型,是直接使图像特征嵌入语言空间浅对齐的方法。而CogVLM缩小语言模型与图像编码特征融合的gap,在这里语言模型是已训练好且冻结的模型,图像特征编码是使用了attention and FFN layer构建的可训练视觉专家模块编码图像特征。结果是,CogVLM能深度融合视觉语言特征,而不牺牲NLP任务新能。 CogVLM在10中 cross-modal基准上实现最先进性能,基准包含…

在这里插入图片描述

二、引言

VLMS模式是功能强大且应用很广的。很多视觉和多模态任务看做是token的预测,如图像说明、视觉问答、视觉定位与分割等任务。作者特别说到之前方法,以BLIP-2举列,The popular shallow alignment methods represented by BLIP-2,是一个浅对齐模型,使用Q-FORMER结构,速度快但性能不够优秀。引出弱的视觉理解能力导致模型幻觉问题,提到CogVLM保持NLP语言模型能力同时添加一个强大视觉理解模型。为此,作者提到的模型可以解决这些问题,实现深层次融合,作者也提到P-tuning与lora方法,更多细节作者说了2点:

More detailed reasons for the performance degradation of p-tuning and shallow alignment include:
第一点:训练好的语言模型权重被冻结。视觉特征嵌入文本空间无法完美匹配,在多个transformer后,视觉特征无法在更深层匹配。
第二点:在预训练期间,先前视觉描述(如 writing style and caption length) 通过粗浅的align方法编码为视觉特征,在视觉与文本一致性是很差的。

作者继续说现有一种可能方法是联合训练图像-文本,PaLi and Qwen-VL模型使用了该方式,但损害NLP能力,也可能影响以文本为中心的任务,如诗词创作和图像背景介绍。PaLM-E文章对VLM模型在预训练期间让语言模型可以训练导致灾难性遗忘,对8B语言模型掉电87.3% NLG。 为此,CogVLM为语言模型增加了可训练的视觉专家模块。在每一层中,图像特征依次都使用各自QKV矩阵+MLP嵌入到文本特征。Visual expert在保持FLOPs不变的情况下将参数数量加倍。由于原语言模型中的所有参数都是固定的,所以当输入序列不包含图像时,其行为与原语言模型相同。
最后作者也说因为先前更多有名VLM模型代码不公开,如…,我们希望开源CogVLM更好帮助研究者和工业应用。

三、模型方法

1、模型思路

模型方法有四个部分组成,第一个是视觉特征提取,只是选择模型不太一样,之前大模型一般都是VIT模型;第二个是MLP结构,没啥可说的;第三个是预训练的大语言模型,也没啥说的,第四个是视觉专家模块,我个人觉得这是一个很大变化,这个和之前的大模型就不太一样了,如图右可看出需要在每层融合,而其它大模型只在最后一层融合。


图中描述为:这个就是CogVLM结构,a图是说明输入方式,图像被预训练的VIT加工嵌入文本特征。b图是transform结构构建在语言模型种,每一层融合都有相应不同的QKV矩阵和FFN结构,紫色部分是可以训练的,其它是冻结的。
注:b图都是图像特征嵌入!!!

当然,我也将该部分重要内容原文与翻译贴于此。

在这里插入图片描述

2、融合公式

融合公式实际就是transform基本结构,作者也是先分别对图像特征与语言特征获得Q K V,并分别concat后,在使用attention公式,如下:

在这里插入图片描述

四、训练方法

作者也给出了训练方法,总体来说进行了2次预训练与finetune,大体是先做文本部分训练,在做跟框相关的训练,同时作者也给出框预测的相关设计思路,如下原文与部分翻译。
在这里插入图片描述
当然,我个人比较在意是visual grounding任务方式,作者也有涉及,如下原文:

在这里插入图片描述

这里也推荐博客:点击这里

总结

本篇论文重点结构是视觉专家模块,这个也是作者说的深入融合的方法。

相关文章:

COGVLM论文解读(COGVLM:VISUAL EXPERT FOR LARGE LANGUAGE MODELS)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、摘要二、引言三、模型方法1、模型思路2、融合公式 四、训练方法总结 前言 2023年5月18日清华&智谱AI发布并开源VisualGLM-6B以来,清华KEG&…...

Flink-时间流与水印

时间流与水印 一、背景二、时间语义1.事件时间(event time)2.读取时间(ingestion time)3.处理时间(processing time) 三、水印-Watermarks1.延迟和正确性2.延迟事件3.顺序流4.无序流5.并行流 四、Windows1.…...

BiLSTM-CRF的中文命名实体识别

项目地址:NLP-Application-and-Practice/11_BiLSTM-ner-bilstm-crf/11.3-BiLSTM-CRF的中文命名实体识别/ner_bilstm_crf at master zz-zik/NLP-Application-and-Practice (github.com) 读取renmindata.pkl文件 read_file_pkl.py # encoding:utf-8import pickle# …...

paddle detection 训练参数

#####################################基础配置##################################### # 检测算法使用YOLOv3,backbone使用MobileNet_v1,数据集使用roadsign_voc的配置文件模板,本配置文件默认使用单卡,单卡的batch_size=1 # 检测模型的名称 architecture: YOLOv3 # 根据…...

用bat制作图片马——一句话木马

效果图 代码 ECHO OFF TITLE PtoR MODE con COLS55 LINES25 color 0A:main cls echo.当前时间:%date% %time% echo.欢迎使用图片马制作工具 echo.请确保图片和php在同一路径下 echo.echo 请将图像文件拖放到此窗口并按 Enter: set /p "imagefile&q…...

json_encode() 返回 false

当 json_encode() 返回 false 时,表示 JSON 编码过程失败。这通常是因为要编码的数据包含了无效的 UTF-8 字符,而默认情况下 json_encode() 会对无效的 UTF-8 字符进行严格的处理 通过添加 JSON_INVALID_UTF8_IGNORE 选项,你告诉 json_encod…...

Android-Jetpack--Hilt详解

善学者尽其理,善行者究其难 一,定义 Hilt是针对dagger2的二次封装依赖注入框架,至于什么是依赖注入,在Android开源框架--Dagger2详解-CSDN博客 中已经讲解,建议大家先去了解Dagger2之后,再来看Hilt。这样就…...

Docker 下载加速

文章目录 方式1:使用 网易数帆容器镜像仓库进行下载。方式2:配置阿里云加速。方式3:方式4:结尾注意 Docker下载加速的原理是,在拉取镜像时使用一个国内的镜像站点,该站点已经缓存了各个版本的官方 Docker 镜…...

1091 Acute Stroke (三维搜索)

题目可能看起来很难的样子,但是看懂了其实挺简单的。(众所周知,pat考察英文水平) 题目意思大概是:给你一个L*M*N的01长方体,求全为1的连通块的总体积大小。(连通块体积大于T才计算在内&#xf…...

java elasticsearch 桶聚合(bucket)

Elasticsearch指标聚合,就是类似SQL的统计函数,指标聚合可以单独使用,也可以跟桶聚合一起使用,下面介绍Java Elasticsearch指标聚合的写法。 实例: // 首先创建RestClient,后续章节通过RestClient对象进行…...

【人生苦短,我学 Python】(4)Python 常用内置数据类型 II —— 序列数据类型(str、tuple、list、bytes和bytearray)

目录 简述 / 前言1. str 数据类型(字符串)1.1 str对象1.2 str对象属性和方法1.3 字符串编码1.4 转义字符1.5 字符串的格式化 2. tuple 数据类型(元组)2.1 创建元组对象 3. list 数据类型(列表)3.1 创建列表…...

Android 9.0 系统默认显示电量百分比

Android 9.0 系统默认显示电量百分比 近来收到项目需求需要设备默认显示电量百分比,具体修改参照如下: /frameworks/base/packages/SystemUI/src/com/android/systemui/BatteryMeterView.java private void updateShowPercent() {final boolean showin…...

原神:夏洛蒂是否值得培养?全队瞬抬治疗量不输五星,但缺点也很明显

作为四星冰系治疗角色,夏洛蒂的实战表现可以说相当让人惊喜。不仅有相当有意思的普攻动作以及技能特效,而且她还有治疗和挂冰等功能性。下面就来详细聊聊夏洛蒂是否值得培养。 【治疗量让人惊喜,但也有缺点】 说实话,在使用夏洛蒂…...

Sublime text 添加到鼠标右键菜单,脚本实现

Sublime text 添加到鼠标右键菜单 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\SublimeText] "Open with Sublime Text" "Icon""D:\\Program Files\\Sublime Text\\sublime_text.exe,0" [HKEY_CLASSES_ROOT\*\shell\Subl…...

【算法】离散化 与 哈希 之间的区别

离散化(Discretization)和哈希(Hashing)是两种不同的数据处理技术,用于处理不同类型的问题。 1. 离散化(Discretization): 离散化是将一组连续的数据映射到有限个离散值的过程。主要…...

Android : GPS定位 获取当前位置—简单应用

示例图: MainActivity.java package com.example.mygpsapp;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat;import android.Manif…...

目标检测——R-CNN算法解读

论文:Rich feature hierarchies for accurate object detection and semantic segmentation 作者:Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik 链接:https://arxiv.org/abs/1311.2524 代码:http://www.cs.berke…...

基于傅里叶变换的运动模糊图像恢复算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、傅里叶变换与图像恢复 4.2、基于傅里叶变换的运动模糊图像恢复算法原理 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %获取角度 img…...

使用mock.js模拟数据

一、安装mock.js npm i mockjs 二、配置JSON文件 我们创建一个mock文件夹,用于存放mock相关的模拟数据和代码实现。 我们将数据全部放在xxx.json文件夹下,里面配置我们需要的JSON格式的数据。 注意:json文件中不要留有空格,否则…...

Android Handler同步屏障:深入解析

Android Handler同步屏障:深入解析 在Android开发中,Handler和MessageQueue是处理线程间通信的重要组件。除了常见的消息发送和处理功能,Handler还提供了一个高级特性:同步屏障。本文将深入探讨这一特性,包括它的工作…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...