3.3 数据集感知focal loss
跨数据集目标检测所需的损失函数应仔细设计,因为可能存在正负样本冲突。例如,来自人脸检测数据集的负样本可能是人体的正样本,这意味着人脸检测数据集和人体检测数据集存在冲突,针对这个问题,提出了一种新的损失,即数据集感知。原始的focal loss如下
数据感知的focal loss设计如下
数据集感知focal loss的最重要修改是与负样本相对应的损失值从冲突数据集设置为零。训练时跨多个数据集,在与图4a所示完全相同的数据集中。A中给出了数据集感知focal loss的简单示例,图4b。人脸和行人之间存在冲突,因为其负样本可能包括:具有来自其他数据集的标签的对象,这会导致使用正常损失函数进行分类时会出现混淆。在数据集感知focal loss中,不共享不同的数据集负样本。因此,负样本的损失值计算时,来自面部数据集的设置为零,来自不同数据集的正样本根据其自身的情况一起生成标签,因此不存在冲突。
这种数据集感知方法,我们可以避免由冲突数据集引起混淆,来自一个数据集的正样本在另一个数据集中被视为负样本以丰富交叉数据集的负样本量,在第4节中,将展示数据集感知分类可以带来稳定的训练和良好的表现。
4 实验
通过实验验证了具有不同检测任务的交叉数据集训练,以及详细的消融研究。
4.1 实验设置
4.1.1 数据集
在我们的实验中,三种不同的检测任务,即人脸检测、一般物体检测和行人检测。每个任务都有一个或两个不同的数据集,人脸检测的任务是检测图像中的人脸。我们使用流行的waiderface数据集。它由32203张图像和393703张人脸组成,尺度、姿态和遮挡的变化很大,数据集分为训练(40%)、(10%)和测试(50%)。
一般目标检测上的方法任务,使用COCO进行一系列实验,训练集coco-2017-train,包含115k图像,评估集包含5k图像,在PASCAL VOC数据集上的实验证明了该方法的有效性。
对于行人检测任务,使用 WIDER Pedestrian数据,数据集包含11500个训练图像,在实验中使用了5000个验证和3500个测试图像。
4.1.2 实施细节
我们选择retinanet作为检测基线。ResNet50和MobileNetV2用作主干。图像调整大小,较短的边为800像素,模型使用具有0.9动量、0.0001权重衰减和SGD,batch为32。前两个阶段设置为稳定的预热训练最大epoch数为20,使用前10个epoch的学习率为0.04,然后继续以0.004的学习率再训练5个epoch和0.0004训练5个epoch。对象的大小在跨数据集训练过程,训练期间的anchor可能不再适用于跨数据集场景。例如,当合并人脸或行人检测任务,默认anchor比例COCO设置中的{4,5.03,6.35}太大,无法检测小脸或行人,但较大的anchor尺寸可以更好的检测COCO和PASCAL中的大目标。因此需要调整混合数据中的anchor尺寸,以确保性能,提出简单的anchor尺寸和金字塔步长。