十、多模态大语言模型(MLLM)

1 多模态大语言模型(Multimodal Large Language Models)

  • 模态的定义
    模态(modal)是事情经历和发生的方式,我们生活在一个由多种模态(Multimodal)信息构成的世界,包括视觉信息、听觉信息、文本信息、嗅觉信息等
  • MLLMs的定义
    由LLM扩展而来具有接收和推理多模态信息能力的模型

2 模型概念区分

  • 跨模态模型
  • 单模态大模型
  • 多模态模型
  • 多模态语言大模型

跨模态模型
在这里插入图片描述
单模态大模型
在这里插入图片描述
多模态大模型
在这里插入图片描述
多模态大语言模型
在这里插入图片描述

3 多模态的发展历程

四个关键里程碑
1 Vision Transformer(ViT)
图片格子的线性映射

DL

Mask Image Modeling 无监督图像特征学习
在这里插入图片描述
2 基于transformer架构的图像-文本联合建模
在这里插入图片描述
3 大规模 图-文 Token对齐模型CLIP
通过余弦距离将文和图转换至同一向量空间。将图像的分类闭集引入至开集
在这里插入图片描述

from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")

在这里插入图片描述

from IPython.display import Image, display
display(Image(filename="bus.jpg"))

在这里插入图片描述

from PIL import Image
image = Image.open("bus.jpg")
cls_list = ["dog", "woman", "man", "bus", "truck","person","a black truck", "a white truck", "cat"]
input = processor(text=cls_list, images=image,return_tensors="pt", padding=True)
outputs = model(**input)
print(outputs.keys())

在这里插入图片描述

logits_per_image = outputs.logits_per_image
probs = logits_per_image.softmax(dim=1)for i in range(len(cls_list)):print(f"{cls_list[i]}: {probs[0][i]}")

在这里插入图片描述
4 多模态大语言模型OpenAI GPTv4
支持图文交替输出,输入文本或图像,输出自然语言
在这里插入图片描述
特点如下:

  • 遵循文字提示
    在这里插入图片描述
  • 理解视觉指向和参考
    在这里插入图片描述
  • 支持视觉和文本联合提示
    在这里插入图片描述
  • 少样本上下文学习
    在这里插入图片描述
  • 强大的视觉认知能力
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5 Google Gemini 原生多模态
    • 输入:文本、语音、图像和视频信息
    • 输出:自然语言、图像
      在这里插入图片描述
  • 支持多模态内容输出
    在这里插入图片描述
  • 复杂图像理解与代码生成
    在这里插入图片描述
!pip install google-generativeai -i https://pypi.tuna.tsinghua.edu.cn/simple
import gradio as gr
from openai import OpenAI
import base64
from PIL import Image
import io
import os
import google.generativeai as genai# Function to encode the image to base64def encode_image_to_base64(image):buffered = io.BytesIO()image.save(buffered, format="JPEG")return base64.b64encode(buffered.getvalue()).decode('utf-8')# Function to query GPT-4 Visiondef query_gpt4_vision(text, image1, image2, image3):client = OpenAI(api_key=os.getenv('OPENAI_API_KEY'))messages = [{"role": "user", "content": [{"type": "text", "text": text}]}]images = [image1, image2, image3]for image in images:if image is not None:base64_image = encode_image_to_base64(image)image_message = {"type": "image_url","image_url": {"url": f"data:image/jpeg;base64,{base64_image}"}}messages[0]["content"].append(image_message)response = client.chat.completions.create(model="gpt-4-vision-preview",messages=messages,max_tokens=1024,)return response.choices[0].message.content# Function to query Gemini-Prodef query_gemini_vision(text, image1, image2, image3):# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.# GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')GOOGLE_API_KEY = os.getenv('GOOGLE_API_KEY')genai.configure(api_key=GOOGLE_API_KEY)model = genai.GenerativeModel('gemini-pro-vision')images = [image1, image2, image3]query = [text]for image in images:if image is not None:query.append(image)response = model.generate_content(query, stream=False)response.resolve()return response.text# 由于Gradio 2.0及以上版本的界面构建方式有所不同,这里使用blocks API来创建更复杂的UIdef main():with gr.Blocks() as demo:gr.Markdown("### 输入文本")input_text = gr.Textbox(lines=2, label="输入文本")input_images = [gr.Image(type="pil", label="Upload Image", tool="editor") for i in range(3)]output_gpt4 = gr.Textbox(label="GPT-4 输出")output_other_api = gr.Textbox(label="Gemini-Pro 输出")btn_gpt4 = gr.Button("调用GPT-4")btn_other_api = gr.Button("调用Gemini-Pro")btn_gpt4.click(fn=query_gpt4_vision, inputs=[input_text] + input_images, outputs=output_gpt4)btn_other_api.click(fn=query_gemini_vision, inputs=[input_text] + input_images, outputs=output_other_api)demo.launch(share=True)if __name__ == "__main__":main()

