基于CLIP的图像分类、语义分割和目标检测

OpenAI CLIP模型是一个创造性的突破; 它以与文本相同的方式处理图像。 令人惊讶的是,如果进行大规模训练,效果非常好。

在这里插入图片描述

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器

CLIP 将图像视为一系列不重叠的补丁,每个补丁都是一个视觉标记(类似于 NLP 中的文本标记或单词)。 因此,图像只是一系列视觉标记,可以使用旧的转换器像文本一样进行处理。

训练数据是从网络上抓取的图像标题对。 CLIP 模型经过训练,可以使用对比损失将图像/文本转换为向量嵌入。 经过训练的 CLIP 模型将在同一向量空间中生成图像和文本嵌入,使我们能够通过计算 (i) 图像嵌入和 (ii) 文本嵌入之间的余弦相似度来计算 (i) 图像和 (ii) 一段文本的相似度。

将任意图像/文本转换为矢量嵌入正在成为一种基本的人工智能原语。 它免费解锁了许多人工智能功能,而这些功能之前需要数周/数月的训练数据收集和模型训练工作。 实际上,它允许对许多用例进行零样本预测,例如 图像分类、图像分割与目标检测。本文将介绍如何利用CLIP实现这三种图像预测任务。

1、图像分类

给定 (i) 一张图像和 (ii) 可能的类(文本)列表,我们要求 CLIP 生成 (i) 图像嵌入和 (ii) 类(文本)嵌入。 预测的类别是其嵌入最接近图像嵌入的类别。

以下是改编自 zero-shot-prediction 的伪代码:

classes = ["credit card", "driver's license", "passport"]model, preprocess = clip.load('ViT-B/32')image_input = preprocess(image)
text_inputs = torch.cat([clip.tokenize(f"a photo of a {c}") for c in classes])image_features = model.encode_image(image_input)
text_features = model.encode_text(text_inputs)# Pick the most similar class for the image
similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1)

2、图像分割

同样,CLIPSeg 是基于 CLIP 的图像分割模型。 给定(i)图像和(ii)任意文本(例如“煎饼”),它可以找到与图像中文本相对应的轮廓。

CLIPSeg 上的一个优秀的 Hugging Face 博客:使用 CLIPSeg 进行零样本图像分割:

在这里插入图片描述

3、对象检测

最后,OWL-ViT 是一个基于 CLIP 的对象检测模型。 给定(i)图像和(ii)任意文本(例如“煎饼”),它可以找到与图像中的文本相对应的边界框(矩形)。

点击这里查看HF上的 OWL-ViT 演示。

4、CLIP加速产品迭代速度

至关重要的是,没有模型训练步骤! 此外,CLIP可以进行图像分类、图像分割和任意类别的对象检测(开放词汇设置)。 使用自定义模型,每次我们必须预测新类别时,我们都需要收集新类别(标签)的训练数据,并训练新模型。 这是一个非常耗时的过程,通常需要几周到几个月的时间。 有了 CLIP,所有这些步骤都被消除了; CLIP 可以预测任意类别!

因此,对于能够容忍潜在较高错误率的用例,基于 CLIP 的模型可以加快产品迭代速度,而只有对于精度要求较高的用例才需要训练自定义模型。


原文链接:用CLIP分类、分割和检测 — BimAnt

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

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

相关文章

vue中插槽slot

一、插槽-默认插槽 1.作用 让组件内部的一些 结构 支持 自定义 2.需求 将需要多次显示的对话框,封装成一个组件 3.问题 组件的内容部分,不希望写死,希望能使用的时候自定义。怎么办 4.插槽的基本语法 组件内需要定制的结构部分,改用&l…

IoC含义介绍(Spring的核心思想)

Spring是什么? Spring是⼀个开源框架,他让我们的开发更加简单.他⽀持⼴泛的应⽤场 景,有着活跃⽽庞⼤的社区,这也是Spring能够⻓久不衰的原因. 但是这个概念相对来说,还是⽐较抽象.我们⽤⼀句更具体的话来概括Spring,那就是: Spring是包含了众多⼯具⽅法的 IoC 容器…

AUTOSAR Gateway 功能

目录 AUTOSAR Gateway 功能1. Signal/SignalGroup 路由1.1 Signal/SignalGroup 路由的配置 2. PDU部分路由2.1 部分路由配置 3. PDU整体路由4. 总结 AUTOSAR Gateway 功能 Com 模块提供Signal 到Signal 的静态路由,或者SigGrp 到SigGrp的静态路由。通过ComGwMappin…

TCP关闭的两种方法概述

一个TCP需要经过四次挥手才可以关闭连接&#xff0c;能够开启四次挥手的函数有两个&#xff1a; int close(int sockfd) int shutdown(int sockfd,int howto) 接下来就分别讲解一下这两个函数。 close()函数 函数原型 #include<unistd.h> int close(int sockfd)这个函…

【VSS版本控制工具】

VSS版本控制工具 1 安装 VSS2 服务器端配置3 新建用户4 客户端配置Vss2005Vs20055 客户端详细操作 1 安装 VSS 第一步&#xff1a;将VisualSourceSafe2005安装包解压。 第二步&#xff1a;找到setup.exe双击运行。 第三步&#xff1a;在弹出的界面复选框中选中Iaccepttheterms…

小程序如何设置自取模式下的服务方式

