淘宝网站建设类目网站加油站

pingmian/2025/10/8 16:57:21/文章来源:
淘宝网站建设类目,网站加油站,什么是网站改版,未来 网站开发 知乎标签分配 部分内容参考自#xff1a;https://www.bilibili.com/video/BV1ge41117va 简单介绍一些特点#xff0c;主要结合动态标签分配的一个实例来看 从更高抽象的层面理解 assign#xff1a; 所有用于最终检测的特征图上的所有 point 都具备学习并预测目标的能力#xf…标签分配 部分内容参考自https://www.bilibili.com/video/BV1ge41117va 简单介绍一些特点主要结合动态标签分配的一个实例来看 从更高抽象的层面理解 assign 所有用于最终检测的特征图上的所有 point 都具备学习并预测目标的能力在给定一幅图像及其目标 gt bbox 的情况下为每个目标 gt bbox 选择恰当的特征图 point 进行学习预测的过程就是分配。 个人理解就是 每个 anchor 锚点都有预测 bbox 的能力对一张图像来说将先验框 gt_bbox 与合适的锚点 points 进行匹配训练 points 来预测。 一个锚点 point 分配给一个 gt_bbox 即标注框但是一个 gt_bbox 可以和多个锚点 points 进行匹配 前提 仅当感受野中心命中 gt bbox 的 point 才有可能被选用来预测这个 bbox 个人理解是anchor 锚点要位于 gt_bbox 中才能被用来预测 两种类型的匹配机制 基于规则的分配、自动分配与网络的输出有关 目标匹配是 One-stage Anchor-free 检测器核心中的核心 实例分析 以 NanoDet-Plus 使用的 DynamicSoftLabelAssigner 来分析这里主要分析动态分配 class DynamicSoftLabelAssigner(BaseAssigner):Computes matching between predictions and ground truth withdynamic soft label assignment.使用动态软标签分配计算预测与真实值之间的匹配Args:topk (int): Select top-k predictions to calculate dynamic kbest matchs for each gt. Default 13.为每个 gt 选择 k 个最佳预测来计算动态 k 最佳匹配。默认值为13iou_factor (float): The scale factor of iou cost. Default 3.0.IoU 代价的缩放因子。默认值为3.0ignore_iof_thr (int): whether ignore max overlaps or not.Default -1 (1 or -1).是否忽略最大重叠def __init__(self, topk13, iou_factor3.0, ignore_iof_thr-1):self.topk topkself.iou_factor iou_factorself.ignore_iof_thr ignore_iof_thr以 gt 开头的变量为真实标注信息 num_priors 即锚点 point 的数量num_gts 即一幅图中真实标注的数量其中 decoded_bboxes 为根据 preds 信息预测的 bboxes 将 point 和 gt 进行匹配还是刚才所说的一个 point 对应一个 gt一个 gt 可以对应多个 point 简单总结一下过程具体详细的内容看代码及注释 以下用包住的内容为张量尺寸大小对于理解也十分有帮助 重点部分 首先初步选出可能匹配的锚点在所有锚点num_priors中选出 gt_bboxes 包住的锚点即初步的有效锚点 (num_valid) 然后计算代价矩阵 cost_matrix以及 IoU 矩阵 pairwise_ious均为**num_valid, num_gts**大小即初步有效的锚点与真实标注的交叉矩阵 调用 dynamic_k_matching根据 iou 排序选出一个 gt_bbox 对应的 topk 个锚点计算 iou 的和将其作为 dynamic_k将其作为该 gt_bbox 匹配的锚点个数规定下限为1个cost 最小的前 dynamic_k 个锚点对每个 gt_bbox 均为同样的操作如果存在一个锚点与多个 gt_bbox 匹配则只保留代价最小的那一个 gt_bbox并更新有效锚点为匹配了 gt_bbox 的锚点 最终得到锚点与 gt_bbox 的匹配一个或多个有效锚点 priors 匹配一个 gt_bbox 更多的细节查看下方提供的代码即注释 def assign(self,pred_scores, # [num_priors, num_classes]priors, # [num_priors, 4] [cx, cy, stride_x, stride_y]decoded_bboxes, # [num_priors, 4] [tl_x, tl_y, br_x, br_y]gt_bboxes, # [num_gts, 4] [tl_x, tl_y, br_x, br_y]gt_labels, # [num_gts]gt_bboxes_ignoreNone,):INF 100000000num_gt gt_bboxes.size(0)num_bboxes decoded_bboxes.size(0)# assign 0 by default# 创建一个与 decoded_bboxes 在同一设备上# 长度为 num_bboxes, 类型为 torch.long 的一维向量assigned_gt_inds decoded_bboxes.new_full((num_bboxes,), 0, dtypetorch.long)# 锚点中心 (N, 2)prior_center priors[:, :2]# (N, M, 2) (N, 1, 2) - (M, 2) 广播规则lt_ prior_center[:, None] - gt_bboxes[:, :2]# 同上 (N, M, 2)rb_ gt_bboxes[:, 2:] - prior_center[:, None]# 合并左上角和右下角的相对位置信息 (N, M, 4)deltas torch.cat([lt_, rb_], dim-1)# 判断 N个 锚点是否在 M个 gt_bboxes 内部, 得到 (N, M) 尺寸的向量is_in_gts deltas.min(dim-1).values 0# (N, M) (N, ), 对每个锚点, 判断是否有一个 gt_bboxes 包含它# valid_mask 表示了用于预测的锚点是否在 gt_bboxes 内部 (num_priors)valid_mask is_in_gts.sum(dim1) 0# 获取有效锚点 (在gt_bboxes内部) 的对应的 preds (label以及bbox)# (num_valid, 4)valid_decoded_bbox decoded_bboxes[valid_mask]# (num_valid, num_classes)valid_pred_scores pred_scores[valid_mask] # 被 gt_bboxes 包含的锚点数量 num_validnum_valid valid_decoded_bbox.size(0)# 如果没有 gt_bboxes, 没有预测框或者没有有效匹配, 则直接返回空的分配结果if num_gt 0 or num_bboxes 0 or num_valid 0:# No ground truth or boxes, return empty assignmentmax_overlaps decoded_bboxes.new_zeros((num_bboxes,)) # 0if num_gt 0:# No truth, assign everything to backgroundassigned_gt_inds[:] 0if gt_labels is None:assigned_labels Noneelse:assigned_labels decoded_bboxes.new_full((num_bboxes,), -1, dtypetorch.long)return AssignResult(num_gt, assigned_gt_inds, max_overlaps, labelsassigned_labels)# 计算有效匹配的锚点预测的 bbox 与 gt_bboxes 之间的 IoU 矩阵# (num_valid, num_gts) - (num_valid, 4), (num_gts, 4)pairwise_ious bbox_overlaps(valid_decoded_bbox, gt_bboxes)# 计算 IoU 的代价iou_cost -torch.log(pairwise_ious 1e-7)# 将真实的类别转换成 onehot 编码 (num_valid, num_gts, num_classes)gt_onehot_label (F.one_hot(gt_labels.to(torch.int64), pred_scores.shape[-1]).float().unsqueeze(0) # 在第一个维度上增加一个维度.repeat(num_valid, 1, 1) # 第一个维度重复 num_valid 次)# 赋值有效类别的分数 (num_valid, num_classes) -# (num_valid, 1, num_classes) - (num_valid, num_gts, num_classes)valid_pred_scores valid_pred_scores.unsqueeze(1).repeat(1, num_gt, 1)# 生成软标签, 考虑 IoU 权重 (num_valid, num_gts, num_classes)soft_label gt_onehot_label * pairwise_ious[..., None]# 软标签(真实标签 * IoU) - 预测得分scale_factor soft_label - valid_pred_scores.sigmoid()# 使用二元交叉熵损失计算分类损失 (num_valid, num_gts, num_classes)cls_cost F.binary_cross_entropy_with_logits(valid_pred_scores, soft_label, reductionnone) * scale_factor.abs().pow(2.0)# (num_valid, num_gts)cls_cost cls_cost.sum(dim-1)# 计算总代价, cls 代价 bbox 代价 (num_valid, num_gts)cost_matrix cls_cost iou_cost * self.iou_factor# 时刻记着: valid 指的是在 gt_bboxes 内的锚点 point 的索引# 根据代价矩阵, iou矩阵, 均为 (num_valid, num_gts)# 进行动态 K-matching, 得到匹配的部分锚点, 这些锚点每个都对应一个 gt_bbox# 每个锚点分配给一个 gt_bbox, 一个 gt_bbox 可以对应多个锚点matched_pred_ious, matched_gt_inds self.dynamic_k_matching(cost_matrix, pairwise_ious, num_gt, valid_mask)# convert to AssignResult format # matched_pred_ious 为锚点预测的 bbox 与匹配的 gt_bbox 的 iou# matched_gt_inds 为锚点匹配的 gt_bbox 的索引# 分配的 gt_bbox 的索引, 未分配的为 0(初始值)assigned_gt_inds[valid_mask] matched_gt_inds 1# 分配的标签 (num_priors)assigned_labels assigned_gt_inds.new_full((num_bboxes,), -1)# 得到分配的类别 根据 gt 的索引确认对应的类别 (num_priors)assigned_labels[valid_mask] gt_labels[matched_gt_inds].long()# 最大 IoU (num_priors)max_overlaps assigned_gt_inds.new_full((num_bboxes,), -INF, dtypetorch.float32)# 填入有效锚点对应的 IoUmax_overlaps[valid_mask] matched_pred_ious# 这里的判断默认情况下不会为 Trueif (self.ignore_iof_thr 0 # 默认 -1 0and gt_bboxes_ignore is not Noneand gt_bboxes_ignore.numel() 0and num_bboxes 0):ignore_overlaps bbox_overlaps(valid_decoded_bbox, gt_bboxes_ignore, modeiof)ignore_max_overlaps, _ ignore_overlaps.max(dim1)ignore_idxs ignore_max_overlaps self.ignore_iof_thrassigned_gt_inds[ignore_idxs] -1# 返回 num_gts, 锚点 priors 分配的 gt 索引以及对应的 IoU, 匹配的 gt 对应的标签return AssignResult(num_gt, assigned_gt_inds, max_overlaps, labelsassigned_labels) # 根据预测框与真实框之间 IoU 以及损失矩阵来进行匹配def dynamic_k_matching(self, cost, pairwise_ious, num_gt, valid_mask):Use sum of topk pred iou as dynamic k. Refer from OTA and YOLOX.Args:cost (Tensor): Cost matrix.pairwise_ious (Tensor): Pairwise iou matrix.num_gt (int): Number of gt.valid_mask (Tensor): Mask for valid bboxes.# 初始化一个与 cost 同形状的匹配矩阵 (num_valid, num_gts)matching_matrix torch.zeros_like(cost)# select candidate topk ious for dynamic-k calculationcandidate_topk min(self.topk, pairwise_ious.size(0))# 选取每个真实框的前 topk 个最高 IoU 值 (candidate_topk, num_gt)topk_ious, _ torch.topk(pairwise_ious, candidate_topk, dim0)# calculate dynamic k for each gt# 计算每个 gt 的包含的锚点 points 的 IoU 最高的前 topk 个值的和, 作为动态 k# 即这里的 k 会根据前 topk 个 iou的值变化 (num_gts)dynamic_ks torch.clamp(topk_ious.sum(0).int(), min1)# 进行动态匹配, 遍历 gt_bboxes# 对于每个 gt 挑选其中的 dymamic_k 个锚点进行匹配for gt_idx in range(num_gt):# 选取当前 gt_bbox 对应的损失矩阵中前 k 个最小损失值的索引, 即对应的锚点的索引# cost 维度为 (num_priors, num_gts)_, pos_idx torch.topk(cost[:, gt_idx], kdynamic_ks[gt_idx].item(), largestFalse)# 将对应的匹配矩阵中的值置为 1, 对应的 dynamic_k 个锚点和该 gt 匹配 matching_matrix[:, gt_idx][pos_idx] 1.0del topk_ious, dynamic_ks, pos_idx# matching_matrix 尺寸为 (num_priors, num_gt), 挑选出匹配的锚点 (num_priors)# 一个锚点与两个或更多个 gt_bbox 匹配 (num_priors)prior_match_gt_mask matching_matrix.sum(1) 1# 如果存在一个锚点和多个 gt_bboxes 匹配, 那么则选择代价最小的那一个if prior_match_gt_mask.sum() 0:# 对于匹配多个 gt_bbox 的锚点, 选择代价最小的 gt_bbox 进行匹配 (num_priors) cost_min, cost_argmin torch.min(cost[prior_match_gt_mask, :], dim1)# 将匹配多个 gt_bbox 的锚点的匹配清空, 选择代价最小的那一个 gt_bboxmatching_matrix[prior_match_gt_mask, :] * 0.0matching_matrix[prior_match_gt_mask, cost_argmin] 1.0# 匹配了 gt_bbox 的锚点矩阵 (num_priors) # get foreground mask inside box and center priorfg_mask_inboxes matching_matrix.sum(1) 0.0# 更新有效 mask, valid_mask 表示的为匹配了 gt_bbox 的锚点 (num_priors)valid_mask[valid_mask.clone()] fg_mask_inboxes# 获取有效匹配的每个预测框对应的 gt_bbox 的索引 maching_matrix (num_priors, num_gts)# argmax 获取最大的那一个值的索引 (num_valid_priros, num_gts) - (num_valid_priors)matched_gt_inds matching_matrix[fg_mask_inboxes, :].argmax(1)# 计算有效匹配的每个预测框与 gt_bbox 之间的 IoU # (num_valid, num_gts) - (num_valid) - (num_valid_priors)matched_pred_ious (matching_matrix * pairwise_ious).sum(1)[fg_mask_inboxes]# 每个 prior 与一个 gt_bbox 对应 (一个 gt_bbox 可以对应多个预测框)return matched_pred_ious, matched_gt_inds

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

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

