7、InternVL

简介

github
demo

使用网络获取的油画图片,InternVL识别还算可以
在这里插入图片描述

使用stable diffusion生成的图片,InternVL能很好的识别
在这里插入图片描述

权重

huggingface地址

在这里插入图片描述

模型搭建

github地址

下载源码

git clone https://github.com/OpenGVLab/InternVL.git

创建环境

conda create -n internvl python=3.9 -y
conda activate internvl

下载pytorch依赖,要求PyTorch>=2.0,torchvision>=0.15.2,CUDA>=11.6

conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
# or
pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118

下载 flash-attn==0.2.8,这是因为不同版本的 flash attention 会产生细微的结果差异。

git clone https://github.com/Dao-AILab/flash-attention.git
cd flash-attention
git checkout v0.2.8
python setup.py install

下载 timm=0.6.11 、mmcv-full==1.6.2

pip install -U openmim
pip install timm==0.6.11
mim install mmcv-full==1.6.2

下载 transformers==4.32.0

pip install transformers==4.32.0

下载 apex

git clone https://github.com/NVIDIA/apex.git
git checkout 2386a912164b0c5cfcd8be7a2b890fbac5607c82  # https://github.com/NVIDIA/apex/issues/1735
pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-option=--cpp_ext" --config-settings "--build-option=--cuda_ext" ./

在这里插入图片描述

下载依赖包

pip install opencv-python termcolor yacs pyyaml scipy

使用Huggingface快速开始

InternViT-6B

import torch
from PIL import Image
from transformers import AutoModel, CLIPImageProcessormodel = AutoModel.from_pretrained('OpenGVLab/InternViT-6B-224px',torch_dtype=torch.bfloat16,low_cpu_mem_usage=True,trust_remote_code=True).cuda().eval()image = Image.open('./examples/image1.jpg').convert('RGB')image_processor = CLIPImageProcessor.from_pretrained('OpenGVLab/InternViT-6B-224px')pixel_values = image_processor(images=image, return_tensors='pt').pixel_values
pixel_values = pixel_values.to(torch.bfloat16).cuda()outputs = model(pixel_values)

InternVL-C(ontrastive) and InternVL-G(enerative)

import torch
from PIL import Image
from transformers import AutoModel, CLIPImageProcessor
from transformers import AutoTokenizermodel = AutoModel.from_pretrained('OpenGVLab/InternVL-14B-224px',torch_dtype=torch.bfloat16,low_cpu_mem_usage=True,trust_remote_code=True).cuda().eval()image_processor = CLIPImageProcessor.from_pretrained('OpenGVLab/InternVL-14B-224px')tokenizer = AutoTokenizer.from_pretrained('OpenGVLab/InternVL-14B-224px', use_fast=False, add_eos_token=True)
tokenizer.pad_token_id = 0  # set pad_token_id to 0images = [Image.open('./examples/image1.jpg').convert('RGB'),Image.open('./examples/image2.jpg').convert('RGB'),Image.open('./examples/image3.jpg').convert('RGB')
]
prefix = 'summarize:'
texts = [prefix + 'a photo of a red panda',  # Englishprefix + '一张熊猫的照片',  # Chineseprefix + '二匹の猫の写真'  # Japanese
]pixel_values = image_processor(images=images, return_tensors='pt').pixel_values
pixel_values = pixel_values.to(torch.bfloat16).cuda()
input_ids = tokenizer(texts, return_tensors='pt', max_length=80,truncation=True, padding='max_length').input_ids.cuda()# InternVL-C
logits_per_image, logits_per_text = model(image=pixel_values, text=input_ids, mode='InternVL-C')
probs = logits_per_image.softmax(dim=-1)
# tensor([[9.9609e-01, 5.2185e-03, 6.0070e-08],
#         [2.2949e-02, 9.7656e-01, 5.9903e-06],
#         [3.2932e-06, 7.4863e-05, 1.0000e+00]], device='cuda:0',
#        dtype=torch.bfloat16, grad_fn=<SoftmaxBackward0>)# InternVL-G
logits_per_image, logits_per_text = model(image=pixel_values, text=input_ids, mode='InternVL-G')
probs = logits_per_image.softmax(dim=-1)
# tensor([[9.9609e-01, 3.1738e-03, 3.6322e-08],
#         [8.6060e-03, 9.9219e-01, 2.8759e-06],
#         [1.7583e-06, 3.1233e-05, 1.0000e+00]], device='cuda:0',
#        dtype=torch.bfloat16, grad_fn=<SoftmaxBackward0>)# please set add_eos_token to False for generation
tokenizer.add_eos_token = False
image = Image.open('./examples/image1.jpg').convert('RGB')
pixel_values = image_processor(images=image, return_tensors='pt').pixel_values
pixel_values = pixel_values.to(torch.bfloat16).cuda()tokenized = tokenizer("English caption:", return_tensors='pt')
pred = model.generate(pixel_values=pixel_values,input_ids=tokenized.input_ids.cuda(),attention_mask=tokenized.attention_mask.cuda(),num_beams=5,min_new_tokens=8,
)
caption = tokenizer.decode(pred[0].cpu(), skip_special_tokens=True).strip()
# English caption: a red panda sitting on top of a wooden platform

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

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

