mmdetection学习——模型对比实验

1. 安装配置mmdetection环境,直接看官网

开始你的第一步 — MMDetection 3.0.0 文档

最好用conda新建环境管理,防止包冲突

git clone mmdetection源码到本地

2. 开始实验

2.1 准备数据集

需要使用COCO数据集格式

2.2 配置训练文件

在configs文件夹里找到想要的模型,以faster rcnn为例,我想用faster-rcnn_r50_fpn_ciou_1x_coco.py这个模型配置文件,我只需要继承它即可,需要修改哪里用类的继承的方法修改就行,会自动覆盖原始的值。

以下配置文件为例:configs/faster_rcnn/faster-rcnn_r18_fpn_8xb8-amp-lsj-200e_FOD_tiny.py

# 继承这个类,如果需要修改哪个就写哪个就行
_base_ = 'faster-rcnn_r50_fpn_ciou_1x_coco.py'

# 我们还需要更改 head 中的 num_classes 以匹配数据集中的类别数
model = dict(
    roi_head=dict(
        bbox_head=dict(
            type='Shared2FCBBoxHead',
            num_classes=23
        )
    )
)

train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=50, val_interval=1)

# 修改数据集相关配置
data_root = '/home/zhangh/dataset/defect_dataset/'
metainfo = {
    # 'classes': ('Straight_Knife', 'Folding_Knife', 'Scissor', 'Utility_Knife', 'Multi-tool_Knife'),
    'classes': ('Abrasion', 'Crazing', 'Patches', 'Inclusion', 'Uneven', 'Blowhole', 'Break', 'Crack', 'Crescent_Gap', 'Crease', 'Silk-Spot', 'Water-Spot', 'Weld-Line', 'GC-Inclusion', 'Oil-Spot', 'Rolled-Pit', 'Punching', 'Waist-Folding', 'Bruise', 'Pitted_Surface', 'Rolled-in_Scale', 'Scratches', 'Bubble'),

    # 'palette': [
    #     (220, 20, 60),
    # ]
}
train_dataloader = dict(
    batch_size=8,
    num_workers=1,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='JASON/instances_train2017.json',
        data_prefix=dict(img='images/train/')))
val_dataloader = dict(
    batch_size=8,
    num_workers=1,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='JASON/instances_val2017.json',
        data_prefix=dict(img='images/val/')))
test_dataloader = dict(
    batch_size=8,
    num_workers=1,
    dataset=dict(
        data_root=data_root,
        metainfo=metainfo,
        ann_file='JASON/instances_test2017.json',
        data_prefix=dict(img='images/test/')))

# 修改评价指标相关配置
val_evaluator = dict(ann_file=data_root + 'JASON/instances_val2017.json')
test_evaluator = dict(ann_file=data_root + 'JASON/instances_test2017.json')

# load_from =None # 加载预训练模型

# 官网
# https://mmdetection.readthedocs.io/zh-cn/latest/user_guides/test.html

# 训练
# python tools/train.py configs/pascal_voc/faster-rcnn_r50_fpn_1x_voc0712.py

# 测试
# python tools/test.py configs/pascal_voc/faster-rcnn_r50_fpn_1x_voc0712.py checkpoints/faster_rcnn_r50_fpn_1x_voc0712_20200624-c9895d40.pth
# ./tools/dist_test.sh configs/mask_rcnn/mask-rcnn_r50_fpn_1x_coco.py checkpoints/mask_rcnn_r50_fpn_1x_coco_20200205-d4b0c5d6.pth

# 获得模型参数量
# python tools/analysis_tools/get_flops.py configs/faster_rcnn/faster-rcnn_r18_fpn_8xb8-amp-lsj-200e_FOD_tiny.py



如需加载预训练模型,可以在对于的配置文件里找到README文件进行下载,在用load_from=模型路径即可。 

2.3开始训练

用到tools/train.py这个工具

python tools/train.py configs/pascal_voc/faster-rcnn_r50_fpn_1x_voc0712.py

 训练好的权重文件会保存至work_dirs文件夹。

2.4 开始验证

用到tools/test.py这个工具

python tools/test.py configs/pascal_voc/faster-rcnn_r50_fpn_1x_voc0712.py checkpoints/faster_rcnn_r50_fpn_1x_voc0712_20200624-c9895d40.pth

设置 mmdetection/mmdet/evaluation/metrics/coco_metric.py里的classwise为true,在推理的时候能够看到每个类别的ap值。

模型的参数量和计算量,需要用到tools/analysis_tools/get_flops.py文件

python tools/analysis_tools/get_flops.py configs/faster_rcnn/faster-rcnn_r18_fpn_8xb8-amp-lsj-200e_FOD_tiny.py

计算模型的fps,需要用到tools/analysis_tools/benchmark.py文件

python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 --use_env  tools/analysis_tools/benchmark.py configs/faster_rcnn/faster-rcnn_r18_fpn_8xb8-amp-lsj-200e_FOD_tiny.py --checkpoint work_dirs/faster-rcnn_r18_fpn_8xb8-amp-lsj-200e_FOD_tiny/epoch_50.pth --launcher pytorch

python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500

代表分布式的参数,直接复制即可

加--use_env的原因如下链接:

https://blog.csdn.net/qq_43826289/article/details/131564035

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张飞飞飞飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值