mmdetection 常用命令

1. 多卡训练

CUDA_VISIBLE_DEVICES=0,1,2,3 PORT=15200 ./tool/dist_train.py configs/***.py 4

多机多卡:

机器1: python -m torch.distributed.launch --nproc_per_node=8 --nnodes=2 --node_rank=0 --master_addr=172.16.30.2 --master_port=29502 tools/train.py ***.py --launcher=pytorch
机器2:python -m torch.distributed.launch --nproc_per_node=8 --nnodes=2 --node_rank=1 --master_addr=172.16.30.2 --master_port=29502 tools/train.py ***.py --launcher=pytorch

    • 关于多机多卡训练的几个注意事项:
      1. 代码:
      a. 需要写代码的时候支持多机多卡,这个openmmlab系列的代码默认是支持的。如果是自己新实现的代码,一般多卡可以用,那么多机多卡也可以用。
      b. 不同机器上要用完全相同的一套代码(除非是故意设计成不一样的),因为会涉及到数据通信,否则会出现卡死或结果不对
      c. 最好保持不同机器的代码放在同一个路径下,可以放在共享目录,也可以放在不同机器的相同绝对路径
      2. 数据:用同样的数据,放在同一个位置。参考1.c的放置方法(本地也可以,保证训练代码一致,路径一致就行)
      3. 环境:参考2数据放置的方法(注意这里的环境不仅包括conda环境,还包含各种环境变量,cuda,cudnn等)
      4. 使用:假设有2台机器,机器1的IP:192.168.28.71,机器2的IP:192.168.28.72。
      在机器1上执行:NNODES=2 NODE_RANK=0 MASTER_ADDR=192.168.28.71 PORT=29512 bash tools/dist_train.sh .......
      在机器2上执行:NNODES=2 NODE_RANK=1 MASTER_ADDR=192.168.28.71 PORT=29512 bash tools/dist_train.sh .......

2. 普通测试

python tools/test.py configs/yolox/mobilenetv2/yolox_nano_mobilenetv2_050_yoloxpafpn_face_person_0207.py work_dir/yolox_nano_mobilenetv2_050_yoloxpafpn_face_person_0207/best_bbox_mAP_epoch_99.pth --eval bbox

3. 生成PR指标测试(内部实现)

python tools/test.py configs/yolox/face_person_0207.py work_dir/face_person_0207/best_bbox_mAP_epoch_99.pth --eval bbox --eval_for_engineering

4. 保存预测的JSON文件

python tools/test.py configs/yolox/face_person_0207.py work_dir/face_person_0207/best_bbox_mAP_epoch_99.pth  --format-only --eval-options jsonfile_prefix=facedata_v1

5. 在线测试 JSON文件(work_dir不起作用可以随便设置)

python tools/test.py configs/yolox/face_person_0207.py work_dir/face_person_0207/best_bbox_mAP_epoch_99.pth --offline_pr **.json  --eval bbox --eval_for_engineering

6. 离线工具测试命令(detection_evalution)

python main.py --mmdet_result ***.json --config ***config.py --label_file **gt.json

7.生成onnx

python tools/deployment/pytorch2onnx.py configs/yolox/mobilenetv2/yolox_nano_mobilenetv2_025_yoloxpafpn_face_person_0209_person_relu.py work_dir/yolox_nano_mobilenetv2_025_yoloxpafpn_face_person_0209_person_relu/epoch_1.pth --output-file work_dir/yolox_nano_mobilenetv2_025_yoloxpafpn_face_person_0209_person_relu/mobilenet_025_320_192 --shape 192 320 --skip-postprocess 

8.绘制loss曲线,查看模型收敛情况

python tools/analysis_tools/analyze_logs.py plot_curve work_dir/a/20230214_053242.log.json --keys loss --start-epoch 1 --eval-interval 10 --legend loss --out=work_dir/a/loss.png

9.查看网络细节信息

models = torch.load("***.pth")
models.keys() #查看模型关键字
state_dict = models['state_dict']
for name, v in state_dict.items():
    print(name, v.shape)

10.查看 param 和 flops

python tools/analysis_tools/get_flops.py /home/liushuan/work_space/mmdetection_superacme/configs/yolox/yolox_nano_cspdarknetv10_person_face_keypoint_ov.py --shape 384 640

11.可视化loss结果

python tools/analysis_tools/analyze_logs.py plot_curve  *.log.json --keys loss --out **/loss.jpg

        (也可使用tensorbord 可视化,需要提前在config里面做相关配置)