相关文章

网站怎么做图片动态图片不显示了app store应用商店下载

UrlRewriter 是微软封装好了的一个URL重写组件。使用它可以让我节约很多自已开发的时间。 好了,开始讲述我的应用经验,这只是很菜鸟的经验,高手就不用看了。 第一步,请从此下载此组件。解压,把UrlRewriter.dll copy到你…

青岛冠通市政建设有限公司网站网站搭建

文章目录 1. 配置反向代理1.1 前置准备1.2 代理服务器配置1.3 真实服务器配置1.4 客户机配置 2. Tomcat 多实例部署2.1 部署JDK2.2 设置JDK环境变量2.3 部署Tomcat服务2.4 路径启动 3. Nginx联动Tomcat实现动静分离、负载均衡3.1 基本原理3.2 前置准备3.3 配置nginx1实现四层代…

邹平做网站wordpress 注册侧边栏

笔记整理 | 朱珈徵,天津大学硕士。链接:https://arxiv.org/pdf/2009.11692.pdf动机尽管生成式预训练语言模型在一系列文本生成任务上取得了成功,但在生成过程中需要对基础常识知识进行推理的情况下,它们仍然会受到影响。现有的方法…

户型图在哪个网站找燕郊医疗网站建设

全世界只有3.14 % 的人关注了青少年数学之旅(图源网络,侵权删)

