• 算法探究-3.centerNet(原理讲解)


    centerNet的 创新点:

    这是一种不需要使用anchor的网络结构,网络的输出使用的由3个head层所决定,第一个输出类别数,第二个输出中心点位置,第三个输出偏置项

    (hm): Sequential(
    (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace)
    (2): Conv2d(64, 80, kernel_size=(1, 1), stride=(1, 1))
    )
    (wh): Sequential(
    (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace)
    (2): Conv2d(64, 2, kernel_size=(1, 1), stride=(1, 1))
    )
    (reg): Sequential(
    (0): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
    (1): ReLU(inplace)
    (2): Conv2d(64, 2, kernel_size=(1, 1), stride=(1, 1))
    )

    我们先放置一张检测结果来进行演示

    假设输入一张图的大小是640x640, 下采样的比例是4的话,那么卷积图的尺度是160x160

    损失函数谈论

    中心点预测损失函数 

    这里采用的也是focal loss的思想

    第一种情况: 当是目标物体时,当[公式] 接近1的话,这个物体容易被识别出来,即(1-[公式] )^a的值越小,即损失值也越小,使得权重偏向于更难训练的目标

    第二种情况: 1.当不是目标物体时,假如此时的概率值是0.9,因为这个时候的概率值应该是0才对,我们使用([公式] )^a进行惩罚,但是由于可能是中心点附件的位置,所以使用(1-Yxyc)^P 进行安慰一下

              2.当不是目标物体时,假如此时的概率值是0.1, 对于([公式] )^a进行奖励,使用(1-yxyc)^P进行惩罚,即离的越远,损失函数越大,离的越近,损失函数越小,这相当于弱化了实际中心点其他负样本的损失比重,相当于处理正负样本不平衡。

    目标预测偏置损失函数

    由于中心点直接采用的是特征图的中心点,因此在实际的缩放过程中,应该是需要有关于中心点位置的偏移量

     假设我们有一张640和320的图片,resize成512,512, 由于网络下采样的比例是4,因此缩放为128, 128,如果此时实际的中心是[98.97667,2.3566666],那么对应位置上的中心点的位置是98, 2,  由此可知,此时的偏移量应该是0.97667, 0.3566666,这里使用的就是L1 loss, 这个式子中 [公式] 是我们预测出来的偏置,而 [公式] 则是在训练过程中提前计算出来的数值

    目标预测长宽损失函数

    为了减少回归的难度,这里使用 [公式] 作为预测值,使用L1损失函数,与之前的 [公式] 损失一样:

    总的损失函数表达式

    [公式]

    在论文中 [公式] ,然后 [公式] ,论文中所使用的backbone都有三个head layer,分别产生[1,80,128,128]、[1,2,128,128]、[1,2,128,128],也就是每个坐标点产生 [公式] 个数据,分别是类别以及、长宽、以及偏置。

    推理阶段:

    在一阶和二阶检测识别网络中,由于存在大量的anchor,因此很有可能存在一个关键点,有多个大于阈值的检测结果,但是这里我们一个特征点只对应一个检测目标,因此我们使用3x3的maxPool,判断当前的点是否比周围其他8个点都大,从中挑选出大于阈值的前100个点,作为最后的检测结果

    最终的检测结果 阈值大于0.3的结果

    不添加阈值的,前100个结果

     热力图

  • 相关阅读:
    【XFeng安卓开发笔记】Android开发中如何调用打电话功能
    【XFeng安卓开发笔记】edittext中怎样禁止系统自带键盘弹出但光标还在
    【XFeng安卓开发笔记】android 如何在对话框中获取edittext中的数据
    【nRF51822蓝牙开发笔记】点亮LED灯
    基于R7F0C80212ESP的蓝牙婴儿早教机
    read、write和lseek
    open(/dev/ietctl, O_RDWR) 函数
    通过linux命令来控制板上GP_LED灯亮灭
    更新开发板固件
    PHP_EOL
  • 原文地址:https://www.cnblogs.com/my-love-is-python/p/15169587.html
Copyright © 2020-2023  润新知