相关文章

Windows 使用 nmap软件测试 UDP 端口

下载windows版nmap &#xff0c;下载后双机默认安装。 Download the Free Nmap Security Scanner for Linux/Mac/Windows 打开CMD &#xff0c; 输入 cd C:\Program Files (x86)\Nmap C:\Program Files (x86)\Nmap>ncat -z -v -u ntp.aliyun.com 123 Ncat: Version 7.80 ( …

【HarmonyOS开发】共享包HAR和HSP的创建和使用以及三方库的发布

OpenHarmony提供了两种共享包&#xff0c;HAR&#xff08;Harmony Archive&#xff09;静态共享包&#xff0c;和HSP&#xff08;Harmony Shared Package&#xff09;动态共享包。 HAR与HSP都是为了实现代码和资源的共享&#xff0c;都可以包含代码、C库、资源和配置文件&…

redis的搭建及应用(七)-redis的限流插件redis-cell

Redis限流插件-redis-cell redis-cell 是一个用rust语言编写的基于令牌桶算法的的限流模块&#xff0c;提供原子性的限流功能&#xff0c;并允许突发流量&#xff0c;可以很方便的应用于分布式环境中。 下载redis-cell插件 访问Releases brandur/redis-cell (github.com) 上传…

计算机网络——应用层与网络安全(六)

前言&#xff1a; 前几章我们已经对TCP/IP协议的下四层已经有了一个简单的认识与了解&#xff0c;下面让我们对它的最顶层&#xff0c;应用层进行一个简单的学习与认识&#xff0c;由于计算机网络多样的连接形式、不均匀的终端分布&#xff0c;以及网络的开放性和互联性等特征&…

Python流星雨完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

找第三方数据公司获取电商平台商品数据订单数据店铺信息等

API文档 如何获取&#xff1f; 应用业务场景&#xff08;不限&#xff09;

京东tp3手势验证

2024祝我们越来越好。 新年第二天&#xff0c;来看下这最新的tp3手势验证码&#xff0c;很在之前就发过一篇&#xff0c;最近看了看更新了一个东西&#xff0c;但是难点还是在轨迹上面&#xff0c;感兴趣的朋友可以去看看。 risk_jd[jstub] 改了下这&#xff0c;之前我都没带…

基于ThinkPHP的云盘系统Cloudreve本地搭建并实现远程访问

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了&#xff0c;各互联网大厂也纷纷加入战局&#…

Flume基础知识(一):Flume组成原理与架构

1. Flume定义 Flume是Cloudera提供的一个高可用的&#xff0c;高可靠的&#xff0c;分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构&#xff0c;灵活简单。 Flume最主要的作用就是&#xff0c;实时读取服务器本地磁盘的数据&#xff0c;将数据写入到HDFS。 2. Fl…

关于标准那些事——第六篇 四象之“白虎”(要素的编写)

