利用detectron训练自己的数据集

@[TOC] (自己的数据集训练detectron)

先建立自己的训练数据:

在这里插入图片描述
注:
annotations下放了两个json文件:train.json 和 val.json(里面什么都没有写,因为没有验证集)
train下放的是训练集的原始图片
val下放的是验证集的原始图片(我的下面什么都没放,因为没有验证集)

1. 选择的训练网络:

我选择的是:configs/12_2017_baselines/e2e_mask_rcnn_R-50-FPN_1x.yaml

2. 修改 datasets/dataset_catalog.py

在datasets 里面加上自己的数据集
在这里插入图片描述
##3. 修改 configs/12_2017_baselines/e2e_mask_rcnn_R-50-FPN_1x.yaml
在这里插入图片描述
在这里插入图片描述

4. 运行代码

python tools/train_net.py --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-50-FPN_1x.yaml --skip-test OUTPUT_DIR /home/lixn/zy_work/out_dir
遇到了错误 : Loss is NaN
Loss is NaN:损失大过头了
可能的原因:

  1. 梯度爆炸造成Loss爆炸
    学习率过高的情况下,直接影响到每次更新值的程度比较大,走的步伐因此也会大起来,过大的学习率会导致如法顺利达到最低点,稍有不慎就会跳出可控区域,因此将会面对的就是损失成倍增加。这种情况很容易在网络层数比较深的时候出现。
    解决方法:降低初始的学习率,并设置学习率衰减。
    将.yaml文件下的BASE_LA:0.02 改小
    查看显存:nvidia-smi
    在这里插入图片描述
    最终我的配置文件:
    在这里插入图片描述
    最终训练结果:
    在这里插入图片描述

5. 测试

修改文件:’/detectron/datasets/dummy_datasets.py’将classes 安装生成的train.json 中categories分类顺序改为自己的类别。
在这里插入图片描述
关于测试的命令:

python tools/infer_simple.py --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-50-FPN_1x.yaml --output-dir /home/lixn/zy_work/out_dir --wts /home/lixn/zy_work/out_dir/train/labelme_train/generalized_rcnn/model_final.pkl demo
–cfg:配置文件
–output-dir:输出文件夹
–wts:训练好的权重
demo:该位置可改为自己要测试的图片放置的位置
我的测试代码:
python tools/infer_simple.py --cfg configs/12_2017_baselines/e2e_mask_rcnn_R-50-FPN_1x.yaml --output-dir /home/lixn/zy_work/out_dir --wts /home/lixn/zy_work/out_dir/train/labelme_train/generalized_rcnn/model_final.pkl /home/lixn/zy_work/mydata/val/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值