在这里插入图片描述
在这里插入图片描述

4 多模态大语言模型的应用

  • 工业
  • 医疗
  • 视觉内容认知与编辑
  • 具身智能
  • 新一代人机交互
    在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/831628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL技能树学习——数据库组成

数据库组成: 数据库是一个组织和存储数据的系统,它由多个组件组成,这些组件共同工作以确保数据的安全、可靠和高效的存储和访问。数据库的主要组成部分包括: 数据库管理系统(DBMS): 数据库管理系…

MySQL45讲(一)(40)

回顾binlog_formatstatement STATEMENT 记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等 在RR隔离级别下,binlog_formatstatement 如果执行insert select from 这条语句是对于一张…

OpenCV如何为等值线创建边界旋转框和椭圆(63)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV 为轮廓创建边界框和圆(62) 下一篇:OpenCV的图像矩(64) 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 cv::minAreaRect使用 OpenCV 函数 cv::fitEllipse cv::min…

Gradle 进阶学习 之 build.gradle 文件

build.gradle 是什么? 想象一下,你有一个大型的乐高项目,你需要一个清单来列出所有的乐高积木和它们如何组合在一起。在软件开发中,build.gradle 就是这个清单,它告诉计算机如何构建(组合)你的软…

这是一个简单的照明材料网站,后续还会更新

