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

图像分类竞赛进阶技能:OpenAI-CLIP使用范例

OpenAI-CLIP

在这里插入图片描述

官方介绍

  • 尽管深度学习已经彻底改变了计算机视觉,但目前的方法存在几个主要问题:典型的视觉数据集是劳动密集型的,创建成本高,同时只教授一组狭窄的视觉概念;标准视觉模型擅长于一项任务且仅擅长于一项任务,并且需要大量的努力来适应新的任务;在基准测试中表现良好的模型在压力测试中的表现令人失望,1234对整个计算机视觉深度学习方法产生了怀疑。

  • 我们提出了一个旨在解决这些问题的神经网络:它是在各种各样的图像上训练的,有各种各样的自然语言监督,这些图像在互联网上随处可见。通过设计,可以用自然语言指导网络执行各种各样的分类基准测试,而不直接优化基准测试的性能,类似于GPT-25和GPT-3.6的“零镜头”功能。这是一个关键的变化:通过不直接优化基准测试,我们表明它变得更具代表性:我们的系统在不使用任何原始1.28M标记示例的情况下,在ImageNet零拍上与原始ResNet-507的性能匹配时,将这一“鲁棒性差距”缩小了75%。

CLIP使用示例

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import osimport cv2
import skimage
import IPython.display
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from glob import globfrom collections import OrderedDict
import torch
import gc%matplotlib inline
%config InlineBackend.figure_format = 'retina'

安装CLIP库

openai-clip-weights链接

!pip install ../input/openaiclipweights/python-ftfy-master/python-ftfy-master
!pip install ../input/openaiclipweights/clip/CLIP
!cp ../input/openaiclipweights/CLIP-main/CLIP-main/clip/bpe_simple_vocab_16e6.txt /opt/conda/lib/python3.7/site-packages/clip/.
!gzip -k /opt/conda/lib/python3.7/site-packages/clip/bpe_simple_vocab_16e6.txt
!ls /opt/conda/lib/python3.7/site-packages/clip/.import torch
import clip
from tqdm.notebook import tqdm
from torch.utils.data import DataLoader, Datasetprint("Torch version:", torch.__version__)
  • 下载几张图片用于测试
!wget https://farm8.staticflickr.com/6036/6426668771_b5b915e46c_o.jpg
!wget https://c6.staticflickr.com/8/7457/10806045045_02d3dbdcee_o.jpg
!wget https://c1.staticflickr.com/4/3267/2888764405_0a0a608604_o.jpg
!wget https://farm8.staticflickr.com/4028/4294212194_a49663b2b9_o.jpg
!wget https://c5.staticflickr.com/9/8173/8019508216_6540c8686a_o.jpg
!wget https://farm3.staticflickr.com/1146/1357102390_943c5cb999_o.jpg
  • 统计图片列表
