关于mmdetection框架实用小工具说明

关于mmdetection框架实用小工具说明

  • 1、Train
    • 单GPU训练
    • 多GPU训练(容易写错)
  • 2、Test
    • 单GPU训练
    • 多GPU训练
  • 3、Analysis_tools (分析工具,对模型的分析和对结果的分析)
    • 日志分析
    • Test预测结果展示
    • 模型复杂度分析
    • 计算平均训练时长(没啥用)
    • 每个类上分数展示(不好用)
  • out: results.bbox.json and results.segm.json

1、Train

单GPU训练

CONFIG=_ #配置文件路径
WORKDIR=_#结果保存目录
Python ./tools/train.py $CONFIG --work-dir $workdir #其他的参数可以详见train.py文件或config文件内修改

–work-dir $workdir: 相当于参数,不想直接更改配置文件,可以直接在后边传参,传参的内容看train.py文件就可以
比如用faster_rcnn训练,在终端运行:

CUDA_ VISIBLE_DEVICES=6 python . /tools/train.py  configs/faster_rcnn_r50_fpn_1x_coco_logo.py

多GPU训练(容易写错)

GPU_NUM=_#使用gpu数量
CONFIG=_ #配置文件路径
WORKDIR=_#结果保存目录
CUDA VISIBLE DEVICES=_ bash ./tools/dist_train.sh $CONFIG $GPU_NUM --work-dir $NORKOIR # 其他的参数可以详见train.py文件或在config文件内修改

注意:
多GPU经常写错,官方有多GPU脚本(在 mmdetection/tools/dist_train.sh)中
多GPU的时候,端口容易出问题,因此需要加一个random,就相当于端口在29500-29510之间随机选一个,这样就不会有冲突,不然只能跑一个,第二个就冲突
关于mmdetection框架实用小工具说明_第1张图片

2、Test

单GPU训练

CONFIG=
CHECKPOINT=
python ./tools/test.py $CONFIG $CHECKPOINT --out $0UTPUTFILE --eval segm

$CONFIG :配置文件
$CHECKPOINT --out :训练好的模型,把模型loan进来
$0UTPUTFILE --eval segm :我们都是bbox指标 --eval bbox

多GPU训练

CONFIG=
CHECKPOINT=
GPU_NUM=
CUDA VISIBLE DEVICES=_ ./tools/dist_test.py $CONFIG $CHECKPOINT $GPU_NUM --out $0UTPUTFILE --eval segm

3、Analysis_tools (分析工具,对模型的分析和对结果的分析)

日志分析

#安装pip install seaborn 
LOGFILE=_  # log文件 log.json 
OUTFILE=   #图片输出地址
KEYS=_     #打印的键值
TITLE=      #输出图片title
python tools/analysis_tools/analyze_logs.py plot_curve $LOGFILE [--keys $[KEYS][--title ${TITLE}][--legend $[LEGEND}] [--backend $[BACKEND}] [--style ${STYLE}] [--out ${OUTFILE}]

例如:

python tools/analysis tools/analyze logs.py plot curve logo train/20210723 033839.log.json --keys bbox mAP --legend bbox mAP

–keys bbox mAP:评价指标
**注意:**可以放多个log文件(横向纵向),也可以放多个key值(打印多个指标)放一张上,可以有更多参数设定,让图画的更好看,也可以改源码,让它更好看

Test预测结果展示

CONFIG=_				#配置文件
PREDICTION_PATH_=		#test预测的结果文件(.pk1)
SHOW_DIR=_			#保存结果的目录
#--show 是否直接展示结果 选择false 
WAIT_TIME=_			#直接展示结果的等待时长
TOPK=				#展示前几个结果
SHOW SCORE THR= 		#展示结果的阈值
CFG_OPTIONS=			#配置文件的选项,默认为config文件
python tools/analysis_tools/analyze_results.py
$[CONFIG] \
${PREDICTION_PATH} \
$[SHOW_DIR] \
[--show] \
[--wait-time ${WAIT_TIME}] \
[--topk $[TOPK]] \
[--show-score-thr ${SHOW_SCORE_THR}] \
[--cfg-options $[CFG_OPTIONS]
  • 可视化
    https://github.com/chien-Hung/DetVisGUI/tree/mmdetection
CONFIG_FILE=_		#Config file of mmdetction传入config
RESULT_FILE=_		#pickle/json format. 
STAGE=_ 			# train val test ,default is 'val'
SAVE_DIRECTORY=_ 	# default is 'output
python DetvisGUI.py ${CONFIG_FILE} [--det_file ${RESULT_FILE}] [--stage ${STAGE}] [--output ${SAVE_DIRECTORY}]

例:

Python DetvisGUI.py ../configs/faster_rcnn_r50_fpn_1x_coco_logo_vis.py --det_file ../logo_train/result12.pkl

会跳出可视化窗口会直接显示结果,并且有相应的阈值,也可以自行调试阈值,也可以看各个类的表现

模型复杂度分析

CONFIG FILE=
INPUT_SHAPE=		#default:(1,3,1280,800)
# FLOPS 与输入大小有关 parameters 与输入大小无关
python tools/analysis_tools/get_flops.py  ${CONFIG_FILE}[--shape  ${INPUT_SHAPE}]

例:CUDA_VISIBLE_DEVICES=6 python ./tools/analysis_tools/get_flops.py config/faster_rcnn/fsater_rcnn_r50_fpn_1x_coco_logo.py
#输出示例(这个结果不是很准)
Input shape:(3,1280,800)
FIOPS:206.72GFLOPS #浮点复杂度
Params:41.18M #打印参数的数量

计算平均训练时长(没啥用)

python tools/analysis_tools/analyze_logs.py cal_train time $LOGFILE 

#结果示例

# -----Analyze train time of logo train/20218723 8339.log.json----
# slowest epoch 7, average time is 0.3195 
# fastest epoch 12, average time is 0.3126 
# time std over epochs is 0.0018 
# average iter time:0.3156 s/iter

每个类上分数展示(不好用)

coco_error_analysis结果分析,每个类上的分数展示
#获取json格式的结果文件

out: results.bbox.json and results.segm.json

CONFIG=
CHECKPOINT=
RESULT DIR=
ANN_FILE=
python tools/test.py \
$CONFIG \
$CHECKPOINT \ 
--format-only\
--options  "jsonfile_prefix=. /results"

#使用coco_error_analysis进行每个类的结果分析

python tools/analysis_tools/coco_error_analysis.py \
results.bbox.json 	 \
$RESULT DIR 	 \
--ann=$ANN_FILE \

你可能感兴趣的:(复现研究,python,开发语言)