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

CLIP官方github代码详解

系列文章目录


文章目录

  • 系列文章目录
  • 一、Usage
    • 1、conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0
    • 2、代码
    • 3、
  • 二、
    • 1、
    • 2、
    • 3、
  • 三、
    • 1、
    • 2、
    • 3、
  • 四、
    • 1、
    • 2、
    • 3、
  • 五、
    • 1、
    • 2、
    • 3、
  • 六、
    • 1、
    • 2、
    • 3、
  • 七、
    • 1、
    • 2、
    • 3、
  • 八、
    • 1、
    • 2、
    • 3、


一、Usage

1、conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0

conda: 这是一个包管理工具,用于管理 Python 环境和安装软件包。
install: 这是一个命令,表示要安装软件包。
–yes: 这个选项表示在安装过程中自动确认所有提示,避免手动确认。
-c pytorch: 这个选项指定了要从名为 pytorch 的频道(repository)中安装软件包。Conda 允许从不同的频道获取软件包。
pytorch=1.7.1: 这是要安装的具体软件包及其版本。在这里,表示要安装 PyTorch 的 1.7.1 版本。
torchvision: 这是另一个要安装的软件包,通常与 PyTorch 一起使用,提供计算机视觉相关的工具和数据集。
cudatoolkit=11.0: 这是要安装的 CUDA 工具包的版本,CUDA 是用于 GPU 加速计算的工具。这里指定为 11.0 版本。

2、代码

import torch  # 导入 PyTorch 库,用于深度学习相关操作
import clip  # 导入 CLIP 库,用于处理图像和文本的模型
from PIL import Image  # 从 PIL 库导入 Image 模块,用于图像处理# 检查是否有可用的 GPU,如果有则使用 CUDA,否则使用 CPU
device = "cuda" if torch.cuda.is_available() else "cpu"# 加载 CLIP 模型和预处理函数,使用 ViT-B/32 结构,指定计算设备
model, preprocess = clip.load("ViT-B/32", device=device)# 打开指定的图像文件,进行预处理,并增加一个维度(batch size),然后移动到指定设备
image = preprocess(Image.open("CLIP.png")).unsqueeze(0).to(device)# 对给定的文本进行标记化处理,转换为模型可以理解的格式,并移动到指定设备
text = clip.tokenize(["a diagram", "a dog", "a cat"]).to(device)# 在不计算梯度的情况下进行推理,节省内存和计算资源
with torch.no_grad():# 使用模型编码图像,得到图像特征image_features = model.encode_image(image)# 使用模型编码文本,得到文本特征text_features = model.encode_text(text)# 计算图像和文本之间的对比 logitslogits_per_image, logits_per_text = model(image, text)# 对 logits 进行 softmax 操作,得到每个文本标签的概率分布probs = logits_per_image.softmax(dim=-1).cpu().numpy()# 打印每个标签的概率,显示模型对每个文本的预测概率
print("Label probs:", probs)  # prints: [[0.9927937  0.00421068 0.00299572]]

3、

二、

1、

2、

3、

三、

1、

2、

3、

四、

1、

2、

3、

五、

1、

2、

3、

六、

1、

2、

3、

七、

1、

2、

3、

八、

1、

2、

3、

http://www.lryc.cn/news/437050.html

相关文章:

  • ElementUI 布局——行与列的灵活运用
  • Docker快速部署Apache Guacamole
  • C++学习笔记----7、使用类与对象获得高性能(一)---- 书写类(1)
  • es6中set和map的区别
  • 高级实时通信:基于 Python 的 WebSocket 实现与异步推送解决方案
  • 大二上学期详细学习计划
  • Kafka【十四】生产者发送消息时的消息分区策略
  • SQL优化:执行计划详细分析
  • Android Studio -> Android Studio 获取release模式和debug模式的APK
  • 基于 SpringBoot 的实习管理系统
  • vmware workstation 17 linux版
  • Windows环境本地部署Oracle 19c及卸载实操手册
  • MapStruct介绍
  • 35天学习小结
  • 【iOS】UIViewController的生命周期
  • ELK在Linux服务器下使用docker快速部署(超详细)
  • unity导入半透明webm + AE合成半透明视频
  • 力扣: 四数相加II
  • 径向基函数神经网络RBFNN案例实操
  • Java-数据结构-二叉树-习题(一) (✪ω✪)
  • js 时间戳转日期格式
  • 基于人工智能的自动驾驶系统项目教学指南
  • [Linux#49][UDP] 2w字详解 | socketaddr | 常用API | 实操:实现简易Udp传输
  • 期权组合策略有什么风险?期权组合策略是什么?
  • 从Zotero6到Zotero7的数据迁移尝试?(有错勿喷,多多指教!)
  • 快速排序(分治思想)
  • JAVA相关知识
  • 详解TCP的三次握手
  • Java面试篇基础部分-Java创建线程详解
  • Ubuntu 20.04/22.04无法连接网络(网络图标丢失、找不到网卡)的解决方案