麻阳住房和城乡建设局网站网络安全管理平台

Junit引入注解参数化单参数多参数方法传参 测试用例执行顺序断言测试套件 Junit引入 Junit来编写和组织自动化测试用例,使用Selenium来实际模拟用户与Web应用程序的交互。也就是使用JUnit的测试功能来管理和运行Selenium测试。常见的做法是,使用JUnit作…

读了成考好后悔啊aso排名优化

Linux C 编程一站式学习 #pragma 预处理指示供编译器实现一些非标准的特性,C 标准没有规定 #pragma 后面应该写什么以及起什么作用,由编译器自己规定。有的编译器用 #pragma 定义一些特殊功能寄存器名,有的编译器用 #pragma 定位链接地址&…

南头专业的网站建设公司网站开发前端学习

注:linux系统为vmware虚拟机,和真实工作环境可能有出入,不过正因如此我暴露了NAT转出的IP也没什么大碍 引言 postgresql与mysql目前都是非常受人欢迎的两大数据库,其各有各的优势,初学者先使用简单一张图来说明两者区…

做商城网站需要多少钱镇江网站建设推广

🌈个人主页:聆风吟 🔥系列专栏:数据结构、剑指offer每日一练 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 一. ⛳️训练计划VI(题目难度:中等)1.1 题目1.2 示例1.3 …

