mmdetection训练记录
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训练记录相关推荐
- mmdetection训练、测试
文章目录 前言 一.使用mmdetection训练测试Mask-Rcnn 1.数据集转化 2.准备配置文件 3.训练 4.测试 二.mmdetection补充知识 前言 用于记录mmdetection ...
- 使用MMDetection训练自己的数据集
github链接:OpenMMLab (github.com) 官方文档:Prerequisites - MMDetection 2.15.1 documentation MMDetection推荐大 ...
- 建立自己的voc数据集_将自己数据集转化成voc数据集格式并用mmdetection训练
一.准备自己的数据 拿nwpu数据集来举例,nwpu数据集文件夹中的内容是: images文件夹:存放数据图片 labelTxt文件夹:存放标注信息,images文件夹中每张图片都对应一个txt文件存 ...
- mmdetection训练出现:IndexError: list index out of range 错误
mmdetection训练出现:IndexError: list index out of range 错误 文章目录: 1 问题分析 1.1 尝试解决错误:第一次 1.2 尝试解决错误:第二次 2 ...
- ACM组队训练记录(Grooming)
本文主要记录了本菜鸡(Chen.Jr)所在的队伍的2018年训练记录以及部分题解,以此来鼓励本蒟蒻奋发图强. Name Solved A B C D E F G H I J K L M 2018-20 ...
- 训练记录番外篇(2):2022 ICPC Gran Premio de Mexico 2da Fecha
2022 ICPC Gran Premio de Mexico 2da Fecha 2022.10.3 之前训得ak场,个人认为很edu. (顺便一提,可能这个训练记录番外系列的比赛都非常edu,十分 ...
- ubuntu 从刷机到yolov5环境搭建训练记录
ubuntu 从刷机到yolov5环境搭建训练记录 这两天需要一个模型检测一些摄像头内容,使用yolov5训练了一个模型,记录一下. 1. 刷机 具体步骤不描述,网上很多. 刷机时遇到一个问题,原有系 ...
- mmdetection训练自己的COCO数据集及常见问题
训练自己的VOC数据集及常见问题见下文: mmdetection训练自己的VOC数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客_mmdetection训练voc 目录 一.环境安装 二.训练 ...
- mmdetection训练自己的VOC数据集及常见问题
训练自己的COCO数据集及常见问题见下文: mmdetection训练自己的COCO数据集及常见问题_不瘦8斤的妥球球饼的博客-CSDN博客 目录 一.环境安装 二.训练测试步骤 三.常见问题 bat ...
最新文章
- HMM与条件随机场区别 转
- js运算符单竖杠“|”的用法和作用及js数据处理
- TCP/IP报文格式
- 用tensorflow实现yolov3
- python祝福祖国代码_国庆节踩空间留言代码_国庆节祝福正在加载中
- 数据库监控框架 oneproxy-monitor 开源了
- ntfs for mac使用注意事项有哪些?
- rsync+sersync大数据T级以上进行同步方法
- 如何在任何设备上将您的Apple笔记导出为PDF文件?
- 回旋加速器和同步加速器的区别
- win10无法打开网页
- python续行符是啥_python 续行符
- Oracle分区表详解,分区表创建,分区表按日期划分
- 为什么说品牌推广离不开软文营销呢?一文告诉你软文营销的优势
- Python打印空心等腰三角形
- Docker镜像原理及容器数据卷
- 替换Word模板占位符并用 libreOffice Word 转Pdf
- scanf函数用%s参数时的注意事项
- 重磅!鼎捷软件参与编写制定的机械行业团体标准正式发布
- Android 计算屏幕尺寸
热门文章
- 用艺术的陪伴赋能心智障碍群体
- Unity 如何在程序中发送Email邮件
- 渲染(render)和着色(shading)
- Wireless Emergency Alerts 介绍(CMAS介绍)
- vv_jeffy之spring4.x集成myibatis3.x
- linux系统中struct timeval结构体、struct timezone结构体以及gettimeofday函数
- 解决adb几秒自动退出
- python截取字符串后三位_python如何截取字符串后几位
- 使用qrcode.js生成网址二维码
- js 获取百度搜索关键词的代码