MMYolo

        1.保存onnx模型

python projects/easydeploy/tools/export.py \
    configs/yolov5/yolov5_s-v61_fast_1xb12-40e_cat.py \
    work_dirs/yolov5_s-v61_fast_1xb12-40e_cat/epoch_40.pth \
    --work-dir work_dirs/yolov5_s-v61_fast_1xb12-40e_cat \
    --img-size 640 640 \
    --batch 1 \
    --device cpu \
    --simplify \
    --opset 11 \
    --backend 1 \
    --pre-topk 1000 \
    --keep-topk 100 \
    --iou-threshold 0.65 \
    --score-threshold 0.25

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: mmdetection多GPU训练命令如下: python -m torch.distributed.launch --nproc_per_node=8 --master_port=12345 tools/train.py configs/faster_rcnn_r50_fpn_1x.py 其中,--nproc_per_node表示每个节点使用的GPU数量,--master_port表示主节点的端口号,configs/faster_rcnn_r50_fpn_1x.py是训练配置文件的路径。 ### 回答2: MMDetection 是科学家们模型检测研究工具包,它具有训练多 gpu 单个节点的功能以加快模型训练速度。常见的多 gpu 训练方式和单 gpu 训练方式一样,主要有以下几个步骤: 1、设置运行配置文件 首先需要设置运行配置文件,在该文件中可以指定训练数据集的路径、模型的路径等,以便让 MMDetection 进行数据的读取、加载和训练。运行配置文件包含多条配置项,用户需要根据实际情况进行设置。 2、设置多 gpu 参数 在运行配置文件中也需要设置多 gpu 的一些参数,例如 batch_size_per_gpu(每个 gpu 的 batch_size)、workers_per_gpu(每个 gpu 的 worker 数量、num_gpus(训练时使用的 gpu 数量)、dist_params 等,这些参数可以根据实际的 GPU 利用率和训练速度进行调整,以便在多 GPU 之间获得最佳的加速效果。 3、运行多 gpu 训练命令 设置好配置文件和参数后,需要运行命令来开启多 GPU 训练模式。如下所示: python -m torch.distributed.launch --nproc_per_node=<nproc_per_node> <training_script>.py <configuration_file> 其中 `<nproc_per_node>` 表示希望使用的 GPU 数量,`<training_script>` 表示训练脚本的名称,`.py` 表示 Python 脚本文件。例如:若要在四个 GPU 上训练 Faster R-CNN 模型,可以使用以下脚本运行命令: python -m torch.distributed.launch --nproc_per_node=4 tools/train.py configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py 4、设置 gpu 环境变量 如果在运行前没有设置 CUDA_VISIBLE_DEVICES 环境变量,可能会运行失败,因为默认情况下,CPU 会分配所有可用的 GPU。因此,在运行前,需要使用以下命令进行设置: export CUDA_VISIBLE_DEVICES=0,1,2,3 这两个命令将在当前 shell 中设置该变量。这里的 0,1,2,3 将被识别为 GPU 设备 ID,因此仅这些 GPU 设备将被分配给当前 shell。 结束语 以上就是 MMDetection 多 GPU 训练的方法。通过这种方法,可以实现更快的模型训练速度,从而加快模型训练的效率,并提高模型的性能表现。 ### 回答3: 在使用MMDetection进行多GPU训练时,需要使用分布式数据并行(DistributedDataParallel)的方式,并设置相应的参数。 具体的多GPU训练命令如下: ``` python -m torch.distributed.launch --nproc_per_node=8 --use_env tools/train.py <CONFIG_FILE> --launcher pytorch ``` 其中,`<CONFIG_FILE>`是指训练模型的配置文件,比如`configs/faster_rcnn/faster_rcnn_r50_fpn_1x_coco.py`。`--nproc_per_node=8`表示使用8个GPU进行训练,`--launcher pytorch`表示使用PyTorch分布式训练方式。 需要注意的是,在多GPU训练时,需要在配置文件中将`total_epochs`和`lr`调整为相应的值,以达到最优的训练效果。 此外,如果在服务器上使用多GPU训练,建议使用`screen`或`tmux`等命令行工具,以避免训练过程中出现SSH断开等问题。同时,如果需要在训练过程中进行监控,可以使用`tensorboard`或`visdom`等可视化工具。 总之,使用MMDetection进行多GPU训练需要遵循一定的规范和流程,仔细设置参数和监控训练过程,才能得到最佳的训练效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NineDays66

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值