环境: 按照官网推荐安装 mmdetection.readthedocs.io/zh_CN/stabl…
mmcv>=2.0.0
mmdetection==3.1.0
1. 收集自己需要的数据集
mmdetection适配很多数据集,我们以比较通用的coco数据集进行训练。拿到coco数据集并且与之适配的coco掩码标签。或者直接coco官网下载合适的数据集。 cocodataset.org/
将下载的数据集放入根目录下。
2. 设定自己想要测试的项目
mmdet\datasets\coco.py
按照格式修改classes里面的表述为自己想要检测的目标标签,同时修改pelette下到相同的个数。
class CocoDataset(BaseDetDataset):
"""Dataset for COCO."""
METAINFO = {
'classes':
('车','面包车','公交车','卡车','人','自行车'),
# palette is a list of color tuples, which is used for visualization.
'palette':
[(220, 20, 60), (119, 11, 32), (0, 0, 142), (0, 0, 230), (106, 0, 228),
(0, 60, 100)]
}
mmdet\evaluation\functional\class_names.py
return中的名称按照上面相同的格式顺序进行修改。
def coco_classes() -> list:
"""Class names of COCO."""
return [
'车','面包车','公交车','卡车','人','自行车'
]
在根目录下进行重新编译文件:
cd mmdetection
pip install -v -e .
3.选定训练文件
之后运行的脚本即是该文件
configs\faster_rcnn\faster-rcnn_r50_fpn_1x_coco.py
_base_ = [
'../_base_/models/faster-rcnn_r50_fpn.py',#选择的训练模型
'../_base_/datasets/coco_detection.py',#训练数据的配置文件【重点】
'../_base_/schedules/schedule_1x.py',#训练过程参数配置(学习率等)
'../_base_/default_runtime.py'#训练时间
]
4. 修改配置文件
这个文件决定了数据载入方式与处理方式
configs_base_\datasets\coco_detection.py
4.1设定数据集目录
更改data_root为自己的训练的目录
dataset_type = 'CocoDataset'
data_root = 'data/coco/'#自己的数据集保存位置
4.2修改测试集json和验证集json地址
此处要保证json文件都在数据集目录下面。
train_dataloader = dict(
batch_size=2,
num_workers=2,
persistent_workers=True, # 避免每次迭代后 dataloader 重新创建子进程
sampler=dict(type='DefaultSampler', shuffle=True), # 默认的 sampler,同时支持分布式训练和非分布式训练
batch_sampler=dict(type='AspectRatioBatchSampler'), # 默认的 batch_sampler,用于保证 batch 中的图片具有相似的长宽比,从而可以更好地利用显存
dataset=dict(
type=dataset_type,
data_root=data_root,
ann_file='annotations/instances_train2017.json',#【修改此处】
data_prefix=dict(img='train2017/'),#【修改此处】
filter_cfg=dict(filter_empty_gt=True, min_size=32),
pipeline=train_pipeline))
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/instances_val2017.json',#【修改此处】
data_prefix=dict(img='val2017/'),#【修改此处】
test_mode=True,
pipeline=test_pipeline))
test_dataloader = val_dataloader # 测试 dataloader 的配置与验证 dataloader 的配置相同,这里省略
4.3修改测试方法
val_evaluator = dict(
type='CocoMetric',
ann_file=data_root + 'annotations/instances_val2017.json',#【修改此处】
metric='bbox',#画框
format_only=False,
backend_args=backend_args)
test_evaluator = val_evaluator
5.运行脚本,生成测试模型
在根目录下输入
python tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x.py
即可开始训练自己的模型,默认为12个训练周期,并且在训练的过程中,会生成mAP供测试评估,训练好自己的模型就可以拿来使用和评估了。