多模态模型入门:BLIP与OWL-ViT

BLIP

数据预处理

CapFilt:标题和过滤

由于多模态模型需要大量数据集,因此通常必须使用图像和替代文本 (alt-text) 对从互联网上抓取这些数据集。然而,替代文本通常不能准确描述图像的视觉内容,使其成为噪声信号,对于学习视觉语言对齐而言并非最佳选择。因此,BLIP 论文引入了一种标题和过滤机制 (CapFilt)。它由一个深度学习模型(可过滤掉噪声对)和另一个为图像创建标题的模型组成。这两个模型都首先使用人工注释的数据集进行微调。他们发现,使用 CapFit 清理数据集比仅使用网络数据集可产生更好的性能。

BLIP 架构

在这里插入图片描述

BLIP 架构结合了视觉编码器和多模态编码器-解码器混合 (MED),可实现对视觉和文本数据的多功能处理。其结构如下图所示,其特点是(具有相同颜色的块共享参数):

视觉变换器 (ViT):这是一个普通视觉变换器,具有自注意力、前馈块和用于嵌入表示的 [CLS] 标记。
单峰文本编码器:类似于 BERT 的架构,它使用 [CLS] 标记进行嵌入,并采用类似 CLIP 的对比损失来对齐图像和文本表示。
基于图像的文本编码器:这将 [CLS] 标记替换为 [Encode] 标记。交叉注意层可以集成图像和文本嵌入,从而创建多模态表示。它采用线性层来评估图像-文本对的一致性。
基于图像的文本解码器:用因果自注意力取代双向自注意力,该解码器通过交叉熵损失以自回归的方式进行训练,以完成诸如字幕生成或回答视觉问题之类的任务。
BLIP 的架构将视觉编码器与多模编码器-解码器组件组合在一起,实现了高级文本和图像处理。这种设计使其能够熟练地处理各种任务,从对齐图像-文本对到生成字幕和回答视觉问题。

OWL-ViT

物体检测是计算机视觉中的一项关键任务,借助 YOLO(原始论文,最新代码版本)等模型,该任务取得了重大进展。然而,像 YOLO 这样的传统模型在检测训练数据集之外的物体方面存在局限性。为了解决这个问题,人工智能社区已转向开发能够识别更广泛物体的模型,从而创建了类似于 CLIP 的模型,但用于物体检测。

OWL-ViT:增强功能和功能
OWL-ViT 代表了开放词汇对象检测的一次飞跃。它从类似于 CLIP 的训练阶段开始,重点关注使用对比损失的视觉和语言编码器。这个基础阶段使模型能够学习视觉和文本数据的共享表示空间。

针对物体检测进行微调
OWL-ViT 的创新之处在于其用于对象检测的微调阶段。在这里,OWL-VIT 不使用 CLIP 中使用的标记池和最终投影层,而是采用每个输出标记的线性投影来获得每个对象的图像嵌入。然后使用这些嵌入进行分类,而框坐标则通过小型 MLP 从标记表示中得出。这种方法使 OWL-ViT 能够检测图像中的对象及其空间位置,这比传统的对象检测模型有了显著的进步。

import requests
from PIL import Image, ImageDraw
import torch
from transformers import OwlViTProcessor, OwlViTForObjectDetectionprocessor = OwlViTProcessor.from_pretrained("google/owlvit-base-patch32")
model = OwlViTForObjectDetection.from_pretrained("google/owlvit-base-patch32")url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
texts = [["a photo of a cat", "a photo of a dog", "remote control", "cat tail"]]
inputs = processor(text=texts, images=image, return_tensors="pt")
outputs = model(**inputs)target_sizes = torch.Tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs=outputs, target_sizes=target_sizes, threshold=0.1
)
i = 0  # Retrieve predictions for the first image for the corresponding text queries
text = texts[i]
boxes, scores, labels = results[i]["boxes"], results[i]["scores"], results[i]["labels"]# Create a draw object
draw = ImageDraw.Draw(image)# Draw each bounding box
for box, score, label in zip(boxes, scores, labels):box = [round(i, 2) for i in box.tolist()]print(f"Detected {text[label]} with confidence {round(score.item(), 3)} at location {box}")# Draw the bounding box on the imagedraw.rectangle(box, outline="red")# Display the image
image

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

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

相关文章

MAC M1 —— Install

文章目录 MAC M1 —— Install安装IDEA安装JDK安装Maven安装brew无法创建文件 /data/serverMac 修改终端用户名(主机名)PyCharm MAC M1 —— Install 安装IDEA 关键词:2020到2021.3的激活步骤。找下Download文件夹 安装JDK 在个人的电脑上…

《探索Stable Diffusion:AI绘画的创意之路与实战秘籍》

《Stable Diffusion AI 绘画从提示词到模型出图》介绍了 Stable Diffusion AI 绘画工具及其使用技巧。书中内容分为两部分:“基础操作篇”,讲解了 SD 文生图、图生图、提示词、模型、ControlNet 插件等核心技术的应用,帮助读者快速从新手成长…

java中,怎样用最简单方法实现写word文档

