loss[1] += self.keypoint_loss(pred_kpt, gt_kpt, kpt_mask, area) area:bounding box area class KeypointLoss(nn.Module): def forward(self, pred_kpts, gt_kpts, kpt_mask, area): """Calculates keypoint loss factor and Euclidean distance loss for predicted and actual keypoints.""" d =...
counts.max(),ne-1,device=self.device)forjinrange(batch_size):matches=i==jn=matches.sum()ifn:out[j,:n]=targets[matches,1:]out[...,1:5]=xywh2xyxy(out[...,1:5].mul_(scale_tensor))returnoutdefbbox_decode(self,anchor_points,pred_dist):"""Decode predicted...
target_labels:shape(bs, na, 1) target_bboxes:shape(bs, na, 4) target_scores:shape(bs, na, num_classes) 3. DFL DFL(Distribution Focal Loss),本质上是Focal Loss,是一种带权重的交叉熵。一般情况下,我们认为交叉熵常用作分类损失,根本上讲,是用在计算一种符合多项分布的预测Loss。 在论文“Gener...
q是label,正样本时候q为bbox和gt的IoU,负样本时候q=0,当为正样本时候其实没有采用FL,而是普通的BCE,只不过多了一个自适应IoU加权,用于突出主样本。而为负样本时候就是标准的FL了。可以明显发现VFL比QFL更加简单,主要特点是正负样本非对称加权、突出正样本为主样本。 针对这里的DFL(Distribution Focal Loss),其...
YOLOv8 的推理过程和 YOLOv5 几乎一样,唯一差别在于前面需要对 Distribution Focal Loss 中的积分表示 bbox 形式进行解码,变成常规的 4 维度 bbox,后续计算过程就和 YOLOv5 一样了。 其推理和后处理过程为: (1) bbox 积分形式转换为 4d bbox 格式 ...
center_y = (bbox[1] + bbox[3]) / 2.0 width = bbox[2] - bbox[0] height = bbox[3] - bbox[1] width = width * dw height = height * dh center_x = center_x * dw center_y = center_y * dh return center_x, center_y, width, height ...
1、训练的时候出现box_loss、cls_loss、dfl_loss都为nan的情况,需要将训练的时候的参数进行修改,设置amp=False 2、修改之后训练的时候出现P、R、map值为NAN或者非常小,一般来说基于预训练模型来进行训练P、R、map的值都不会很低,如果出现0.0x这种一般是有点问题,这种情况可以尝试以下操作,需要到ultralytics/cfg...
2)由小目标覆盖的区域更小,这样小目标的位置会缺少多样性。我们推测这使得小目标检测的在验证时的通用性变得很难; 3)anchor难匹配问题。这主要针对anchor-based方法,由于小目标的gt box和anchor都很小,anchor和gt box稍微产生偏移,IoU就变得很低,导致很容易被网络判断为negative sample; ...
q是label,正样本时候q为bbox和gt的IoU,负样本时候q=0,当为正样本时候其实没有采用FL,而是普通的BCE,只不过多了一个自适应IoU加权,用于突出主样本。而为负样本时候就是标准的FL了。可以明显发现VFL比QFL更加简单,主要特点是正负样本非对称加权、突出正样本为主样本。
具体来看,框损失(box_loss)代表模型对目标定位的准确性,训练和验证的框损失都呈现出了稳定的下降趋势,显示出模型在识别目标位置方面的持续改进。分类损失(cls_loss)反映了模型对不同海洋生物类别的识别能力,这个指标的下降表明模型在区分不同海洋生物方面越来越精准。目标损失(dfI_loss)是一个综合的指标,它结合了检测...