关于yolov8-class Pose(Detect)

下面看一下代码:

class Pose(Detect):"""YOLOv8 Pose head for keypoints models."""def __init__(self, nc=80, kpt_shape=(17, 3), ch=()):"""Initialize YOLO network with default parameters and Convolutional Layers."""super().__init__(nc, ch)self.kpt_shape = kpt_shape  # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)self.nk = kpt_shape[0] * kpt_shape[1]  # number of keypoints totalself.detect = Detect.forwardc4 = max(ch[0] // 4, self.nk)self.cv4 = nn.ModuleList(nn.Sequential(Conv(x, c4, 3), Conv(c4, c4, 3), nn.Conv2d(c4, self.nk, 1)) for x in ch)def forward(self, x):"""Perform forward pass through YOLO model and return predictions."""bs = x[0].shape[0]  # batch sizekpt = torch.cat([self.cv4[i](x[i]).view(bs, self.nk, -1) for i in range(self.nl)], -1)  # (bs, 17*3, h*w)x = self.detect(self, x)if self.training:return x, kptpred_kpt = self.kpts_decode(bs, kpt)return torch.cat([x, pred_kpt], 1) if self.export else (torch.cat([x[0], pred_kpt], 1), (x[1], kpt))def kpts_decode(self, bs, kpts):"""Decodes keypoints."""ndim = self.kpt_shape[1]print(self.anchors)if self.export:  # required for TFLite export to avoid 'PLACEHOLDER_FOR_GREATER_OP_CODES' bugy = kpts.view(bs, *self.kpt_shape, -1)a = (y[:, :, :2] * 2.0 + (self.anchors - 0.5)) * self.stridesif ndim == 3:a = torch.cat((a, y[:, :, 2:3].sigmoid()), 2)return a.view(bs, self.nk, -1)else:y = kpts.clone()if ndim == 3:y[:, 2::3] = y[:, 2::3].sigmoid()  # sigmoid (WARNING: inplace .sigmoid_() Apple MPS bug)y[:, 0::ndim] = (y[:, 0::ndim] * 2.0 + (self.anchors[0] - 0.5)) * self.stridesy[:, 1::ndim] = (y[:, 1::ndim] * 2.0 + (self.anchors[1] - 0.5)) * self.stridesreturn y

对于:

y[:, 2::3] = y[:, 2::3].sigmoid()

(1)执行的是对关键点解码过程中的一个特定步骤,特别针对预测关键点的第三个维度(如果存在)进行 sigmoid 激活函数的操作。这样做的目的是将预测值转换成概率值,通常用于处理置信度或其他需要被限制在 0 和 1 之间的值。

(2)y[:, 2::3]: 这是 Python 切片操作的一个例子。这里 y 是一个多维数组(在这种情况下很可能是一个二维数组,代表批量的关键点预测),: 表示选择所有行,2::3 的意思是从索引 2 开始,每隔 3 个元素选取一个。具体到这里,假设每个关键点有三个值(例如,x 位置、y 位置和一个置信度或者其他某种指标),这个操作就是在选择关键点的第三个值。
(3).sigmoid(): 这是对选中的元素应用 Sigmoid 函数。Sigmoid 函数是一种常见的激活函数,在深度学习中广泛使用,特别是在分类问题上。它能将任意值映射到 0 和 1 之间,适合用作将输出解释为概率。在这个上下文中,使用 Sigmoid 可能是为了将第三个值(例如置信度)转换为概率表示。

对于:

y[:, :, :2] * 2.0 + (self.anchors - 0.5) * self.strides

(1)self.anchors 表示锚点的中心位置。对于锚点,通常 (x, y) 坐标会被归一化在 [0, 1] 范围,表示这些中心点相对于原始图像大小的位置。
(2)从 self.anchors 中减去 0.5 是为了把锚点中心转换到一个以网络预测位置为中心的相对坐标系统,然后放缩。
self.strides 对应于从网络输入到特征图尺度的缩小比例。因此,(self.anchors - 0.5) * self.strides 会根据步长将锚点中心转换到特征图的尺度。
(3)y[:, :, :2] 是网络对于每个锚点位置的偏移预测,通过乘以 2.0 将这个预测偏移放缩至预期的大小范围(因为网络输出通常是限制在 [0, 1] 之间的),使得这个偏移能够表示出更远的距离。

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

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

相关文章

【笔记】应对Chrome更新导致Chromedriver失效的解决方案:Chrome For Test

随着网络应用和网站的不断发展,自动化测试变得越来越重要,而Selenium成为了许多开发者和测试人员的首选工具之一。然而,对于使用Selenium来进行网站测试的人来说,Chrome浏览器的频繁更新可能会成为一个头疼的问题。每当Chrome更新…

Docker容器:镜像与容器管理命令

目录 一、镜像管理命令 1、搜索镜像 2、获取镜像 3、镜像加速下载 4、查看下载的镜像文件信息 5、查看下载到本地的所有镜像 6、获取指定镜像的详细信息 7、为本地的镜像添加新的标签 8、删除镜像 8.1 删除指定的镜像 8.2 批量删除多个镜像 9、导出镜像与导入镜像 …

Day 32 122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II

买卖股票的最佳时期Ⅱ 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你…

