88 lines
2.2 KiB
Bash
88 lines
2.2 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# BEVFusion 多任务训练脚本(检测 + 分割)
|
|||
|
|
|
|||
|
|
set -e # 遇到错误立即退出
|
|||
|
|
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "BEVFusion 多任务训练脚本"
|
|||
|
|
echo "任务:3D目标检测 + BEV地图分割"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 配置参数
|
|||
|
|
NUM_GPUS=8
|
|||
|
|
CONFIG="configs/nuscenes/multitask/fusion-det-seg-swint.yaml"
|
|||
|
|
BACKBONE_PRETRAIN="pretrained/swint-nuimages-pretrained.pth"
|
|||
|
|
LIDAR_PRETRAIN="pretrained/lidar-only-det.pth"
|
|||
|
|
|
|||
|
|
# 检查预训练模型
|
|||
|
|
echo "检查预训练模型..."
|
|||
|
|
if [ ! -f "$BACKBONE_PRETRAIN" ]; then
|
|||
|
|
echo "错误:找不到 $BACKBONE_PRETRAIN"
|
|||
|
|
echo "请先下载预训练模型"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if [ ! -f "$LIDAR_PRETRAIN" ]; then
|
|||
|
|
echo "错误:找不到 $LIDAR_PRETRAIN"
|
|||
|
|
echo "请先下载预训练模型"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
echo "✓ 预训练模型检查通过"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查配置文件
|
|||
|
|
echo "检查配置文件..."
|
|||
|
|
if [ ! -f "$CONFIG" ]; then
|
|||
|
|
echo "错误:找不到配置文件 $CONFIG"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
echo "✓ 配置文件检查通过"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 检查GPU
|
|||
|
|
echo "检查GPU..."
|
|||
|
|
GPU_COUNT=$(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)
|
|||
|
|
echo "可用GPU数量: $GPU_COUNT"
|
|||
|
|
if [ $GPU_COUNT -lt $NUM_GPUS ]; then
|
|||
|
|
echo "警告:可用GPU数量($GPU_COUNT)小于配置数量($NUM_GPUS)"
|
|||
|
|
echo "将使用 $GPU_COUNT 个GPU"
|
|||
|
|
NUM_GPUS=$GPU_COUNT
|
|||
|
|
fi
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 显示训练配置
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "训练配置:"
|
|||
|
|
echo " 配置文件: $CONFIG"
|
|||
|
|
echo " GPU数量: $NUM_GPUS"
|
|||
|
|
echo " Camera Backbone预训练: $BACKBONE_PRETRAIN"
|
|||
|
|
echo " LiDAR预训练: $LIDAR_PRETRAIN"
|
|||
|
|
echo " 任务: 3D检测 + BEV分割"
|
|||
|
|
echo "======================================"
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
# 询问确认
|
|||
|
|
read -p "是否开始训练?(y/n) " -n 1 -r
|
|||
|
|
echo
|
|||
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|||
|
|
echo "训练已取消"
|
|||
|
|
exit 0
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 开始训练
|
|||
|
|
echo ""
|
|||
|
|
echo "开始训练..."
|
|||
|
|
echo ""
|
|||
|
|
|
|||
|
|
torchpack dist-run -np $NUM_GPUS python tools/train.py \
|
|||
|
|
$CONFIG \
|
|||
|
|
--model.encoders.camera.backbone.init_cfg.checkpoint $BACKBONE_PRETRAIN \
|
|||
|
|
--load_from $LIDAR_PRETRAIN
|
|||
|
|
|
|||
|
|
echo ""
|
|||
|
|
echo "======================================"
|
|||
|
|
echo "训练完成!"
|
|||
|
|
echo "======================================"
|
|||
|
|
|