Reppoints

论文RepPoints: Point Set Representation for Object Detection (ICCV 2019)速达>>
代码https://github.com/microsoft/RepPoints

Anchor based

使用Anchor的前提是假设Anchor基本覆盖了目标框可能的位置及宽高比例

为什么Anchor based会流行?

  • 容易标注,简单实用
  • 用矩形的特征区域进行训练
  • 许多目标检测的通用指标都是基于框
  • 用Anchor的效果足够好
  • 从滑窗法开始就是用矩形patch训练网络

Anchor based缺点:

  • 当初始框与目标间的距离较大时,效果不佳
  • 需要平衡 ∆ x ∆x x ∆ y ∆y y ∆ w ∆w w ∆ h ∆h h损失权重以达到最佳性能
  • 目标几何信息粗糙,没有区别对待目标的不同形状和姿态,可能影响特征提取效果
  • proposal含较多背景信息,提取的特征质量可能受影响

在这里插入图片描述

center point based

与Anchor based方法相比, center point based 的优点在于:

  • 其假设空间更小 x,y 两个维度即可表示位置,而前者还要加上长宽共四个维度

在这里插入图片描述
center point based 会遇到同一中心位置有多个目标的问题,使用FPN明显减少了其中心位置在特征图上同位置的机会,COCO数据集中只有1.1%的对象存在该问题,因为:

  • FPN将不同尺度的物体分配到不同的图像特征层中,这些特征层覆盖了不同尺度的物体和相同中心点的位置
  • FPN为小物体提供了高分辨率的特征图,这也减少了两个物体的中心位于同一特征位置的几率

Reppoints

每个中心点通过deformable convolution 学习 N (9)个偏移量来表示预测目标,需将Reppoints转换成伪框后才能计算损失,从而指导训练,转换成伪框文中给出了三种:

  • Min-max function
  • Partial min-max function
  • Moment-based function

在这里插入图片描述

根据伪框和标注框左上顶点、右下点间的距离计算 Smooth L1损失无需调整损失权重
识别反馈可以指导定位训练

RepPoint的学习由支路驱动:

  • 定位支路:根据伪框和标注框左上顶点、右下点间的距离计算 Smooth L1损失,定位支路还有个Refine阶段
  • 分类支路:对目标分类在第一组RepPoint上进行,还可以反过来地指导定位训练,分类损失为 focal loss

在这里插入图片描述
RepPointsHead 结构(RepPointsHead代码实现
在这里插入图片描述
网络整体架构

model = dict(
    type='RepPointsDetector',
    pretrained='torchvision://resnet50',
    backbone=dict(
        type='ResNet',
        depth=50,
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        norm_cfg=dict(type='BN', requires_grad=True),
        norm_eval=True,
        style='pytorch'),
    neck=dict(
        type='FPN',
        in_channels=[256, 512, 1024, 2048],
        out_channels=256,
        start_level=1,
        add_extra_convs='on_input',
        num_outs=5),
    bbox_head=dict(
        type='RepPointsHead',
        num_classes=80,
        in_channels=256,
        feat_channels=256,
        point_feat_channels=256,
        stacked_convs=3,
        num_points=9,
        gradient_mul=0.1,
        point_strides=[8, 16, 32, 64, 128],
        point_base_scale=4,
        loss_cls=dict(
            type='FocalLoss',
            use_sigmoid=True,
            gamma=2.0,
            alpha=0.25,
            loss_weight=1.0),
        loss_bbox_init=dict(type='SmoothL1Loss', beta=0.11, loss_weight=0.5),
        loss_bbox_refine=dict(type='SmoothL1Loss', beta=0.11, loss_weight=1.0),
        transform_method='moment'))    # transform_method 为points转换成框的方法
# training and testing settings
train_cfg = dict(
    init=dict(
        assigner=dict(type='PointAssigner', scale=4, pos_num=1),
        allowed_border=-1,
        pos_weight=-1,
        debug=False),
    refine=dict(
        assigner=dict(
            type='MaxIoUAssigner',
            pos_iou_thr=0.5,
            neg_iou_thr=0.4,
            min_pos_iou=0,
            ignore_iof_thr=-1),
        allowed_border=-1,
        pos_weight=-1,
        debug=False))
test_cfg = dict(
    nms_pre=1000,
    min_bbox_size=0,
    score_thr=0.05,
    nms=dict(type='nms', iou_threshold=0.5),
    max_per_img=100)
optimizer = dict(lr=0.01)

相关实验

在这里插入图片描述

在这里插入图片描述

参考文献

【1】目标检测论文阅读:RepPoints(Anchor Free)
【2】如何评价北大、清华、微软联合提出的RepPoints呢?
【3】ICCV 2019丨 RepPoints: 替代边界框,基于点集的物体表示新方法

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值