mmdet训练自己的数据

mmdet源码

labelme2coco

mmdet/datasets创建数据名ourdata.py

from .coco import CocoDataset
from .registry import DATASETS

class our_data(CocoDataset):
    CLASSES = ['xxx','xx','x'] 

mmdet/datasets/init.py注册数据集

from .ourdata import ourdata    

__all__ = [
   'CustomDataset', 'XMLDataset', 'CocoDataset', 'VOCDataset',
   'CityscapesDataset', 'GroupSampler', 'DistributedGroupSampler',
   'build_dataloader', 'ConcatDataset', 'RepeatDataset', 'WIDERFaceDataset',
   'DATASETS', 'build_dataset','ourdata'  
]

/configs/xx.py修改

num_classes+1(类别)

lr(学习率)

dataset_type(数据集名)

data_root(数据集路径)

imgs_per_gpu(batchsize)

workers_per_gpu(进程)

ann_file(标签路径)

img_prefix(图片路径)
work_dir(保存路径)

 中断恢复

python tools/train.py  ./configs/xx.py --gpus 1 --resume_from ./work_dirs/xx/epoch_xx.pth

验证

python tools/test_ins.py ./configs/xx.py ./work_dirs/xx/latest.pth --show --out results_xx.pkl --eval segm

 检测

 修改tools/test_ins_vis.py中class_names=['xx','x','xxx']

python tools/test_ins_vis.py configs/xx.py  work_dirs/xx/lastest.pth --show --save_dir  work_dirs/vis_solo

AssertionError: Caught AssertionError in DataLoader worker process 0

assert shape[i] >= img.shape[i]
AssertionError

做了以下尝试

1.检查环境版本匹配

2.并将线程workers_per_gpu设置为0

3.调整学习率

mmdet 默认的学习率是基于8个gpu,而且默认是1个GPU处理2个图像:
lr=imgs_per_gpu*0.00125

4.最后找出是所有图像数据的原始尺寸和标注尺寸需在同一大小下

The size of tensor a (x) must match the size of tensor b (81) at non-singleton dimension 1 

/configs/xx.py中的某些模型的类别参数不止一个,要全部修改

'numpy.ndarray' object has no attribute 'cpu'

换模型验证时出现的问题,将检测脚本换为test.py

ap=0

由于2.3.3中设置了rescale=False,导致模型输出的bbox和segm结果都是相对于网络输入尺寸(1333,800)的,但是测试集的gt都是在原尺寸下的。

configs/xx.py中test_pipeline下的img_scale修改成自己数据集尺寸

ap=-1

 标注中没有检测到该大小的对象

1mmdet2之后的类别数=本身数据集的类别数,不用加背景

2检查标注文件json2coco.py转换时area恒等于1

# annotation['area'] = 1.0  # 导致medium和large的ap都是-1
annotation['area'] = annotation['bbox'][2] * annotation['bbox'][3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值