SSD系列3——损失计算

SSD系列:
SSD系列1——网络结构
SSD系列2——PriorBox
SSD系列3——损失计算

一、确定正、负样本标签

  损失计算的第一步是对所有的PriorBox赋予正、负样本的标签,并确定对应的真实物体标签。

  在SSD的PriorBox生成过程中,一共生成了8732个PriorBox坐标以及对应的类别、位置预测值,接下来就要为每一个PriorBox贴标签,筛选出符合条件的正样本和负样本,依据是通过预测值与真值之间的IoU值来判断:

  • 在判断正、负样本时,IoU阈值设置为0.5,即一个PriorBox与所有真实框的最大IoU小于0.5时,判断该框为负样本。
  • 判断对应关系时,将PriorBox与其拥有最大IoU的真实框作为其位置坐标。
  • 与真实框有最大IoU的PriorBox,即使该IoU不是此PriorBox与所有真实框IoU中最大的IoU,也要将该Box对应到真实框上,这是为了保证真实框的Recall。
  • 在预测边框位置时,SSD与Faster RCNN相同,都是预测相对于预测框的偏移量,因此在求得对应关系后,还需要进行偏移量的计算,公式参考Faster RCNN系列2——RPN的真值与预测值概述

二、定位损失的计算

  第一步完成后,就有了正、负样本及每一个样本对应的真实框,此时可以进行定位损失计算,SSD使用 s m o o t h L 1 0 smooth_{L1}0 smoothL10函数作为定位损失函数,并且只对正样本计算,公式参考:Faster RCNN系列3——RPN的真值详解与损失值计算

三、难样本挖掘

  在完成第一步后,由于一张图像中物体的数量不会太多,因此会存在大量的负样本,如果此时进行损失计算,则正样本起到的作用微乎其微。

  SSD通过保证正、负样本的比例来实现样本均衡,具体做法为计算出所有负样本的损失后进行排序,选取损失值较大的一部分进行反向传播,舍弃剩下的负样本,负样本的数量为正样本的3倍。

四、类别损失计算

  SSD使用交叉熵损失进行类别损失计算,且正、负样本全部参与计算,公式参考Faster RCNN系列3——RPN的真值详解与损失值计算

猜你喜欢

转载自blog.csdn.net/python_plus/article/details/130603969