mmdetection多GPU训练说明

1、docker环境:

​ docker exec -it dj_mmdetection /bin/bash 进入docker容器,切换到mmdetection目录

cd /home/mmdetection-envs/mmdetection/

2、找到对的配置文件:

​ 当前目录下==>configs文件夹中找到对应的py文件,根据py文件顶部base找到对应的base配置文件(没有的话就只有文件本身)。比如faster_rcnn_x101_64x4d_fpn_1x_coco.py,其base = ‘./faster_rcnn_r50_fpn_1x_coco.py’,说明要一级一级往上找;又比如atss_r50_fpn_1x_coco.py,其base = [
‘…/base/datasets/coco_detection.py’,’…/base/schedules/schedule_1x.py’, ‘…/base/default_runtime.py’],说明自己本身就是配置文件,只需要修改其他三个了。


3、修改参数:

​ 上一步找到最终的base配置后,都会出现dataset、schedules、runtime三个py文件,其中dataset和schedules是一定要修改的,最好每次train之前都确认一下环境。

​ 首先,进入…/base/schedules/schedule_1x.py文件,如果训练不是1x(对应12epochs),就打开对应轮次的文件。这里主要修改学习率 lr 的值:官方是8张GPU ==> 0.02,如果没有特别说明学习率,一般都是线性计算的,即如果我是4张GPU就0.01,两张就0.005…以此类推。修改并检查完毕后,保存该文件。

​ 然后,进入…/base/datasets/coco_detection.py文件,修改第二行"data_root"结果为当前服务器的数据集路径,如果可以的话也可以修改数据集的mean和std。最后检查30行开始的配置中,是否文件夹和文件名和服务器数据集一一对应了。修改并检查完毕后,保存该文件。

​ 接着回到上一步中的网络对应的base.py,搜索一下配置文件中所有"num_classes",找到并修改为当前数据集的分类个数(fridge_coco是52类)。修改完毕后保存文件。

然后换到另外一个大文件夹下:mmdetection/mmdet下面

​ 继续进入mmdet/datasets/coco.py。把CLASSES的tuple改为自己数据集对应的种类即可(fridge_coco有52类)。最后进入mmdet/core/evaluation/class_names.py修改coco_classes()方法return的list的内容,这也就是上面classes的tuple。修改完毕后保存配置文件。

注:以上参数除了学习率可能经常需要根据GPU个数调整外,其他参数都已经调整好了,但是还是建议训练前多检查一遍,避免数据集等发生变化而不知道。

接下来就可以开始训练了。


4、多卡训练网络:

​ 此时可以cd回到mmdetection目录下,运行如下命令:

 tools/dist_train.sh ${configs下面的配置文件} ${GPU个数} --work-dir ${存储输出权重、日志等的目录}# 下面是具体的例子tools/dist_train.sh configs/atss/atss_r50_fpn_1x_coco.py 4 --work-dir results/atss_r50_fpn_1x_coco/

​ 第一次运行将会下载对应权重到 /root/.cache/torch/checkpoints/文件夹下面,如果太慢了可以自己下载好再传到服务器对应位置,然后等待训练结束…


5、验证训练好的pth文件:

5-1:官方提供的方式
python tools/test.py ${配置文件} ${训练好的模型} [--out ${保存输出结果的位置}] [--eval ${验证类型}] [--show](此项可显示每个图像检测后的结果)
# 举例说明
python test.py configs/atss/atss_r50_fpn_1x_coco.py result/atss_r50_fpn_1x_coco/epoch_12.pth --eval bbox

​ 该脚本将输出指定网络和指定pth文件下的mAP和Recall值。

5-2:其它脚本

​ 如果想计算一下推理图片的速度,可以用以下代码

# -*- coding:utf-8 -*-
from argparse import ArgumentParser
from mmdet.apis import inference_detector, init_detector, show_result_pyplot
import os
import timedef main():parser = ArgumentParser()parser.add_argument('imgpath', help='Image path')parser.add_argument('config', help='Config file')parser.add_argument('checkpoint', help='Checkpoint file')parser.add_argument('--device', default='cuda:0', help='Device used for inference')parser.add_argument('--score-thr', type=float, default=0.3, help='bbox score threshold')args = parser.parse_args()# build the model from a config file and a checkpoint filemodel = init_detector(args.config, args.checkpoint, device=args.device)basepath = args.imgpathimglist = os.listdir(basepath)[0:120]  # 前10张预热,后10张收尾,只计算推理中间100张的时间print('capacity :', len(imglist))for index, img in enumerate(imglist):if index == 10:print('start count')start = time.time()_ = inference_detector(model, os.path.join(basepath, img))if index == 110:print('end count')end = time.time()print("--------------------------------------------------------")total = end - startprint("total:", total)print('fps===>', 100 / total)print('over')if __name__ == '__main__':main()