在跨平台环境中实现写word时,如果用现成的库,就会涉及跨平台兼容性问题,比如在安卓与java中实现写word的功能。还有一个问题就是,完全用程序生成word文档,工作量较大。所以采用了模板替换的方法。 docx文档本质就是一…

算法与数据结构:二叉排序树与AVL树

ACM大牛带你玩转算法与数据结构-课程资料 本笔记属于船说系列课程之一,课程链接: 哔哩哔哩_bilibilihttps://www.bilibili.com/cheese/play/ep66799?csourceprivate_space_class_null&spm_id_from333.999.0.0 你也可以选择购买『船说系列课程-年度会…

# AI作画原理:生成对抗网络(GAN)的原理与应用

AI作画原理:生成对抗网络(GAN)的原理与应用 现在,AI已经可以画出非常逼真的图像了。那么,AI是怎么做到这一点的呢? 深度学习与生成对抗网络(GAN) AI画画的核心技术之一是深度学习&…

关于MySQL数据库和数据表的基础

目录 一. 数据库的基础SQL 1. 创建数据库 2. 查看当前有哪些数据库 3. 选中数据库 4. 删除数据库 5. 小结 二. 数据表的基础SQL 1. 创建数据表 2. 查看当前数据库中有哪些表 3. 查看指定表的详细情况(查看表的结构) 4. 删除表 5. 小结 一. 数据库的基础SQL 1. 创建…

史上最全排序算法整理!(1)

1.排序的概念及其应用 1.1排序的概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序,若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之&#…

实战解析:爬取音乐每日推荐歌单并自动分享

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、准备阶段 三、实战步骤 四、总结与展望 一、引言 在数字化时代&#xff0c…

Gartner发布评估威胁情报计划有效性指南:评估威胁情报有效性的四个步骤

许多组织都在努力实施 TI 并评估其价值。安全和风险管理领导者必须使用优先情报要求来评估其 TI 计划的有效性,并根据其组织战略完善该计划。 主要发现 尽管许多组织已将威胁情报 (TI) 纳入其安全计划,但他们很难评估其性能、成熟度以及在相关产品和服务…

糖尿病视网膜病变分级新方法:卷积网络做分割和诊断 + 大模型生成详细的测试和治疗建议

糖尿病视网膜病变分级新方法:卷积网络做分割和诊断 大模型生成详细的测试和治疗建议 提出背景相关工作3.1 数据集3.1.1 病变分割 3.1.2 图像分级3.1.3 大型语言模型(LLMs) 解法 数据预处理 数据增强 网络架构 训练过程 测试过程子解法1…

【408真题】2009-25

“接”是针对题目进行必要的分析,比较简略; “化”是对题目中所涉及到的知识点进行详细解释; “发”是对此题型的解题套路总结,并结合历年真题或者典型例题进行运用。 涉及到的知识全部来源于王道各科教材(2025版&…

【数据结构与算法 | 队列篇】力扣102, 107

1. 力扣102 : 二叉树的层序遍历 (1). 题 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…

STM32FLASH闪存

文章目录 前言首先来回顾一下存储器映像FLASH简介闪存模块组织Flash基本结构(关系)图Flash解锁使用指针访问存储器FLASH操作Flash全擦除Flash页擦除Flash写入 选项字节选项字节操作选项字节擦除选项字节写入 器件电子签名注意闪存控制寄存器一览 前言 本…

[leetcode hot 150]第一百九十一题,位1的个数

题目: 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中设置位的个数(也被称为汉明重量)。 这道题比较简单,直接对最后一位进行与1的与操作,然…

RTPS协议之Messages Module

目录 Messages ModuleType定义RTPS消息结构RTPS消息头子消息结构 RTPS消息接收者SubmessageElementsRTPS HeaderRTPS Submessages Messages Module RTPS Writer和RTPS Reader之间的交换数据的消息。 Type定义 TypePurposeProtocolId_tSubmessageFlagsub msg flagSubmessageK…

第16章-超声波跟随功能 基于STM32的三路超声波自动跟随小车 毕业设计 课程设计

第16章-超声波跟随功能 无PID跟随功能 //超声波跟随if(HC_SR04_Read() > 25){motorForward();//前进HAL_Delay(100);}if(HC_SR04_Read() < 20){motorBackward();//后退HAL_Delay(100);}PID跟随功能 在pid.c中定义一组PID参数 tPid pidFollow; //定距离跟随PIDpidFol…

越来越多的连锁企业选择开源连锁收银系统

连锁企业的收银系统作为其信息化的基础&#xff0c;随着运营的复杂化&#xff0c;越来越多的连锁企业选择开源连锁收银系统来满足其日常经营需要。商淘云为大家分享连锁企业选择开源连锁收银系统的三大原因&#xff0c;大家点赞收藏。 首先是灵活性和定制性强&#xff0c;连锁企…

网络故障与排除(一)

一、Router-ID冲突导致OSPF路由环路 路由器收到相同Router-ID的两台设备发送的LSA&#xff0c;所以查看路由表看到的OSPF缺省路由信息就会不断变动。而当C1的缺省路由从C2中学到&#xff0c;C2的缺省路由又从C1中学到时&#xff0c;就形成了路由环路&#xff0c;因此出现路由不…

登录安全分析报告:小米官网注册

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

重学java 51.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…