做安居客网站需要什么浏览器网站版式设计说明

乘法和除法指令用的不多,因为效率很低 比较指令CMP (compare) •格式:CMP OPD,OPS •功能:(OPD) — (OPS),跟减法指令很像,但是不存结果 •说明:目的操作数减去源操作数,然后根据结果设置标志位,但该结…

新乡做网站网站设计 教程

一、说明 增强大型语言模型 (LLM) 安全性的追求是技术创新、道德考虑和实际应用的复杂相互作用。这项努力需要一种深入而富有洞察力的方法,将先进的数学模型与道德原则和谐地融合在一起,以确保LLM的发展不仅在技术上稳健,而且在道德上合理且对…

东兰县建设局网站注册网站建设

一、外键约束的概念 外键约束(FOREIGN KEY,缩写FK是数据库设计的一个概念,它确保在两个表之间的关系保持数据的一致性和完整性。 外键是指表中的某个字段的依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束&#…

做ppt做好的网站网站建设计算机人员招聘

第一题: 泰勒展开式求sin(x) 【问题描述】 已知sin(x)的泰勒展开式为: sin(x) x/1! - x^3/3! x^5/5! - x^7/7! …… 当某一项的绝对值小于ξ时,停止计算。 输入x及ξ的值,输出sin(x)的值,小数点后保留5位小数。…

上海响应式网站建设企业室内设计学校有哪些

当我们打印一个网页时,默认情况下,网页的背景图片是不会被打印出来的 这与我们的打印代码无关,需要设置IE便可,如下图: 转载于:https://www.cnblogs.com/blodfox777/archive/2008/08/05/1260860.html

个性化网站建设多少钱响应式网站制作流程

工作中经常要和第三方做对接,比如支付、电子合同等系统。操作成功之后,第三方会发送异步的通知,返回最终的处理结果,使用异步而不是使用同步通知,是为了加快系统响应速度,防止线程阻塞。任务处理完成后通过…

济南营销网站建设广告设计与制作的课程

dolphinscheduler运行了一段时间,忽然发现一个流程下某个任务一直在自动重跑,把工作流删了,任务删了,下线等等,都不能阻止他重复的运行,每秒1次,真是见了鬼 1、把zookeeper停掉发现不再重跑了 …

如何提网站建设需求网络服务器的分类

Flink on k8s部署日志详解及与Yarn部署时的日志生成模式对比 最近需要将flink由原先部署到Yarn集群切换到kubernetes集群,在切换之后需要熟悉flink on k8s的运行模式。在使用过程中针对日志模块发现,在k8s的容器中,flink的系统日志只有jobma…

做电影网站前途网页制作的公司哪家好

一、Thymeleaflayuijquery复选框回显基于Thymeleaf模板下的layuijquery复选框回显,主要是jquery。大致意思是:把数组转成JSON传到前台,再在前台转回数组 AJAX一般都是用JSON格式或XML格式来传递数据的JSON就是一种具有特殊格式的字符串。1.实…

学企业网站开发7a125v能插国内插座吗

1、static修饰的变量和方法,在类加载时即被初始化,可直接通过类名.变量名和类型.方法名进行调用。2、static修饰的变量,在类加载时会被分配到数据区的方法区。类的实例可共享方法区中的变量。如果static修饰的变量发生改变,那么所…

浙江网站建设工作室公司培训网站建设

html是什么?html即超文本标记语言,现在大多网页都是html的格式。而所谓的html文件是一种超文本文件,其中超文本可以是图片或音乐等非文字元素,使用很广泛。但是很多用户都不太明白html是什么文件?也不清楚html文件要如…

蝴蝶传媒网站推广湖北响应式网页建设哪家有

大家都知道&#xff0c;seo的一个很重要的一点就是要把网站做的条理清晰&#xff0c;让搜索引擎很容易的读明白&#xff0c;这个条理清晰不仅体现在网站的物理路径&#xff0c;url等地 方。在<h1><h2><h3>等方面也是这样。并不是<h1>对于关键字排名有帮…