具体代码在mmdetection/demo/countfps.py中,调用方式为:

python demo/countfpn.py ${图片目录} ${配置文件} ${训练好的模型}
# 举例子
python demo/countfpn.py  data/data/fridge_coco/val2014/ configs/atss/atss_r50_fpn_1x_coco.py  result/atss_r50_fpn_1x_coco/epoch_12.pth

mmdetection训练记录相关推荐

  1. mmdetection训练、测试

    文章目录 前言 一.使用mmdetection训练测试Mask-Rcnn 1.数据集转化 2.准备配置文件 3.训练 4.测试 二.mmdetection补充知识 前言 用于记录mmdetection ...

  2. 使用MMDetection训练自己的数据集

    github链接:OpenMMLab (github.com) 官方文档:Prerequisites - MMDetection 2.15.1 documentation MMDetection推荐大 ...

  3. 建立自己的voc数据集_将自己数据集转化成voc数据集格式并用mmdetection训练

    一.准备自己的数据 拿nwpu数据集来举例,nwpu数据集文件夹中的内容是: images文件夹:存放数据图片 labelTxt文件夹:存放标注信息,images文件夹中每张图片都对应一个txt文件存 ...

  4. mmdetection训练出现:IndexError: list index out of range 错误

    mmdetection训练出现:IndexError: list index out of range 错误 文章目录: 1 问题分析 1.1 尝试解决错误:第一次 1.2 尝试解决错误:第二次 2 ...

  5. ACM组队训练记录(Grooming)

    本文主要记录了本菜鸡(Chen.Jr)所在的队伍的2018年训练记录以及部分题解,以此来鼓励本蒟蒻奋发图强. Name Solved A B C D E F G H I J K L M 2018-20 ...

  6. 训练记录番外篇(2):2022 ICPC Gran Premio de Mexico 2da Fecha

    2022 ICPC Gran Premio de Mexico 2da Fecha 2022.10.3 之前训得ak场,个人认为很edu. (顺便一提,可能这个训练记录番外系列的比赛都非常edu,十分 ...

  7. ubuntu 从刷机到yolov5环境搭建训练记录

    ubuntu 从刷机到yolov5环境搭建训练记录 这两天需要一个模型检测一些摄像头内容,使用yolov5训练了一个模型,记录一下. 1. 刷机 具体步骤不描述,网上很多. 刷机时遇到一个问题,原有系 ...

  8. mmdetection训练自己的COCO数据集及常见问题

    训练自己的VOC数据集及常见问题见下文: mmdetection训练自己的VOC数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客_mmdetection训练voc 目录 一.环境安装 二.训练 ...

  9. mmdetection训练自己的VOC数据集及常见问题

    训练自己的COCO数据集及常见问题见下文: mmdetection训练自己的COCO数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客 目录 一.环境安装 二.训练测试步骤 三.常见问题 bat ...

最新文章

  1. HMM与条件随机场区别 转
  2. js运算符单竖杠“|”的用法和作用及js数据处理
  3. TCP/IP报文格式
  4. 用tensorflow实现yolov3
  5. python祝福祖国代码_国庆节踩空间留言代码_国庆节祝福正在加载中
  6. 数据库监控框架 oneproxy-monitor 开源了
  7. ntfs for mac使用注意事项有哪些?
  8. rsync+sersync大数据T级以上进行同步方法
  9. 如何在任何设备上将您的Apple笔记导出为PDF文件?
  10. 回旋加速器和同步加速器的区别
  11. win10无法打开网页
  12. python续行符是啥_python 续行符
  13. Oracle分区表详解,分区表创建,分区表按日期划分
  14. 为什么说品牌推广离不开软文营销呢?一文告诉你软文营销的优势
  15. Python打印空心等腰三角形
  16. Docker镜像原理及容器数据卷
  17. 替换Word模板占位符并用 libreOffice Word 转Pdf
  18. scanf函数用%s参数时的注意事项
  19. 重磅!鼎捷软件参与编写制定的机械行业团体标准正式发布
  20. Android 计算屏幕尺寸

热门文章

  1. 用艺术的陪伴赋能心智障碍群体
  2. Unity 如何在程序中发送Email邮件
  3. 渲染(render)和着色(shading)
  4. Wireless Emergency Alerts 介绍(CMAS介绍)
  5. vv_jeffy之spring4.x集成myibatis3.x
  6. linux系统中struct timeval结构体、struct timezone结构体以及gettimeofday函数
  7. 解决adb几秒自动退出
  8. python截取字符串后三位_python如何截取字符串后几位
  9. 使用qrcode.js生成网址二维码
  10. js 获取百度搜索关键词的代码