【计算机视觉 | 目标检测】术语理解6:ViT 变种( ViT-H、ViT-L ViT-B)、bbox(边界框)、边界框的绘制(含源代码)
文章目录
- 一、ViT & ViT变种
- 1.1 ViT的介绍
- 1.2 ViT 的变种
- 二、bbox(边界框)
- 三、边界框的绘制
一、ViT & ViT变种
1.1 ViT的介绍
ViT,全称为Vision Transformer,是一种基于Transformer架构的视觉处理模型。传统的计算机视觉任务通常使用卷积神经网络(CNN)来提取图像的特征。而ViT的目标是将Transformer模型应用于计算机视觉任务,通过全局性的注意力机制来捕捉图像中的长程依赖关系。
传统的Transformer模型在自然语言处理领域中取得了巨大的成功,但直接将其应用于图像处理任务面临一些挑战,因为图像数据的结构和特征与文本数据不同。ViT通过将图像数据划分为一系列的图像块(或称为图像补丁),并将这些图像块作为序列输入Transformer模型中,来处理图像数据。
ViT模型的基本组成包括:
- 输入编码:输入图像被划分为一系列的图像块,每个图像块经过线性映射(通常使用一个卷积层)后,被表示为一个向量序列。
- Transformer编码器:ViT使用多个Transformer编码器层来处理输入的图像块序列。每个Transformer编码器层由自注意力机制(self-attention)和前馈神经网络(feed-forward network)组成。自注意力机制能够捕捉图像块之间的关联性,并对图像块进行上下文感知的特征表示。
- 分类头部:ViT模型的输出是通过一个额外的线性层进行分类预测。通常在最后一个Transformer编码器层的输出上应用全局平均池化操作,将图像块序列的特征聚合成一个全局特征向量,然后通过线性层进行分类。
ViT模型的训练通常使用有标签的图像数据和监督学习任务,如图像分类。然而,ViT也可以通过预训练和微调的方式在无标签数据上进行学习,以提取丰富的图像特征,然后用于特定的计算机视觉任务。
ViT在一些图像分类、目标检测、语义分割等计算机视觉任务上表现出色,并在一些领域挑战中取得了竞赛水平的结果。它的优点之一是能够处理全局上下文信息,而不仅仅是局部特征,使其在处理大尺寸图像或具有长程依赖关系的任务上具有优势。然而,对于像素级细节或空间信息的精细处理,ViT可能需要更大的模型规模或其他辅助技术来提升性能。
1.2 ViT 的变种
ViT-H,ViT-L和ViT-B是指不同规模和复杂度的Vision Transformer模型变体。
- ViT-H(High resolution):ViT-H是Vision Transformer模型中的高分辨率变体。它通常适用于处理高分辨率图像或更具挑战性的视觉任务。由于处理高分辨率图像可能需要更多的计算资源和内存,因此ViT-H模型可能更庞大和复杂。
- ViT-L(Low resolution):ViT-L是Vision Transformer模型中的低分辨率变体。它通常用于处理低分辨率图像或资源受限的环境。ViT-L模型可能比ViT-H模型更小、更轻量级,适合在资源受限的设备或场景中部署。
- ViT-B(Base resolution):ViT-B是Vision Transformer模型中的基准分辨率变体。它可以被视为ViT模型的中间规模。ViT-B通常是指在资源充足但不需要处理过高或过低分辨率图像时使用的模型。
需要注意的是,具体的ViT-H、ViT-L和ViT-B模型的规模和特征可以因不同的研究论文、实现和应用而有所不同。这些命名约定通常是为了区分不同规模和复杂度的模型变体,并在不同的视觉任务和计算资源约束下选择合适的模型。
二、bbox(边界框)
在目标检测中,bbox(边界框)是一种常用的表示方式,用于标记和定位目标物体的位置。
边界框(bbox)是一个矩形框,通常由四个坐标值表示,分别是左上角的x和y坐标,以及框的宽度和高度。常用的表示形式可以是(x_min, y_min, x_max, y_max)或者(x, y, w, h),其中(x_min, y_min)表示框的左上角坐标,(x_max, y_max)表示框的右下角坐标,(x, y)表示框的中心点坐标,w表示宽度,h表示高度。
在目标检测任务中,边界框用于标注出图像中包含目标的位置和大小,以便进行物体识别和定位。通常,目标检测算法会输出一组边界框,每个框都表示一个检测到的目标物体。
目标检测中的常见方法包括:
- 基于传统机器学习方法的目标检测:这些方法通常使用手工设计的特征和分类器,如Haar特征、HOG特征和SVM分类器等,来检测目标物体。
- 基于深度学习的目标检测:这些方法利用深度神经网络(如卷积神经网络)进行端到端的目标检测。常见的深度学习目标检测算法包括Faster R-CNN、YOLO(You Only Look Once)、SSD(Single Shot MultiBox Detector)等。
目标检测的输出通常包括边界框的位置和类别信息。在一些场景中,还可以输出与边界框相关的其他信息,如目标的置信度、旋转角度、姿态等。
边界框的准确性对目标检测的性能至关重要。通过准确地定位和包围目标物体,可以为后续的目标分类、跟踪和分割等任务提供准确的输入。因此,在目标检测算法的训练和评估过程中,通常会使用各种指标(如IoU、AP等)来度量边界框的准确性和算法的性能。
三、边界框的绘制
from PIL import Image, ImageDrawdef draw_bboxes(image, bboxes, color="red", thickness=2):draw = ImageDraw.Draw(image)for bbox in bboxes:bbox = tuple(map(int, bbox)) # 将浮点数类型的坐标转换为整数类型draw.rectangle(bbox, outline=color, width=thickness)del draw# 示例用法
image_path = "D:/CodeProject/CLIP+SAM/datasets/Objects365/Images/train/obj365_train_000000000002.jpg" # 原始图像路径
bboxes = [(236, 41, 263, 180), (218, 174, 248, 207), (306, 10, 332, 175), (396, 0, 426, 162),(189, 281, 528, 512), (255, 293, 388, 512), (193, 285, 302, 476),(146, 280, 213, 445), (339, 113, 450, 229), (406, 49, 508, 177), (499, 82, 537, 229),(521, 0, 683, 167), (5, 281, 88, 389), (162, 275, 212, 366), (10, 79, 67, 235),(142, 97, 196, 234), (325, 275, 533, 411), (65, 82, 154, 165), (462, 251, 488, 285),(422, 277, 502, 286), (501, 254, 512, 290), (511, 255, 521, 288), (532, 151, 676, 451),(61, 171, 163, 198), (64, 268, 166, 291), (83, 291, 166, 377), (502, 254, 520, 283),(11, 250, 32, 273), (12, 272, 34, 282), (288, 284, 332, 301)
] # 边界框坐标信息image = Image.open(image_path).convert("RGB")
draw_bboxes(image, bboxes)# 显示绘制边界框后的图像
image.show()
原图像为:

打框之后:

相关文章:
【计算机视觉 | 目标检测】术语理解6:ViT 变种( ViT-H、ViT-L ViT-B)、bbox(边界框)、边界框的绘制(含源代码)
文章目录 一、ViT & ViT变种1.1 ViT的介绍1.2 ViT 的变种 二、bbox(边界框)三、边界框的绘制 一、ViT & ViT变种 1.1 ViT的介绍 ViT,全称为Vision Transformer,是一种基于Transformer架构的视觉处理模型。传统的计算机视…...
为kong网关添加限流插件
限流用于控制发送到上游服务的请求速率。 它可用于防止 DoS 攻击、限制网络抓取和其他形式的过度使用。 如果没有速率限制,客户可以无限制地访问您的上游服务,这可能会对可用性产生负面影响。 一、全局范围内的限流 1、启用限流 [rootmin ~]# curl -i…...
Python接口自动化—接口测试用例和接口测试报告模板
简介 当今社会在测试领域,接口测试已经越来越多的被提及,被重视,而且现在好多招聘信息要对接口测试提出要求。区别于传统意义上的系统级别测试,很多测试人员在接触到接口测试的时候,也许对测试执行还可以比较顺利的上…...
C++无锁队列
C无锁队列是一种多线程编程技术,它可以在不使用锁的情况下实现线程安全的队列。它可以提高多线程程序的性能。 无锁队列的主要思想是让多个线程同时访问队列,而不需要使用锁来保护共享资源。这可以避免锁竞争和死锁等问题,从而提高程序的效率…...
MySQL 5.7 修改账号密码
MySQL 5.7 修改账号密码 1、概述2、更改密码2.1、寻找命令2.2、补充 3、总结 1、概述 大家好,我是欧阳方超。 MySQL数据库安装后设置的密码太简单了, 近期安全检查,这种弱密码全部得修改,好吧那就开始改吧 2、更改密码 2.1、寻…...
ARM实验6-基于中断的按键处理程序实验
一、实验名称:基于中断的按键处理程序实验 二、实验目的: 1.掌握ARM处理器的中断处理过程。 2.掌握ARM处理器中断服务程序的编写方法。 3.通过该编程实验,进一步巩固和强化学生ARM汇编编程的能,ARM应用程序框架,培养学生实际应用的能力。 三、实验内容: 按下面电路图,…...
安全认证:
1. 认证概述 为什么要有认证? 防止非法路由器接入企业内网的ospf路由器,保护内网安全 2. 认证方式 认证方式分为接口认证和区域认证,接口认证和区域认证没有本质的区别,接口认证是当区域内链路过多的情况下,接口认证…...
C++11新特性:decltype类型推导
上一节所讲的 auto,用于通过一个表达式在编译时确定待定义的变量类型,auto 所修饰的变量必须被初始化,编译器需要通过初始化来确定 auto 所代表的类型,即必须要定义变量。若仅希望得到类型,而不需要(或不能)定义变量的…...
linux下DD 命令常用操作 —— 筑梦之路
DD命令介绍 dd命令是LINUX下的一个命令行工具,用于数据转换和处理。dd代表“数据复制”,它可以从一个设备或文件中读取数据,然后将数据写入到另一个设备或文件中。dd命令可以用于多种用途,包括以下几个方面: 磁盘备份…...
android 12.0状态栏高度为0时,系统全局手势失效的解决方案
1.概述 在12.0的framework 系统全局手势事件也是系统非常重要的功能,但是当隐藏状态栏, 当把状态栏高度设置为0时,这时全局手势事件失效,这就要从系统手势滑动流程来分析 看怎么样实现系统手势功能的,然后根据功能做修改 2. 状态栏高度为0时,系统全局手势失效的解决方案…...
使用Jmeter进行http接口性能测试
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。 但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试…...
公开报名|CCPTP云渗透测试认证专家第二期培训班,将在云网基础设施安全国家工程研究中心举办
CCPTP云渗透测试认证专家由云安全联盟大中华区发布,是全球首个云渗透测试能力培养课程及人才培养认证,弥补了国内云渗透测试认知的差距和技能型人才培养的空白。4月1日-13日,CCPTP 首期班成功举办,于2023年5月10日部分学员完成考试…...
【App自动化测试】(十八)多设备管理平台——openSTF
目录 1. openSTF2. openSTF的安装部署2.1 MacOS2.2 Windows 3. STF操作3.1 基础操作——远程调试虚拟设备3.2 高阶操作——远程调试真机 1. openSTF OpenSTF:是一个手机设备管理平台,可以对手机进行远程管理、调试、远程手机桌面监控等操作。 特点&…...
Kafka的ACK配置含义详解
Kafka的ACK配置含义详解 Kafka producer有三种ack机制 初始化producer时在config中进行配置; 参数-1,0,1分别代表什么含义 ack等于0: 含义 意味着producer不等待broker同步完成的确认,只要继续发送下一条(批)信息 优缺点 提供了最低的…...
Redis主从架构、数据同步原理、全量同步、增量同步
目录 专栏导读一、Redis主从架构二、数据同步原理三、全量同步的流程三、可以从以下几个方面来优化Redis主从就集群四、全量同步和增量同步区别?五、什么时候执行全量同步?六、什么时候执行增量同步?七、超卖问题 大家好,我是哪吒…...
面了一个测试工程师要求月薪26K,总感觉他背了很多面试题...
最近有朋友去字节面试,面试前后进行了20天左右,包含4轮电话面试、1轮笔试、1轮主管视频面试、1轮hr视频面试。 据他所说,80%的人都会栽在第一轮面试,要不是他面试前做足准备,估计都坚持不完后面几轮面试。 其实&…...
大数据简介
大数据简介 什么是大数据 最近几年,IT行业最火的名词中,少不了"大数据"、"人工智能"、"云计算"、"物联网"、"区块链"等等这些名词。针对于"大数据"这个名词,现在更是全国老…...
Elasticsearch数据库
目录 1. 什么是ElasticSearch1.1 概念及特点1.2 ElasticSearch适用场景概述 2. 安装ElasticSearch2.1 下载安装包2.2 环境说明2.3 创建es的用户2.4 创建es存储位置2.5 安装es2.5 修改配置文件2.6 系统优化2.7 安装jdk环境2.8 切换es用户启动数据库2.9 systemctl管理2.10 访问 3…...
Axure教程—表格(中继器)
本文将教大家如何用AXURE中的中继器制作表格 一、效果介绍 如图: 预览地址:https://oc3e6a.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87854863?spm1001.2014.3001.5501 二、功能介绍 可以在表格中插入…...
Linux转HTTP代理服务器
在 Linux 上搭建 HTTP 代理服务器,可以使用 Squid 或者 Nginx 等软件来实现。以下是使用 Squid 搭建 HTTP 代理服务器的步骤: 1. 安装 Squid 在终端中输入以下命令安装 Squid: sudo apt-get update sudo apt-get install squid 2. 配置 Sq…...
如何彻底解决文献格式混乱?Zotero格式规范化处理工具的创新方案
如何彻底解决文献格式混乱?Zotero格式规范化处理工具的创新方案 【免费下载链接】zotero-format-metadata Linter for Zotero. A plugin for Zotero to format item metadata. Shortcut to set title rich text; set journal abbreviations, university places, and…...
从大疆NAZA换到匿名P2飞控:一个DIY玩家的真实体验与参数调试避坑指南
从大疆NAZA到匿名P2飞控:一位DIY玩家的深度迁移指南 当我的F450机架在狭小卧室里显得笨拙不堪时,我意识到需要一次彻底的"瘦身计划"。这不是简单的机架更换,而是一次从商业飞控到开源系统的完整迁移——将大疆NAZA积累的经验移植到…...
FactoryBluePrints:颠覆性全流程工厂自动化解决方案
FactoryBluePrints:颠覆性全流程工厂自动化解决方案 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints是戴森球计划的开源蓝图仓库,…...
Win11Debloat:5分钟解决Windows 11卡顿的终极优化指南
Win11Debloat:5分钟解决Windows 11卡顿的终极优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cu…...
THE LEATHER ARCHIVE快速体验:一键生成杂志级AI皮衣大片,小白也能当设计师
THE LEATHER ARCHIVE快速体验:一键生成杂志级AI皮衣大片,小白也能当设计师 1. 项目介绍与核心价值 想象一下,你不需要专业的设计技能,就能创造出媲美时尚杂志封面的皮衣设计作品。THE LEATHER ARCHIVE正是这样一个让创意触手可及…...
拓扑排序别再死记硬背了!用邻接矩阵手搓一个(附C++/C语言单文件实现)
拓扑排序的工程化实现:从邻接矩阵到零依赖代码实战 第一次接触拓扑排序时,我盯着教科书上的算法描述看了半天——"选择一个入度为0的顶点并输出"、"从图中删除该顶点和所有以它为起点的有向边"——这些抽象的描述让我困惑不已。直到…...
终极指南:Czkawka开源文件管理工具,5分钟解决存储空间不足难题
终极指南:Czkawka开源文件管理工具,5分钟解决存储空间不足难题 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 你是否经常遇…...
深入解析Nordic NRF52832的NFC天线与GPIO复用设计
1. NFC天线硬件设计基础 NRF52832芯片的NFC功能通过P0.09和P0.10两个专用引脚实现,这两个引脚在设计时需要特别注意硬件连接规范。实际项目中,我遇到过不少开发者直接将这两个引脚当作普通GPIO使用导致通信异常的情况——因为默认状态下它们被硬件映射为…...
NCCL中RoCE与RDMA的深度解析:如何优化分布式训练网络性能
1. 为什么RoCE和RDMA对分布式训练如此重要? 第一次接触分布式训练时,我盯着日志里不断跳动的通信耗时直发愁。8块GPU明明都在满负荷运转,但总训练时间就是比单卡8要长不少。后来用NVIDIA的Nsight工具一分析,发现超过30%的时间都花…...
手把手教你用DuckDB 1.3.0的DuckLake功能搭建数据湖(PostgreSQL+MinIO实战)
实战指南:基于DuckDB 1.3.0与MinIO构建企业级数据湖架构 在数据驱动的时代,企业需要更灵活、高效的解决方案来管理海量数据。DuckDB 1.3.0推出的DuckLake功能,结合PostgreSQL的元数据管理能力和MinIO的对象存储优势,为中小型企业…...