两仪生四象——东方青龙&#xff08;木&#xff09;、西方白虎&#xff08;金&#xff09;、南方朱雀&#xff08;火&#xff09;、北方玄武&#xff08;水&#xff09; 分别对应标准编写之四象——层次的编写、要素的编写、要素的表述、格式的编排。 今天来分享一下 要素的编…

shell脚本查看端口是否连通

shell脚本查看端口是否连通 shell脚本查看是否可以连通对方端口 shell脚本检查端口连通性 场景如&#xff1a;centos服务器上&#xff0c;本机需要连接其他机器的服务&#xff0c;为了确保连接能够连通 一般使用telnet 11.11.11.11:8080 看是否能连通 因为是其他机器的服务…

人才网招聘网程序人才招聘系统/招聘APP/H5/求职招聘兼职/招聘企业职位求职招聘小程序

可以打开封装APP 套餐一:源码+包安装+包过审(无需人力资源许可证)=800 套餐二:全包服务 包服务器+域名+APP+免费认证小程序+H5+PC+采集=1200 包审核 2023年10月新增合伙人功能 七种收费模式: 1、开通VIP套餐收费; 2、发布招聘职位收费; 3、置顶招聘职位收费; 4、刷…

配置光网卡的IP,以及修改网卡后老ip依然存在的问题

首先 1.取出光网卡的uuid uuidgen 网卡名 2.进入到 /etc/sysconfig/network-scripts 编辑一个 ifcfg-网卡名的文件 [rootlocalhost network-scripts]# cat ifcfg-网卡名 # Generated by parse-kickstart BOOTPROTO"static" DEVICE"网卡名" ONBOOT"…

DATASTAGE日期和时间函数_官方文档译文

DATASTAGE日期和时间函数_官方文档译文 原文链接&#xff1a;https://www.ibm.com/docs/en/iis/11.5?topicfunctions-date-time 你可以使用日期和时间函数在Transformer阶段执行关于日期和时间的各种操作。 这些函数中&#xff0c;用于指定日期、时间或时间戳的参数采用特定…

【Bug解决】Failed to configure a DataSource

1、问题描述 SpringBoot项目在启动时报出下面的错误&#xff1a; Description: Failed to configure a DataSource: url attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider…

linux 终端termios NONICANON模式 获取键盘按键

终端默认模式为整行ICANON输出模式&#xff0c;先缓存一行再输出&#xff0c;但有时像获取快键键&#xff0c;getch按个键再按个enter就不合适了&#xff0c;这时可以用NONICANON模式&#xff0c;跳过缓存直接输出。 示例 #include <stdio.h> #include <termios.h&g…

pyqt的qlabel样式调整办法

参考&#xff1a; https://blog.csdn.net/ever_peng/article/details/129428230 # -*- coding:utf-8 -*- import sys from PyQt5.Qt import *class Root(QWidget):def __init__(self, parentNone):super(Root, self).__init__(parent)self.resize(600, 300)self.setWindowTitl…

大一C语言程序细节复盘2

7-4 学生成绩排序 分数 27 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩&#xff0c;定义一个能够表示学生信息的结构类型。输入n&#xff08;n<50&#xff09;个学生的成绩信息&#xff0c;按照学生…

NFS(文件存储服务)

题目 创建NFS共享文件夹,允许InsideCli可以远程挂载,映射挂载到D卷。共享文件夹路径为D:\shares\NFSshare。共享名称为NFSshare。允许未映射的用户访问。共享权限为读/写。服务配置步骤( 服务端 ) 步骤一 - 安装服务 步骤二 - 配置NFS服务 配置共享文件夹 选择共享路径

服务器安装Mysql5.7

一、下载安装包 MySQL :: Download MySQL Community Server 二、将文件上传到服务器 三、解压上传的安装包 tar -xvf xxxx.tar 再解压 tar -zxvf xxxx.tar.gz 四、修改文件名&#xff0c;并移动文件目录 mv mysql-***** mysql mv mysql /usr/local 五、创建一个mysql组和用户…