【玩转yolov5】之anchor匹配策略(build_targets)分析(1)

本文详细解析了YOLOv5中用于目标检测的锚点匹配策略,通过实例演示如何将标签与不同特征图上的预设锚点进行匹配,并使用宽高比规则过滤不适合的候选框。

     这里我们实际推演一下yolov5训练过程中的anchor匹配策略,为了简化数据和便于理解,设定以下训练参数。

  • 输入分辨率(img-size):608x608
  • 分类数(num_classes):2
  • batchsize:1
  • 网络结构如下图所示:

def build_targets(pred, targets, model):
    """
    pred:
    type(pred) : <class 'list'>
    """
    #p:predict,targets:gt
    # Build targets for compute_loss(), input targets(image,class,x,y,w,h)
    det = model.module.model[-1] if is_parallel(model) else model.model[-1]  # Detect() module

输入参数pred为网络的预测输出,它是一个list包含三个检测头的输出tensor。

(Pdb) print(type(pred))
<class 'list'>
(Pdb) print(len(pred))
3
(Pdb) print(pred[0].shape)
torch.Size([1, 3, 76, 76, 7])  #1:batch-size,3:该层anchor的数量,7:位置(4),obj(1),分类(2)
(Pdb) print(pred[1].shape)
torch.Size([1, 3, 38, 38, 7])
(Pdb) print(pred[2].shape)
torch.Size([1, 3, 19, 19, 7])

targets为标签信息(gt),我这里只有一张图片,包含14个gt框,且类别id为0,在我自己的训练集里面类别0表示行人。其中第1列为图片在当前batch的id号,第2列为类别id,后面依次是归一化了的gt框的x,y,w,h坐标。

(Pdb) print(targets.shape)
torch.Size([14, 6])
(Pdb) print(targets)
tensor([[0.00000, 0.00000, 0.56899, 0.42326, 0.46638, 0.60944],
        [0.00000, 0.00000, 0.27361, 0.59615, 0.02720, 0.02479],
        [0.00000, 0.00000, 0.10139, 0.59295, 0.04401, 0.03425],
        [0.00000, 0.00000, 0.03831, 0.59863, 0.06223, 0.02805],
        [0.00000, 0.00000, 0.04395, 0.57031, 0.02176, 0.06153],
        [0.00000, 0.00000, 0.13498, 0.57074, 0.01102, 0.03152],
        [0.00000, 0.00000, 0.25948, 0.59213, 0.01772, 0.03131],
        [0.00000, 0.00000, 0.29733, 0.63080, 0.07516, 0.02536],
        [0.00000, 0.00000, 0.16594, 0.57749, 0.33188, 0.13282],
        [0.00000, 0.00000, 0.79662, 0.89971, 0.40677, 0.20058],
        [0.00000, 0.00000, 0.14473, 0.96773, 0.01969, 0.03341],
        [0.00000, 0.00000, 0.10170, 0.96792, 0.01562, 0.03481],
        [0.00000, 0.00000, 0.27727, 0.95932, 0.03071, 0.07851],
        [0.00000, 0.00000

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值