【竞赛总结】高光谱目标检测冠军方案

高光谱目标检测冠军方案

还在寒假的时候,和师兄一起参加了一个比赛,高光谱半监督目标检测挑战,Semi-Supervised Hyperspectral Object Detection Challenge (SSHODC)。比赛的链接在下方。经过一个多月的努力,在15号成功取得比赛的第一名。同时组内另外两个同门参加了两个赛道,也取得了两个赛道的第一名,这样的话,组内就同时有三个赛道的第一名。附上比赛链接

https://pbvs-workshop.github.io/challenge.html

在这里插入图片描述
在这里插入图片描述

比赛是2月15号左右发现的,然后师兄拉上我,直接就着手参与了比赛。比赛官方提供了baseline,上手很快,使用的框架是MMDetection,很快就配置好了环境,提交了几版结果。

一、数据分析:

数据是多光谱进行下采样,具有51个通道,这对可视化就带来了难度,通常情况下,可视化的方法要么是对一通道,要么是对三通道,这种多通道的是第一次见。训练集有989张图片,其中标注了102张,其余都是无标签,验证集605张,测试集1296张。比赛分为两个阶段,验证和测试阶段。我们的打算是在3月份之前完成对有标签数据的训练,之后进行半监督伪标签的训练。
首先,对数据集进行了查看,统计了宽高比,训练集是188/189 : 1600,验证集是182/183 : 1600, 测试集 155/156,171/172的长边非常的固定,短边有较大的差距。标注的类别也是非常的不平衡,1有411, 2有20, 3有14张,长尾分布。
值得注意的是,比赛提出了对模型backbone计算量和参数量的限制。

在这里插入图片描述


二、方案

Cascade-RCNN,RPN,MobileNetV2,Soft-NMS
数据增强,由于数据比较少,数据增强非常的关键。这点数据增强提升了至少15个点。但是验证集和测试集分布变化比较大,验证集的分数是测试集的两倍。

albu_train_transforms = [
    # dict(
    #     type='ShiftScaleRotate',
    #     p=0.5),
    dict(
        type='ShiftScaleRotate',
        shift_limit=0.0625,
        scale_limit=0.0,
        rotate_limit=0,
        interpolation=1,
        p=0.5),
    dict(
        type='RandomBrightnessContrast',
        brightness_limit=[0.1, 0.3],
        contrast_limit=[0.1, 0.3],
        p=0.5),
    dict(
        type='RandomResizedCrop',
        height=188,
        width=1600,
        p=0.2),
    dict(
        type='Sharpen',
        p=0.5),
    dict(
        type='Perspective',
        p=0.2),
    dict(
        type='SafeRotate',
        p=0.2),
    dict(type='RandomRotate90', p=0.2),
    dict(type='CenterCrop', height=50, width=50, p=0.2),
     dict(
        type='OneOf',
        transforms=[
            dict(type='Blur', blur_limit=3, p=1),
            dict(type='MedianBlur', blur_limit=3, p=1),
            dict(type='GaussianBlur', blur_limit=3, p=1),
 
train_pipeline = [
    dict(type='LoadMaskedHSIImageFromFile'),
    dict(type='LoadAnnotations', with_bbox=True),
    # dict(type='Resize', img_scale=[(1600, 250), (1600, 350), (1600, 150)], keep_ratio=False, multiscale_mode='value'),  # 多尺度训练使用在 img_scale=[(1333, 640), (1333, 800), (600,1080), (1200, 1000), (416,700)],
    dict(type='Resize', img_scale=[(1600, 188), (1600, 189)], keep_ratio=True),  # 多尺度训练使用在 img_scale=[(1333, 640), (1333, 800), (600,1080), (1200, 1000), (416,700)],
    dict(type='RandomFlip', flip_ratio=0.5),
    # 1 dict(type='RandomCrop', crop_size=(180, 180)),
    # dict(type='Shear', level=1),
    # 3 dict(type='CutOut', n_holes=1, cutout_shape=[(50, 50), (100, 100)], cutout_ratio=(0.5)),
    # dict(type='Rotate', level=2),
    # dict(type='Translate', level=2, direction='horizontal'),
    # dict(type='Translate', level=2, direction='vertical'),
    dict(type='BrightnessTransform', level=3),

    dict(
        type='Albu',
        transforms=albu_train_transforms,
        bbox_params=dict(
            type='BboxParams',
            format='pascal_voc',
            label_fields=['gt_labels'],
            min_visibility=0.0,
            filter_lost_elements=True),
        keymap={
            'img': 'image',
            'gt_masks': 'masks',
            'gt_bboxes': 'bboxes'
        },
        update_pad_shape=False,
        skip_img_without_anno=True),

    dict(type='Pad', size_divisor=32),
    dict(type='DefaultFormatBundle'),
    dict(type='Collect', keys=['img', 'gt_bboxes', 'gt_labels']),
]

test_pipeline = [
    dict(type='LoadMaskedHSIImageFromFile'),
    dict(
        type='MultiScaleFlipAug',
        img_scale=[(1600, 188), (1600, 189)],
        flip=False,
        transforms=[
            # dict(type='Translate', level=2, direction='horizontal'),
            # dict(type='Translate', level=2, direction='vertical'),
            dict(type='Resize', keep_ratio=True),
            dict(type='RandomFlip'),
            dict(type='Pad', size_divisor=32),
            dict(type='ImageToTensor', keys=['img']),
            dict(type='Collect', keys=['img']),
        ])
]

尝试了一下几种方案 其中加深的是使用的方案

  • 调整NMS和Soft-nms的参数
  • 在线难例挖掘(OHEM)
  • WBF,目标检测的融合
  • 换随机种子
  • 换了Focalloss
  • FPN_CARAFE
  • PAFPN
  • double head 效果较差
  • DCNV2
  • GIoULoss

三、成绩

最终的成绩是在验证集上取得了50.83的成绩,在测试集上取得26.35的成绩,两个榜单都是第一名。


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以有效地应对挑战、优化流程或实现目标。以下是方案的主要作用: 问题解决: 方案的核心目标是解决问题。通过系统性的规划和执行,方案能够分析问题的根本原因,提供可行的解决方案,并引导实施过程,确保问题得到合理解决。 目标达成: 方案通常与明确的目标相关联,它提供了一种达成这些目标的计划。无论是企业战略、项目管理还是个人发展,方案的制定都有助于明确目标并提供达成目标的路径。 资源优化: 方案在设计时考虑了可用资源,以最大化其效用。通过明智的资源分配,方案可以在有限的资源条件下实现最大的效益,提高效率并减少浪费。 风险管理: 方案通常会对潜在的风险进行评估,并制定相应的风险管理策略。这有助于减轻潜在问题的影响,提高方案的可行性和可持续性。 决策支持: 方案提供了决策者所需的信息和数据,以便做出明智的决策。这种数据驱动的方法有助于减少不确定性,提高决策的准确性。 团队协作: 复杂的问题通常需要多个人的协同努力。方案提供了一个共同的框架,帮助团队成员理解各自的职责和任务,促进协作并确保整个团队朝着共同的目标努力。 监控与评估: 方案通常包括监控和评估的机制,以确保实施的有效性。通过定期的评估,可以及时调整方案,以适应变化的环境或新的挑战。 总体而言,方案的作用在于提供一种有序、有计划的方法,以解决问题、实现目标,并在实施过程中最大化资源利用和风险管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值