数据集标签_伪标签在目标检测上的应用(kaggle比赛实践)

伪标签技术作为一种半监督学习的方法,当在训练的数据集不足的场景下伪标签技术发挥着重要的作用,伪标签技术一个重要的应用场景是在kaggle比赛中,往往kaggle的比赛给出的训练数据集较少而测试的数据集较多,训练集较少容易导致模型过拟合,利用伪标签技术对测试集数据进行标签可以实现快速的扩增训练集,因此伪标签技术成为kaggle比赛的一大利器。

接下来我将从目前我正在参加的kaggle比赛(Global Wheat Detection)全球小麦头检测来分析伪标签技术在目标检测中的作用

比赛链接:https://www.kaggle.com/c/global-wheat-detection

赛题描述:

这里还是先介绍一下小麦头检测的比赛的内容:

比赛链接:https://www.kaggle.com/c/global-wheat-detection/overview/code-requirements

比赛背景:主要是准确估计算出不同品种的小麦头的密度和大小,从而帮助农民评估自己的农作物

在本竞赛中,您将从室外的小麦植株图像(包括来自全球的小麦数据集)中检测出小麦植株的头部。使用全球数据,您将专注于通用解决方案,以估计小麦头的数量和大小。为了更好地评估看不见的基因型,环境和观察条件的性能,训练数据集涵盖了多个区域。您将使用来自欧洲(法国,英国,瑞士)和北美(加拿大)的3,000多张图像。测试数据包括来自澳大利亚,日本和中国的约1,000张图像。目前比赛还有二十三天结束有兴趣的小伙伴可以去参加。

5bb59b88ee3f32adf9be9e3a06e8c442.png

检测的小麦图片

比赛困难点:小麦头经常重叠、小麦头具有多种尺寸、小麦的外观颜色由于成熟度不同而各不相同

这是一张我识别的小麦头图片

这是一张我识别的小麦头图片

当前我的排名在19/1668 2% 成绩:0.7720 第一名成绩为:0.7772

70c2726a5e0ea3303ae73832725ba3b5.png

比赛成绩

伪标签技术的影响:

在这次比赛中训练集仅有3337张并且数据分布差异较大(来自多个区域的小麦图片),因此采取伪标签技术可以取得一个不错的效果。

没加入伪标签技术成绩:0.7522 加入伪标签技术后成绩为: 0.7720

增加了0.0198,效果可以说是相当的明显了,排名提升了一百多名

制作伪标签的操作:

首先在训练集上训练模型,这一步可以加入一些TTA的方法提升模型检测的能力,然后将训练好的模型对未标记的测试集进行检测标记,将标记好的测试集加入到模型的训练当中,这样就可以得到一个比之前更好的模型。

使用伪标签的一些心得:

(1)阈值很重要

目标检测与在分类任务在伪标签的制作上有着较大的区别,在分类任务的伪标签制作中,一张图片只有一个标签(例如二分类任务中一张图片只有一个正负标签),因此我们只需要选择预测概率较高的样本(选出预测概率大于0.99的样本,并标注为1)来作为正样本训练模型,然而在目标检测任务中一张图片当中具有多个标签,如果只是选择预测概率较高的标签,那么一张图中就会有许多小麦头就没有被标记出来被当作负样本,这将导致模型的检测能力下降。所以目标检测任务中的预测概率阈值成为伪标签制作的一个关键,不能太高但同时也不能太低(太低的话会引入一些错误的标签)。对此我的方案是利用滑动阈值先搜索出模型的最佳阈值,在微调这个阈值作为制作伪标签的阈值,一般这个阈值较低,测试出来我的是score threshold为0.15。

(2)遇强则强

伪标签方法制作对于基础模型精度要求较高,当基础模型精度较低的时候,所标记的标签不准确,训练伪标签数据集效果不好,因此只有当模型检测精度达到一定程度时再加入伪标签技术才能有所提升,这里对于模型的检测精度提升的几个小方法,如加入几个TTA(翻折,旋转,多尺度),再将同一张图片TTA出来的多个图片所识别的标签进行融合。

TTA提升精度的效果:

  • No TTA: 0.7197
  • Add Rot90 180 270 TTA: 0.7337
  • Add single flip-lr: 0.7458
  • Add single flip-ud and combination of scale and flip-ud: 0.7522

(3)训练过程

训练伪标签时的一些注意事项,首先制作好的测试集的标签最好不要单独将测试集拿来训练而需要与训练集混合在一起再训练模型,其次验证集要和之前保持一致,验证集很重要这是筛选出好的模型的关键,还有训练的次数不宜太多,太多的也会发生过拟合,例如在这次小麦头检测比赛当中我对伪标签的训练次数为15轮。

关于伪标签新的尝试:

(1)将利用已经通过伪标签训练好的模型再用来标注伪标签,二次训练模型。

(2) 将模型损失函数改为Loss = loss(labeled_data) + alpha*loss(unlabeled_data)。

版权声明:本文为CSDN博主「Jemmryx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42301769/article/details/112693998

Jemmryx

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

单目3D目标检测调研

单目3D目标检测调研
一、 简介 现有的单目3D目标检测方案主要方案主要分为两类,分别为基于图片的方法和基于伪雷达点云的方法。   基于图片的方法一般通过2D-3D之间的几何约束来学习,包括目标形状信息&#xff0