• 测试时数据增广(TTA)与mmdetection3d中的实现


    1. 测试时数据增广

      测试时数据增广(TTA)在测试时使用数据增广技术获取同一数据的多个“变体”,使用同一网络在这些“变体”以及原始数据上进行推断,最后整合所有结果作为该原始数据最终的预测结果。

    TTA类似于集成学习,都是整合多个结果作为最终预测,但区别在于:TTA只使用一个模型,多个结果的来源是多个数据“变体”。

    2. mmdetection3d中,点云数据的测试时数据增广

    2.1 带数据增广的测试pipeline

      mmdetection3d中通常的测试pipeline为

    MultiScaleFlipAug3D
    数据增广
    数据预处理
    格式整理
    数据读取
    Collect3D
    DefaultFormatBundle3D
    PointsRangeFilter
    RandomFlip3D
    GlobalRotScaleTrans
    LoadPointsFromMultiSweeps
    LoadPointsFromFile

      数据集类的前期格式整理和数据读取,以及MultiScaleFlipAug3D中的数据预处理、格式整理的过程均与训练时一致(见此文)。

    2.2 MultiScaleFlipAug3D

      相关的代码见mmdetection3d/mmdet3d/datasets/pipelines/test_time_aug.py

    • MultiScaleFlipAug3D:对每一个设定的缩放倍数和翻转方向,复制输入的数据信息字典并添加相应的项,输入到GlobalRotScaleTransRandomFlip3D中进行缩放和翻转。最终的输出为列表形式,其元素为各种增广处理后的数据字典(字典格式与训练时pipeline的输出一致)。
      • GlobalRotScaleTrans的设定为不进行旋转(旋转角度固定为0)和平移,但会读取数据字典中已有的参数(刚才添加的缩放倍数),进行全局缩放。
      • RandomFlip3D会读取数据字典中已有的参数(刚才添加的翻转方向),进行全局翻转。

    当不进行测试时数据增广时,可在MultiScaleFlipAug3D中设置不翻转,缩放倍数为1。此时模型测试时会走向simple_test()函数,不进行结果的整合。

    2.3 模型预测与结果整合

      当进行了测试时数据增广,则模型测试时会走向aug_test()函数,具体操作如下:

    • 首先,将各种增广数据作为一个batch,输入网络提取特征。
    • 然后调用aug_test_pts()函数,将各特征输入检测头得到边界框。
    • 调用merge_aug_bboxes_3d()函数,根据增广情况还原边界框(bbox3d_mapping_back())后,使用NMS进行结果整合。

    注意:对于具体的处理方法,不同模型可能不同。

  • 相关阅读:
    大语言模型架构---Transformer 模型
    Adobe推出AI视频超分辨率工具VideoGigaGAN
    【多用户】k8s多用户配置 kubeconfig
    进制转换(二进制、八进制、十进制、十六进制)
    护眼灯国A与国AA级差别是什么?推荐双十一值得入手的国AA的护眼灯
    【matlab程序】海图单位的度分格式
    SpringBoot + Vue2项目打包部署到服务器后,使用Nginx配置SSL证书,配置访问HTTP协议转HTTPS协议
    Vuex中多个参数显示undefined的解决方案
    kubernetes API Server 没有 bind 0.0.0.0
    WPF异步编程
  • 原文地址:https://blog.csdn.net/weixin_45657478/article/details/133718393