【mmyolo学习1】bbox_loss为0、去掉Mosaic增强

文章讨论了在YOLOv5训练过程中bbox_loss和cls_loss为0时可能的原因,包括数据出界和类别名称不匹配。通过使用COCO库检查图片边界框是否超出图像范围。此外,提到了多数据集拼接、数据增强策略如Mosaic的影响,以及配置文件中类别的一致性问题。还建议检查并调整训练管道中的图像变形和填充操作,以确保bbox同步变形,并处理小目标的影响。
摘要由CSDN通过智能技术生成
  • bbox_loss\cls_loss=0时

    可能的情况:

    • 数据可能出界了

      from pycocotools.coco import COCO
      
      # 判断bbox是否出界
      main = '/code/merge.json'
      coco=COCO(main)
      list_imgIds = coco.getImgIds(catIds=[])
      error=[]
      for img_id in list_imgIds:
          ann_ids = coco.getAnnIds(imgIds=img_id)
          src_anns = coco.loadAnns(ann_ids)
          img_info=coco.loadImgs([img_id])
          w,h=img_info[0]['width'],img_info[0]['height']
          for ann in src_anns:
              x,y,w_,h_=ann['bbox']
              if x+w_>w or y+h_>h:
                  error.append({img_info[0]['id'],img_info[0]['file_name']})
      
      print(error,len(error))
      
    • 数据可能不对应

    • dataset加载时涉及classname与数据集本身不一致

      这种情况下的评估会提示无am并无预测

      具体需要统一的位置mmyolo/mmyolo/datasets/yolov5_coco.py

    • 数据config中的classname与dataset中不一致

      需要注意的在多层继承config时,在mmyolo中最外层config修改的数据,会出现原继承的config覆盖的情况。【感觉是我自己没写好,多次实验都存在这个问题】

  • AP,recall从一开始为0

    如果是多数据拼接得到数据集,需分步判断数据带来的影响

    因为yolo中有MosaicMosaic9增强策略所以需要去dataset/transformer里面去找到这个的输出可视化,判断对数据集对象的影响 【对小的目标会有一定的影响】 所以根据具体情况判断是否需要取消这类增强。 若去掉 则需要在trainpipeline里面 添加数据中心变形【img和bbox都会进行】和padding【bbox的不会参与】 ​【为确保不同尺寸数据可以正常同时添加进patch中进行训练】,在训练中需要在第一步中同时添加img和bbox的数据,这样保证每次变形bbox会同步变形【因为在train的loss计算时不会还原原始bbox的位置】,bbox的padding需要单独进行。

    具体修改代码:

    train_pipeline = [
        *pre_transform,
        dict(type='YOLOv5KeepRatioResize', scale=img_scale),
        dict(
            type='mmdet.FixShapeResize',
            width=1280,
            height=1280,
            pad_val=dict(img=(114.0, 114.0, 114.0))),
        # 数据缩放、旋转等增强
        dict(
            type='YOLOv5RandomAffine',
            max_rotate_degree=0.0,
            max_shear_degree=0.0,
            max_translate_ratio=max_translate_ratio,  # note 0.2
            scaling_ratio_range=scaling_ratio_range,  # note
            # img_scale is (width, height)
            border=(0,0),
            border_val=(114, 114, 114)),
        dict(type='mmdet.RandomFlip', prob=0.5),
        dict(
            type='mmdet.FilterAnnotations',
            min_gt_bbox_wh=(1, 1),
            keep_empty=False),
        dict(
            type='mmdet.PackDetInputs',
            meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape', 'flip',
                       'flip_direction'))
    ]
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值