files = glob('*.jpg')
print(files)![请添加图片描述](https://img-blog.csdnimg.cn/13db547da25a4f7fa7dc027d4535e93d.png)
  • 列出可用的CLIP预训练模型
clip.available_models()

请添加图片描述

  • 列出可用的CLIP预训练权重
!ls ../input/openaiclipweights/clip/CLIP/models/

请添加图片描述

  • 加载CLIP的基础视觉模型
model, preprocess = clip.load("../input/openaiclipweights/clip/CLIP/models/ViT-B-32.pt")
model.cuda().eval()

请添加图片描述

重头戏,对每一张图片我们可以提问问题,并且查看CLIP会做出什么样的回答

QUERIES = ["a dog","a cat","a elephant","a zebra","a sleeping dog","a sleeping cat","a giraffe","a poodle","animal inside a car","animal outside a car","a sofa","some animals","santa claus","ipod","two mugs","three mugs","blue sky",
] ```## 使用CLIP结合问题对图片进行打分```python
with torch.no_grad():for file in files:print(file)#加载图像数据img = Image.open(file).convert('RGB')#图片可视化plt.imshow(cv2.resize(np.array(img),(256,256)))plt.show()#使用clip对图片进行预处理img = preprocess(img).unsqueeze(0).cuda()#将图片进行编码image_embeddings = model.encode_image(img)image_embeddings/=image_embeddings.norm(dim=-1, keepdim = True)score = []#提问问题并且进行打分for query in QUERIES:text = clip.tokenize(query)cuda()#问题文本编码text_embeddings = model.encode_text(texts)text_embeddings /= text_embeddings.norm(dim=-1, keepdim=True)#计算图片和问题之间的匹配分数sc = float((image_embeddings @ text_embeddings.T).cpu().numpy())score.append(sc)print( pd.DataFrame({'query': QUERIES, 'score': score}).sort_values('score', ascending=False) )print('')print('-------------------------')print('')

请添加图片描述
请添加图片描述

数据集
petfinder-data

参考文章

OpenAI推出CLIP:连接文本与图像,Cover所有视觉分类任务
openai-CLIP

相关文章:

图像分类竞赛进阶技能:OpenAI-CLIP使用范例

OpenAI-CLIP 官方介绍 尽管深度学习已经彻底改变了计算机视觉,但目前的方法存在几个主要问题:典型的视觉数据集是劳动密集型的,创建成本高,同时只教授一组狭窄的视觉概念;标准视觉模型擅长于一项任务且仅擅长于一项任务,并且需要大…...

Metasploit框架基础(一)

文章目录前言一、基础认知二、批量POC/EXP的构想三、poc检测框架的简单实现四、xray五、Meatsploit框架参考前言 Metasploit 一款渗透测试框架漏洞利用的集合与构建和定制满足你的需求的基础漏洞利用和验证的工具 这几个说法都是百度或者官方文档中出现的手法,说…...

pytorch零基础实现语义分割项目(二)——标签转换与数据加载

数据转换与加载项目列表前言标签转换RGB标签到类别标签映射RGB标签转换成类别标签数据数据加载随机裁剪数据加载项目列表 语义分割项目(一)——数据概况及预处理 语义分割项目(二)——标签转换与数据加载 语义分割项目&#x…...

python(8.5)--列表习题

目录 一、求输出结果题 二、计算列表元素个数 三、查找是否存在某元素 四、删除某元素 五、如何在列表中插入元素 六、如何从列表中删除重复的元素 七、 如何将列表中的元素按照从小到大的顺序排序 八、从列表中删除重复的元素 九、大到小的顺序排序 一、求输出结…...

rt-thread pwm 多通道

一通道pwm参考 https://blog.csdn.net/yangshengwei230612/article/details/128738351?spm1001.2014.3001.5501 以下主要是多通道与一通道的区别 芯片 stm32f407rgt6 1、配置PWM设备驱动相关宏定义 添加PWM宏定义 #define BSP_USING_PWM8 #define BSP_USING_PWM8_CH1 #d…...

C语言练习 | 初学者经典练习汇总

目录 1、下面代码输出多少,为什么? 2、你要好好学习么? 3、一直写代码, 4、两个数求最大值 5、输入1-5输出工作日,输入6-7输出休息日,其他输入错误 6、写一个输入密码的代码 7、怎么样当输入数字时候…...

华为OD机试 - 自动曝光(Python) | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 卡片组成的最大数字(Python) | 机试题算法思路 华为OD机试 - 网上商城优惠活动(一)(Python) | 机试题算法思路 华为OD机试 - 统计匹配的二元组个数(Python) | 机试题算法思路 华为OD机试 - 找到它(Python) | 机试题算法思路 华为OD机试…...

「6」线性代数(期末复习)

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 目录 第五章 相似矩阵及二次型 &2)方阵的特征值与特征向量 &3&#xff…...

1.1 硬件与micropython固件烧录及自编译固件

1.ESP32硬件和固件 淘宝搜ESP32模块,20-50元都有,自带usb口,即插即用. 固件下载地址:MicroPython - Python for microcontrollers 2.烧录方法 为简化入门难度,建议此处先使用带GUI的开发工具THonny,记得不是给你理发的tony老师. 烧录的入口是: 后期通过脚本一次型生成和烧…...

【MySQL进阶】视图 存储过程 触发器

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享Java相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...

[Linux篇] Linux常见命令和权限

文章目录使用XShell登录Linux1.Linux常用基本命令:1.1 ls(列出当前的目录下都有哪些文件和目录)1.2 cd (change directory 切换目录)1.3 pwd(查看当前目录的绝对路径)1.4 touch(创建文件)1.5 ca…...

29岁从事功能测试被辞,面试2个月都找不到工作吗?

最近一个28岁老同学联系我,因为被公司辞退,找我倾诉,于是写下此文。 他是14年二本毕业,在我的印象里人特别懒,不爱学习,专业不好,毕业前因为都没找到合适工作,直接去创业了&#xf…...

【C#个人错题笔记1】

观前提醒 记录一些我不会或者少见的内容,不一定适合所有人 字符串拼接 int a3,b8; Console.WriteLine(ab);//11 Console.WriteLine("ab");//ab Console.WriteLine(a""b);//38 Console.WriteLine("ab"ab);//ab38 Console.WriteLine…...

基于lambda的mongodb查询插件

需求背景需要一个像mybatis plus 一样的基于lambda, 且面向对象的查询mongo数据的插件。在网上找了很久,没有发现有类似功能的插件。于是自己手写了一个,借助mongoTemplate屏蔽了底层查询语句的实现细节。在此基础上,实现了查询的统一封装。技…...

基于微信小程序的微信社团小程序

文末联系获取源码 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏览器…...

GEE学习笔记 七十三:【GEE之Python版教程七】静态展示影像和动态展示影像

我们使用GEE在线编辑可以直接通过在线的网页可以加载展示我们计算的结果,而python版的GEE要展示我们的计算结果可能就比较麻烦。如果有同学看过GEE的python版API中可以找到一个类ee.mapclient,这个类的介绍是它是GEE官方通过Tk写的一个加载展示地图的类。…...

