mmdetection 训练 Faster R-CNN

训练步骤

  1. 安装 labelme

    conda create --name=labelme python=3.6
    conda activate labelme
    pip install pyqt5
    pip install labelme
    
  2. 安装 scikit-imagescipy

    pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
    pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  3. 运行 ..\data\coco\train2014\labelme2coco.py,生成 instances_train2014.json,并复制到..\data\coco\annotations\

  4. 运行 ..\data\coco\val2014\labelme2coco.py,生成 instances_val2014.json,并复制到..\data\coco\annotations\

  5. 修改change.py 并运行:

    pretrained_weights  = torch.load('F:\\BaiduNetdiskDownload\\mmdetection\\mmdetection-1.1.0\\checkpoints\\faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth')
    num_class = 类别 + 1
    torch.save(pretrained_weights, "F:\\BaiduNetdiskDownload\\mmdetection\\mmdetection-1.1.0\\faster_rcnn_r50_fpn_1x_%d.pth"%num_class)
    

    可以看到文件夹里多出一个文件: faster_rcnn_r50_fpn_1x_2.pth

  6. mmdetection-1.1.0\mmdet\utils\collect_env.py 注释42-44

    #gcc = subprocess.check_output('gcc --version | head -n1', shell=True)
    #gcc = gcc.decode('utf-8').strip()
    #env_info['GCC'] = gcc
    
  7. 修改mmdetection-1.1.0\configs\My_faster_rcnn_r50_fpn_1x.py:

    训练类别数: num_classes = 类别+1
    训练次数: total_epochs = 10
    学习率: lr = 0.02 
    第2步生成的权重文件: load_from = 'F:\\BaiduNetdiskDownload\\mmdetection\\mmdetection-1.1.0\\faster_rcnn_r50_fpn_1x_2.pth'
    训练多少次保存一次权重: checkpoint_config = dict(interval=5)
    填写你的val2014文件夹图片数目:  
    log_config = dict(
        interval=10,
        hooks=[
            dict(type='TextLoggerHook'),
            # dict(type='TensorboardLoggerHook')
        ])
    
  8. 修改mmdetectio_fasterrcnn\mmdet\datasets\coco.pyCLASSES 为自己要训练的类别名称: CLASSES = ('dog')

  9. 开始训练: python tools/train.py configs/My_faster_rcnn_r50_fpn_1x.py

  10. 这一步可能会报错,不用理会:

    'tail' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    'gcc' 不是内部或外部命令,也不是可运行的程序或批处理文件。
    
  11. 但如果这一步报错是: OSError: symbolic link privilege not held,需要以管理员模式打开进行运行
    训练结果

测试训练结果

  1. 训练模型在: F:\BaiduNetdiskDownload\mmdetection\mmdetection-1.1.0\work_dirs\faster_rcnn_r50_fpn_1x\

  2. 修改demo.py:

    config_file = 'configs/My_faster_rcnn_r50_fpn_1x.py'
    checkpoint_file = 'work_dirs/faster_rcnn_r50_fpn_1x/epoch_10.pth'
    
    img = 'data/coco/val2014/000021.jpg'
    
  3. 运行demo.py: python demo.py,这一步可能会报错:

    Traceback (most recent call last):
    File "demo.py", line 16, in <module>
    	show_result(img, result, model.CLASSES)
    File "F:\BaiduNetdiskDownload\mmdetection\mmdetection-1.1.0\mmdet\apis\inference.py", line 143, in show_result
    	assert isinstance(class_names, (tuple, list))
    AssertionError                                             
    

    因为类别中只有一类,所以需要适当修改,详情参考:解决方案

    上面的错误将通过 mmdet/apis/inference.py 第143行,修改

    assert isinstance(class_names, (tuple, list))
    

    assert isinstance(class_names, (tuple, list, str))
    

结果如图
这个识别出了两部分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MMDetection是一个开源目标检测框架,它支持许多不同的目标检测模型,包括Faster R-CNN。要训练Faster R-CNN模型,您需要准备数据集、模型配置文件以及训练脚本。可以参考MMDetection的官方文档(https://mmdetection.readthedocs.io/en/latest/tutorials/train.html),了解详细的训练步骤。 ### 回答2: mmdetection是一个用于目标检测的开源框架。其中,Faster R-CNN是其中一种比较常用的检测网络,主要通过Region Proposal Network(RPN)生成候选区域,然后利用RoI Pooling对这些区域进行特征提取和分类。在训练Faster R-CNN时,我们需要做以下几步: 1. 数据预处理:将数据转换为合适的格式,例如将图片和标注转换为COCO(Common Objects in Context)格式。 2. 模型搭建:使用mmdetection中提供的配置文件进行模型搭建,并进行相应的超参数设置。在进行设置时,需要考虑到训练时可能需要使用的GPU数量,以及学习率,权重衰减等参数。 3. 数据扩增:为了提高模型的鲁棒性,在训练前需要进行数据扩增,常用的方法包括随机裁剪、随机翻转、随机旋转等。 4. 数据加载:定义DataLoader来实现数据的批量加载,并设置数据的并行数,以便加快训练速度。 5. 损失函数:Faster R-CNN中常用的损失函数包括分类损失和回归损失。在训练时需要同时计算这两种损失函数,并设置相应的权重。 6. 模型训练:对模型进行训练。在训练过程中,可以使用Adam等优化器对模型进行优化,并进行学习率调整、权重更新等操作。训练时需要注意过拟合的问题,并及时进行模型的调整。 7. 模型测试:在训练完成后,使用测试集数据对模型进行测试,以验证模型的准确性和鲁棒性。 总之,mmdetection训练Faster R-CNN需要进行许多步骤,其中需要注意的是数据的预处理、模型搭建和调整超参数、数据扩增、损失函数的设定、并行计算和过拟合的问题。通过对这些步骤进行科学、合理的设置,可以获得较好的结果。 ### 回答3: mmdetection是一个开源的目标检测框架,其中包含了许多常用的检测算法如Faster R-CNN,RetinaNet等模型,同时也提供了细粒度的API接口方便用户进行自定义的检测模型开发。 在使用mmdetection训练Faster R-CNN模型时,首先需要准备数据集。一般而言,数据集应包含包含训练图片、标注文件和验证图片。其中标注文件指的是通过标注工具标记每张图片中要检测的区域,并且标注的格式应符合COCO格式。 接着需要进行模型配置,mmdetection支持许多的配置项,如数据增强方式、anchor设计和ROI pooling等。用户可以根据自己的需求进行设置。对于Faster R-CNN模型而言,它一般需要设置backbone、RPN以及ROI pooling等模块的参数。 在模型配置完成后,就可以使用mmdetection提供的训练函数进行模型训练了。通常使用的是SGD或Adam等优化器,训练时可进行多次迭代,不断优化模型的参数。 另外,模型训练过程中还需要进行模型验证。通常在每一次训练迭代结束后,对于验证集上的表现进行评估,了解模型的效果。在评估过程中,可以计算模型的精度、召回率等指标,据此判断模型的性能是否达到要求,并进行参数的微调。 需要注意的是,Faster R-CNN模型的训练所需要的时间和硬件资源比较大,因此在进行模型训练时,可选择使用GPU进行加速。此外,也需要耐心地对模型进行调整和优化,以提高模型的检测效果。 总的来说,mmdetection训练Faster R-CNN模型需要进行数据集准备、模型配置、模型训练和模型验证等步骤。需要注意的是,模型训练时间较长,需要耐心对模型进行调整和优化,保证最终的检测效果达到要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值