文章目录
一、标记数据
使用labelme create rectangle 标记矩形物体
使用labelme 文件下的 labelme2coco 把标记好的多个json转换成1个json
注意:需要labels.txt文件
python labelme2coco.py inputimg outputimg --labels=labels.txt
二、修改mmdetection配置文件
1.修改dataset文件
在F:\mmdetection-2.7.0\configs_base_\datasets\coco_detection.py
data_root = 'dataset/qingdao' #自己数据集路径
因为我只有一个json,所以全部的训练测试都是同一个。显卡显存小,所以设置为1
data = dict(
samples_per_gpu=1,
workers_per_gpu=1,
train=dict(
type=dataset_type,
ann_file=data_root + '/annotations.json',
img_prefix=data_root ,
pipeline=train_pipeline),
val=dict(
type=dataset_type,
ann_file=data_root + '/annotations.json',
img_prefix=data_root ,
pipeline=test_pipeline),
test=dict(
type=dataset_type,
ann_file=data_root + '/annotations.json',
img_prefix=data_root,
pipeline=test_pipeline))
2.修改模型类别
在路径F:\mmdetection-2.7.0\configs_base_\models\mask_rcnn_r50_fpn.py
文中3处都要修改
num_classes=1,
3.修改coco类别
在路径F:\mmdetection-2.7.0\mmdet\datasets\coco.py
CLASSES=('rect') # 自己数据集类别
训练
python tools\trans.py confings\cascade_rcnn\cascade_rcnn_r50_fpn_1x_coco.py
TIPS
1.出现错误 ValueError: need at least one array to concatenate
大概率是因为2.3没做。
2.修改加载原来的权重
在 F:\mmdetection-2.7.0\configs_base_\default_runtime.py
load_from = None #模型路径
3.修改学习次数
在F:\mmdetection-2.7.0\configs_base_\schedules\schedule_1x.py
lr_config = dict(
policy='step',
warmup='linear',
warmup_iters=500,
warmup_ratio=0.001,
step=[8, 11])
total_epochs = 50 #学习次数