select_topk_candidates(align_metric, topk_mask=mask_gt.expand(-1, -1, self.topk).bool()) # Merge masks to get the final positive mask mask_pos = mask_topk * mask_in_gts * mask_gt # Return the final positive mask
第二各参数是gt与pred box的iou,shape为(bs, n_max_labels, total_cells)。 lselect_topk_candidates 首先通过torch.topk函数对metrics(align_metric)进行排序筛选,每个gt候选cell选取前topk个。得到topk_metrics和topk_idxs, shape均为(bs, n_max_boxes, topk)。 counter_tensor, shape(bs, n_max_boxes, ...
overlaps是选取点对应框和目标的iou。 select_topk_candidates mask_topk = self.select_topk_candidates(align_metric, topk_mask=mask_gt.expand(-1, -1, self.topk).bool()) 这里是根据上面align_metric去选择topk的,align_metric不仅仅只考虑iou还加入了分类置信度的权重。 这里我们就完成了get_pos_mask。...
左边是任务对齐度量,右边是IoU重叠度量。 3.通过 select_topk_candidates 函数从所有候选的锚点中,选择与每个GT框 对齐度量 最高的前K个锚点,并为这些锚点生成相应的掩码 mask_topk。 4.将前三步生成的所有掩码进行合并,得到最终的正样本Mask。 5.对已经获得正样本的mask,存在一个预测框对应多个真实框的情况,因...
def forward(self, pred_scores, pred_bboxes, anchor_points, gt_labels, gt_bboxes, mask_gt): # step 1: 计算对齐分数(伪代码) # 计算每个anchor的分类分数s和位置分数u,然后计算t # 这里假设pred_scores和pred_bboxes已经通过适当的方式处理 # step 2: 初筛正样本 candidates = select_candidates_...
select_topk_candidates方法选择前k个候选框,基于给定的度量进行筛选。 get_targets方法则根据分配的真实目标索引生成目标标签、边界框和分数。它将真实目标的标签和边界框映射到锚框上,并返回相应的结果。 此外,文件还定义了一些辅助函数,如make_anchors用于生成锚框,dist2bbox和bbox2dist用于在锚框和边界框之间进行...
select_topk_candidates方法根据给定的度量选择前k个候选框。 get_targets方法计算正样本锚框的目标标签、目标边界框和目标分数。它通过索引获取对应的真实标签和边界框,并根据前景掩码生成目标分数。 此外,文件中还定义了一些辅助函数,如make_anchors用于生成锚框,dist2bbox和bbox2dist用于在边界框和距离表示之间进行...
首先是筛选出落在gt范围内的candidates。 得到gt的左上角和右下角的值,让anchor_point减去lt,让rb减去anchor_point,如果结果都是正数,说明anchor_point在lt-rb的范围内,也就是落在gt的内部。 defselect_candidates_in_gts(xy_centers, gt_bboxes, eps=1e-9): ...
()classv8DetectionLoss:"""Criterion class for computing training losses."""def__init__(self, model, tal_topk=10):# model must be de-paralleled"""Initializes v8DetectionLoss with the model, defining model-related properties and BCE loss function."""# 获取模型的设备信息device =next(model....
lselect_topk_candidates 首先通过torch.topk函数对metrics(align_metric)进行排序筛选,每个gt候选cell选取前topk个。得到topk_metrics和topk_idxs, shape均为(bs, n_max_boxes, topk)。 counter_tensor, shape(bs, n_max_boxes, na), 取值非0即1,取值1代表当前cell的度量值位于前topk。