retinanet之anchor

retinanet之anchor

1.综述

anchor即目标检测的先验框,retinanet的anchor有scales和ratios,根据每个pyramid_levels生成三个scales,三个ratios,然后形成九种先验框。
scales:anchor的大小(宽)
ratios:anchor的宽高比

2.参数:pyramid_levels, strides, sizes, ratios, scales

class Anchors(nn.Module):
    def __init__(self, pyramid_levels=None, strides=None, sizes=None, ratios=None, scales=None):
        super(Anchors, self).__init__()

        if pyramid_levels is None:
            self.pyramid_levels = [3, 4, 5, 6, 7]
        if strides is None:
            self.strides = [2 ** x for x in self.pyramid_levels]
        if sizes is None:
            self.sizes = [2 ** (x + 2) for x in self.pyramid_levels]
        if ratios is None:
            self.ratios = np.array([0.5, 1, 2])
        if scales is None:
            self.scales = np.array([2 ** 0, 2 ** (1.0 / 3.0), 2 ** (2.0 / 3.0)])

pyramid_level:feature map标号,对应resnet的p3层到p7层
strides:滑窗的步长
size:窗口的宽
ratios:宽高比
scales:面积比例

RetinaNet是一种用于目标检测的深度神经网络模型,由Facebook AI Research团队在2017年提出。RetinaNet在Focal Loss的基础上改进了传统的单阶段目标检测算法,通过引入Focal Loss来解决正负样本不平衡问题,实现了高精度的目标检测。 传统的目标检测算法包括两个阶段,即先提取特征,再利用分类器进行目标检测。而RetinaNet则是一种单阶段目标检测算法,可以直接从输入图像中输出目标的位置和类别信息。RetinaNet采用了一种名为Feature Pyramid Network(FPN)的特征金字塔网络,以获得不同尺度的特征图,并通过特征金字塔网络将这些特征图进行有效地融合,提高了检测精度。 RetinaNet的主要贡献在于引入Focal Loss,并利用Focal Loss解决了目标检测中正负样本不平衡的问题。传统的交叉熵损失函数在正负样本比例失衡的情况下,容易造成模型对于负样本的预测过于自信,而对于正样本的预测不够准确。Focal Loss通过调整损失函数的权重,使得对于容易被错误分类的样本,模型更加关注,从而提高了模型的检测精度。 另外,RetinaNet还采用了一种称为“anchor-free”的方式来进行目标检测,相比于传统的基于anchor的方法,anchor-free方法不需要对每个位置和尺度都预定义一些anchor,从而减少了训练和推理的计算量。 综上所述,RetinaNet通过引入Focal Loss、特征金字塔网络和anchor-free等技术,实现了高效准确的目标检测,成为了目标检测领域的重要算法之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值