PGLBox全面解决图训练速度、成本、稳定性、复杂算法四大问题!

图神经网络(Graph Neural Network,GNN)是近年来出现的一种利用深度学习直接对图结构数据进行学习的方法,通过在图中的节点和边上制定聚合的策略,GNN能够学习到图结构数据中节点以及边内在规律和更加深层次的语义特征。…...

超详细的 pytest 教程(一)使用入门篇

前言 pytest到目前为止还没有翻译的比较好全面的使用文档,很多英文不太好的小伙伴,在学习时看英文文档还是很吃力。本来去年就计划写pytest详细的使用文档的,由于时间关系一直搁置,直到今天才开始写。本文是第一篇,主…...

二叉树理论基础知识点

二叉树的种类 在我们解题过程中二叉树有两种主要的形式:满二叉树和完全二叉树 满二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。 如图所示: 这…...

【算法基础】堆⭐⭐⭐

一、堆 1. 堆的概念 堆(heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: (1)堆中某个结点的值总是不大于或不小于其父结点的值; (2)堆总是一棵完全二叉树。 将根结点最大的堆叫做最大堆或大根堆,根结点…...

GLM-4-9B-Chat-1M实战:vLLM部署教程+Chainlit前端搭建,一步到位

GLM-4-9B-Chat-1M实战:vLLM部署教程Chainlit前端搭建,一步到位 1. 项目概述 GLM-4-9B-Chat-1M是智谱AI推出的新一代预训练模型,支持高达1M(约200万中文字符)的上下文长度。本教程将带您完成从模型部署到前端搭建的完…...

AnythingLLM文档处理革命:如何用统一接口解析20+文件格式构建智能知识库

AnythingLLM文档处理革命:如何用统一接口解析20文件格式构建智能知识库 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型…...

从提示词到执行:OpenClaw百川2-13B-4bits自动化任务拆解全流程

从提示词到执行:OpenClaw百川2-13B-4bits自动化任务拆解全流程 1. 为什么需要任务拆解 上周我需要整理一批行业报告数据,手动操作需要反复在浏览器、Excel和记事本之间切换。当我尝试用OpenClaw百川2-13B模型实现自动化时,发现简单的"…...

Umi-OCR PDF文字识别全攻略:从技术原理到实战应用

Umi-OCR PDF文字识别全攻略:从技术原理到实战应用 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件,适用于Windows系统,支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitcode.com/GitHub_T…...

OpenFly实战:如何用无人机视觉语言导航工具链快速生成10万条训练数据

OpenFly实战:无人机视觉语言导航数据生成的10倍效率革命 当无人机开始理解人类语言指令时,一场人机交互的革命正在悄然发生。去年在深圳某科技园区,一组工程师仅用72小时就完成了过去需要三个月的数据采集工作——他们使用的秘密武器正是Open…...

TMS320F280049系列文章之第二章 工程搭建实战:从零配置到路径设置的避坑指南

1. 工程准备与环境搭建 第一次接触TMS320F280049开发的朋友,可能会被复杂的工程配置劝退。别担心,跟着我的步骤走,保证你能顺利搭建第一个工程。我用的环境是CCS10.3.1和C2000Ware_4_01,这也是目前比较稳定的组合。 先说说准备工作…...

如何通过有效方法提升儿童专注力障碍的注意力集中度?

提升儿童专注力的有效策略与技巧解析 在帮助儿童提高注意力集中度的过程中,首先需要建立一个适合学习的环境。创造一个安静、整洁的学习空间,减少杂音和干扰,有助于孩子更好地专注。此外,开展一些分段学习的小技巧也是非常有效的方…...

从DBC到CAPL全流程避坑指南:BusType设置对自动化测试的影响

从DBC到CAPL全流程避坑指南:BusType设置对自动化测试的影响 在汽车电子测试领域,DBC文件如同CAN网络的"基因图谱",而CAPL脚本则是激活这些基因的"酶"。当两者配合出现问题时,往往不是基因突变,而是…...

云端存储本地化革新:从0到1掌握s3fs-fuse文件系统映射技术

云端存储本地化革新:从0到1掌握s3fs-fuse文件系统映射技术 【免费下载链接】s3fs-fuse FUSE-based file system backed by Amazon S3 项目地址: https://gitcode.com/gh_mirrors/s3/s3fs-fuse 在云计算时代,如何让云端存储像本地硬盘一样便捷访问…...

用PyTorch复现掌纹识别顶会论文:从VGG16到ResNet152的模型蒸馏踩坑实录

从VGG16到ResNet152:掌纹识别模型蒸馏实战中的关键挑战与解决方案 掌纹识别作为生物特征识别领域的重要分支,近年来在深度学习技术的推动下取得了显著进展。然而,当我们将论文中的理论模型转化为实际可运行的代码时,往往会遇到一系…...