1、首页效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>爱德照明网站首页</title><style>/*外部样式*/charset "utf-8";*{margin: 0;padding: 0;box-sizing: border-box;}a{text-dec…

开源版本管理系统的搭建一:SVN

作者&#xff1a;私语茶馆 1.Windows搭建SVN版本管理系统 1.1.SVN概要和组成 背景介绍 Svn是一个开源版本管理系统&#xff0c;由CollabNet公司于2000年发布&#xff0c;23年12月发布最新版本Apache Subversion 1.14.3。官方网站&#xff1a;Apache Subversion。 Svn可以直…

G1 - 生成对抗网络(GAN)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 理论知识生成器判别器基本原理 环境步骤环境设置数据准备模型设计模型训练模型效果展示 总结与心得体会 理论知识 生成对抗网络&#xff08;Generative …

U盘惊现“USBC乱码”?别急,数据恢复有妙招!

近日&#xff0c;不少用户反馈在将U盘插入电脑后&#xff0c;出现了一个令人困惑的问题&#xff1a;U盘里的文件或文件夹名突然变成了无法识别的乱码&#xff0c;甚至整个U盘的文件系统显示为“USBC乱码”。面对这种情况&#xff0c;用户往往感到无从下手&#xff0c;担心重要数…

【知识加油站】——机电产品数字孪生机理模型构建

明确一种多领域、多层次、参数化、一致性的机电一体化装备数字孪生机理模型构建准则&#xff01; 关键词英文简称&#xff1a; 数字孪生&#xff1a;DT物联网&#xff1a;IoT网络物理系统&#xff1a;CPS高级架构&#xff1a;HLA统一建模语言&#xff1a;UML数控机床&#xf…

webpack打包工具

目录 1. yarn包管理器 1.1 yarn 是什么, 有什么用? 1.2 yarn的使用 ​​​​​​2. webpack基本概述 2.1 webpack是什么&#xff1f; 2.2 什么是打包&#xff1f; 2.3 webpack能做什么&#xff1f; 3. webpack基本使用步骤 3.1 webpack基本使用步骤 3.2 package.jso…

阿里低代码引擎学习记录

官网 一、关于设计器 1、从设计器入手进行低代码开发 设计器就是我们用拖拉拽的方法&#xff0c;配合少量代码进行页面或者应用开发的在线工具。 阿里官方提供了以下八个不同类型的设计器Demo&#xff1a; 综合场景Demo&#xff08;各项能力相对完整&#xff0c;使用Fusion…

转速和频率转换功能块(CODESYS ST源代码)

1、转速/频率常用转换关系 转速/频率/线速度/角速度计算FC_200 plc计算角速度-CSDN博客文章浏览阅读3.2k次。里工业控制张力控制无处不在,也衍生出很多张力控制专用控制器,磁粉制动器等,本篇博客主要讨论PLC的张力控制相关应用和算法,关于绕线机的绕线算法,大家可以参看专…

手写一个uart协议——rs232

先了解一下关于uart和rs232的基础知识 文章目录 一、RS232的回环测试1.1模块整体架构1.2 rx模块设计1.2.1 波形设计1.2.2代码实现与tb1.2.4 仿真 1.3 tx模块设计1.3.1 波形设计1.3.2 代码实现与tb1.3.4 顶层设计1.3.3 仿真 本篇内容&#xff1a; 一、RS232的回环测试 上位机…

Leaflet在WGS84 Web墨卡托投影与WGS84经纬度投影下空间信息变形问题及修正-以圆为例

目录 前言 一、投影的相关知识 1、经纬度投影 2、Web墨卡托投影 二、经纬度投影下的空间信息展示 1、空间信息展示 2、效果展示 3、经纬度投影下的圆修正 三、Web墨卡托投影下空间信息展示 1、底图引用 2、自定义生成圆 总结 前言 在GIS的知识海洋中&#xff0c;对…

记一次从登录框到前台rce

接口未授权挖掘 在网站未登录的情况下&#xff0c;由于不知道后台接口。唯一办法通过js文件、路径扫描。通过这种收集方式使用burp进行批量扫描&#xff0c;分别探测GET/POST请求。观察响应包跟状态码。判断响应包&#xff0c;确定存在未授权后&#xff0c;再构造数据包。 2 突…

【JVM】Java工具(Arthas,APM,Java Agent,JMX)

Java工具 常见的Java工具有以下几类&#xff1a; 1、诊断类工具&#xff0c;如Arthas、VisualVM等。 2、开发类工具&#xff0c;如Idea、Eclipse。 3、APM应用性能监测工具&#xff0c;如Skywalking、Zipkin等。 4、热部署工具&#xff0c;如Jrebel等。 Arthas中 Java Ag…

【kettle006】kettle访问华为openGauss高斯数据库并处理数据至execl文件(已更新)

1.一直以来想写下基于kettle的系列文章&#xff0c;作为较火的数据ETL工具&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下华为openGauss高斯数据库相关知识体系 3.欢迎批评指正&#xff0c;跪谢…

zookeeper 都有哪些使用场景?(最全 zookeeper 用法介绍)

目录 一、面试官心理分析 二、面试题剖析 1.分布式协调 2.分布式锁 3.元数据/配置信息管理 4.HA高可用性 一、面试官心理分析 现在聊的是分布式系统&#xff0c;面试官跟你聊完了 dubbo 相关的一些问题之后&#xff0c;已经确认你对分布式服务框架/RPC框架基本都有一些认…

windows驱动开发-PNP管理器

PNP技术是由Microsoft提出的&#xff0c;英文Plug and play的缩写&#xff0c;中译即插即用&#xff0c;意思是系统自动侦测周边设备和板卡并自动安装设备驱动程序&#xff0c;做到插上就能用&#xff0c;无须人工干预&#xff0c;是Windows自带的一项技术。所谓即插即用是指将…

计算机网络chapter2——应用层

文章目录 第2章 应用层章节引出—— 2.1应用层协议原理2.1.1 网络应用程序体系结构&#xff08;1&#xff09;客户-服务器体系结构&#xff08;2&#xff09;对等(P2P)体系结构2.1.2 进程通信1.客户和服务器进程2.进程与计算机网络之间的接口3. 进程寻址 2.1.3 可供应用程序使用…