问题: 使用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))