设置自取模式下的服务方式是非常重要的&#xff0c;尤其是对于到店自取和到店堂食这两种不同的服务模式。下面我们就来介绍一下如何在小程序中设置这两种服务方式。 在小程序管理员后台->配送设置处&#xff0c;在服务方式处&#xff0c;设置自取情况下的服务方式。默认是&…

linux批量解压zip

方法一 1&#xff0c;创建unzip.sh #!/bin/bashwhile read line do unzip $linedone < filelist.txt #!/bin/bashwhile read line dounzip "$line" >& log & done < filelist.txt3. 在终端中执行以下命令 $ chmod x unzip.sh $ ./unzip.sh 这…

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2)

C#开发的OpenRA游戏之世界存在的属性UpdatesPlayerStatistics(2) 在文件OpenRA\mods\cnc\rules\ defaults.yaml里,可以看到这个配置,它的作用就是让这个单元可以被观察者查看到相关的信息。 UpdatesPlayerStatistics属性同样也是有两个类组成,一个叫做信息类UpdatesPlay…

046_第三代软件开发-虚拟屏幕键盘

第三代软件开发-虚拟屏幕键盘 文章目录 第三代软件开发-虚拟屏幕键盘项目介绍虚拟屏幕键盘 关键字&#xff1a; Qt、 Qml、 虚拟键盘、 qtvirtualkeyboard、 自定义 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object L…

【c++】搜索二叉树的模拟实现

搜索二叉树的模拟实现 k模型完整代码 #pragma once namespace hqj1 {template<class K>struct SBTreeNode{public://这里直接用匿名对象作为缺省参数SBTreeNode(const K& key K()):_key(key), _cleft(nullptr), _cright(nullptr){}public:K _key;SBTreeNode* _cle…

Scala语言使用Selenium库编写网络爬虫

目录 一、引言 二、环境准备 三、爬虫程序设计 1、导入必要的库和包 2、启动浏览器驱动程序 3、抓取网页内容 4. 提取特定信息 5. 数据存储和处理 四、优化和扩展 五、结语 一、引言 网络爬虫是一种自动抓取互联网信息的程序。它们按照一定的规则和算法&#xff0c;…

SQL Server SSIS的安装

标题SQL SERVER 安装 下载SQL SERVER数据库&#xff1a;&#xff08;以SQL SERVER 2022 Developer版本&#xff09;(https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads?rtc1) 以administrator权限安装&#xff1a; 下载完成后&#xff0c;会出现以下界面&a…

使用腾讯云轻量服务器安装AList

新人有免费两个月试用轻量服务器&#xff0c;使用云服务器商自带的webshell登录&#xff1b; 我这儿用docker安装Alist&#xff0c;因为服务器没自带docker&#xff0c;所以具体安装docker centos7.0最快速安装docker的方法 通过 Docker 部署 Alist 命令&#xff1a; docke…

GPT-4 Turbo:OpenAI发布旗舰版GPT-4模型,更便宜|更强大|128K上下文|支持多模态

一、介绍 OpenAI 在 2023 年 11 月 7 日举行首届开发者大会&#xff0c;此次展会的亮点无疑是 GPT-4 Turbo 的亮相&#xff0c;它是 OpenAI 著名的 GPT-4 模型的升级版。 GPT-4 Turbo 有两种变体&#xff1a;一种用于文本分析&#xff0c;另一种能够理解文本和图像。 GPT-4 Tu…

机器学习之支持向量机

支持向量机&#xff1a; 超平面&#xff1a;比数据空间少一个维度&#xff0c;为了将数据进行切分&#xff0c;分为不同的类别&#xff0c;决策边界是超平面的一种 决策边界&#xff1a;就是再二分类问题中&#xff0c;找到一个超平面&#xff0c;将数据分为两类&#xff0c;最…

Vue中nextTick的使用及原理

在Vue.js中&#xff0c;nextTick方法可以让我们在DOM更新后执行一些操作。通常情况下&#xff0c;在数据发生变化后&#xff0c;Vue.js会异步地更新DOM&#xff0c;这样可以减少不必要的DOM操作&#xff0c;提高性能。但是&#xff0c;有时候我们需要在DOM更新后对页面进行一些…

VSCode代码调试

1. C Linux上建议用cmake编译&#xff0c;然后用vscode调试&#xff0c;所以只需修改launch.json这个文件&#xff0c;然后点击Run->Start Debugging进行调试 1.1. launch.json文件 打开方式&#xff1a;Run->Open Configurations {"version": "0.2…

安全测试,接口返回内容遍历~

最近公司被人大量爬取数据&#xff0c;查了一下发现&#xff0c;用户主页接口&#xff0c;没有加用户登录校验&#xff0c;返回了用户的敏感信息有手机号和邮箱&#xff0c;其实这个接口是用不到这些信息的。再加上用户id是自增长的&#xff0c;所以很容易被别人爬取。 既然这…

解决kubernetes集群证书过期的问题

现象&#xff1a; 解决办法&#xff1a; 1.在master节点运行&#xff1a; kubeadm alpha certs renew all 2.在master节点运行&#xff1a; rm -f /etc/kubernetes/kubelet.conf && cp /etc/kubernetes/admin.conf /etc/kubernetes/bootstrap-kubelet.conf 3.在maste…

华为fusionInsigtht集群es连接工具

华为fusionInsight为用户提供海量数据的管理及分析功能&#xff0c;快速从结构化和非结构化的海量数据中挖掘您所需要的价值数据。开源组件结构复杂&#xff0c;安装、配置、管理过程费时费力&#xff0c;使用华为FusionInsight Manager将为您提供企业级的集群的统一管理平台,在…