[Android]使用CompositionLocal隐式传值

1.相关概念 CompositionLocal 是定义数据的方式,而 CompositionLocalProvider 是在 Compose UI 树中传递这些数据的工具。二者合作,为 Compose 应用提供了一个强大的状态和数据流管理机制,使得数据可以在组件间按需传递,而无需通…

使用Python实现批量删除MYSQL数据库的全部外键

我先说下场景,昨天因为我们使用了Java工作流框架flowable,它自动生成了许多工作流相关的表,但是这些表都有外键关联,如果单纯的使用sql语句去一个一个的删除外键,那会非常麻烦,所以我写了一个Python脚本来进…

云上如何实现 Autoscaling: AutoMQ 的实战经验与教训

01 背景 弹性是云原生、Serverless 的基础。AutoMQ 从软件设计之初即考虑将弹性作为产品的核心特质。对于 Apache Kafka 而言,由于其存储架构诞生于 IDC 时代,针对物理硬件设计,存储层强依赖本地存储,已不能很好地适应现在云的时…

Python自动化系列---Python基础2

1、 变量:存储数据的 保险柜:钱,金条,户口本,珠宝,古董 — 存储东西 数据类型: int float bool str 变量名(见名知意):标识符(不能用关键字&…

Linux:Centos7.x系统,无效的密码问题处理

一、情景说明 我新创建了Centos7系统,在使用的过程中,我需要创建一个test账号 那么,同时我就要给这个账号设置一个密码 为了方便,我设置成123456 就报错了 二、解决办法 其实这个问题很容易处理,不需要像其他帖子说…

项目报错com.mall.common.domain.request那么就说明你的项目里面是找不到导入类的包名或者路径

当你的项目里面一直报错是找不到导入类的包名或者路径的时候:com.mall.common.domain.request 这个问题我们阔以分为几个角度来想 1、包路径错误:确保com.mall.common.domain.request这个包路径在项目中是正确的。可能的情况是包名写错了,或…

java包装类型详解

一、用途 在Java语言中,包装类型(Wrapper Classes)是一种特殊的类,它们将八个基本数据类型(byte、short、int、long、float、double、char、boolean)封装在一个类中。这些包装类(如Integer、Lon…

识别有效的IP地址和掩码并进行分类统计

问题概要 请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.0.0到223.…

opencv改变像素点的颜色---------c++

改变像素点的颜色 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>bool opencvTool::changeColor(const std::string image_p, int x_coor, int y_coor, const cv::Scalar color) {std::filesystem::path file(image_p);…

大模型检索召回系统:RAG技术的全面调查与未来展望

随着人工智能技术的飞速发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在自然语言处理&#xff08;NLP&#xff09;领域取得了显著成就。然而&#xff0c;这些模型在处理特定领域或知识密集型任务时仍面临挑战&#xff0c;如产生错误信息或“幻觉”。为了克服这些难…

MC33665 + MC33774 控制流程及 TPL3 帧结构介绍

一. 概述&#xff1a; MC33665A&#xff1a;通用电池管理通信网关和变压器物理层 (TPL) 收发器。该设备通过标准通信协议转发来自不同 TPL&#xff08;NXP 的隔离菊花链协议&#xff09;端口的消息&#xff0c;标准通信协议可确保与市场上可用的微控制器兼容。 MC33774&…

vue实现进入某个页面后替换地址栏路径

需求背景&#xff1a;a系统进入b系统首页&#xff08;"/index"&#xff09;需要携带token&#xff0c;如 example.com/index?token"thisIsMyToken" 需要再b系统中将地址栏携带的token清除 getBtnType(type) {this.$router.push({path: "/",quer…

Fork for Mac v2.42 激活版 Git客户端

Fork for Mac是一款运行在Mac平台上的Git客户端&#xff0c;Fork Mac版具备基本的取、推、提交、修改、创建和删除分支和标签、创建和删除远程备份等功能&#xff0c;还有实用的差异查看器&#xff0c;你可以通过清晰的视图快速发现源代码中的更改。 Fork for Mac v2.42 激活版…

Golang | Leetcode Golang题解之第42题接雨水

题目&#xff1a; 题解: func trap(height []int) (ans int) {n : len(height)if n 0 {return}leftMax : make([]int, n)leftMax[0] height[0]for i : 1; i < n; i {leftMax[i] max(leftMax[i-1], height[i])}rightMax : make([]int, n)rightMax[n-1] height[n-1]for i…

常见术语:DI/DO、AI/AO 和 I/O

在自动化和控制系统领域&#xff0c;DI/DO、AI/AO 和 I/O 是常见的术语&#xff0c;分别代表不同类型的输入输出接口。它们在工业自动化、楼宇自动化、机器人技术等领域有广泛应用。下面详细解释这些术语及其使用示例。 一、DI/DO&#xff08;数字输入/数字输出&#xff09; 数…

React vs React Native写法上的不同

标签 <div> -> <View> / <ScrollView><p> -> <Text><input> -> <TextInput><image> -> <Image><button> -> <Button>css background-image -> <ImageBackground> 除此之外还有一…

一个简单的kafka 消费者

写一个简单的kafka 消费者 1. 依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency>2. 消费者 import com.xxxx.npi.module.common.msg.enums.Topic; import org.apache.…