问题: 使用mmdetection
框架使用COCO格式训练自定义数据集时,其中模型使用HTC模型时出现如下问题:
AttributeError: ‘DetDataSample’ object has no attribute ‘_gt_sem_seg’. Did you mean: ‘gt_sem_seg’?
results = self(**data, mode=mode)
阅读Hybrid Task Cascade for Instance Segmentation和MMDetection
的指导文档中数据集准备中发现,需要我们在COCO格式数据集基础上,提供一个stuffthingmaps
文件夹,包含原始图像对应的语义分割标签。
解决方法:
- 新建文件夹存储原始图像对应的语义分割标签;
- 在
train_dataloader
和val_dataloader
的data_prefix=dict(img='train_img/', seg='train_seg/')
处补充seg=‘your_path’
;train_img
是图像地址train_seg
是图像对应语义分割标签地址
在mmdet/configs/_base_/datasets/coco_instance.py
文件中修改train_dataloader
和val_dataloader
部分,具体如下:
train_dataloader = dict(batch_size=8,num_workers=2,persistent_workers=True,sampler=dict(type='DefaultSampler', shuffle=True),batch_sampler=dict(type='AspectRatioBatchSampler'),dataset=dict(type=dataset_type,data_root=data_root,ann_file='annotations/annotation_train.json',data_prefix=dict(img='train_img/', seg='train_seg/'),filter_cfg=dict(filter_empty_gt=True, min_size=32),pipeline=train_pipeline,backend_args=backend_args))val_dataloader = dict(batch_size=1,num_workers=2,persistent_workers=True,drop_last=False,sampler=dict(type='DefaultSampler', shuffle=False),dataset=dict(type=dataset_type,data_root=data_root,ann_file='annotations/annotation_valid.json',data_prefix=dict(img='val_img/', seg='val_seg/'),test_mode=True,pipeline=test_pipeline,backend_args=backend_args))