保姆级教程:用BiSeNetv2在Cityscapes数据集上跑通语义分割(附避坑指南)

张开发
2026/4/20 10:42:37 15 分钟阅读

分享文章

保姆级教程:用BiSeNetv2在Cityscapes数据集上跑通语义分割(附避坑指南)
从零到一BiSeNetv2在Cityscapes数据集上的实战指南第一次接触语义分割任务时我被那些能将街景照片中每个像素都精确分类的算法深深吸引。BiSeNetv2作为轻量级实时语义分割网络的代表在保持较高精度的同时大幅提升了推理速度特别适合需要快速响应的场景应用。本文将带你完整走通从环境搭建到模型训练的每个环节避开那些新手常踩的坑。1. 环境配置与工程准备在Ubuntu 18.04系统上我们需要先确保CUDA和cuDNN的正确安装。建议使用conda创建独立的Python环境避免依赖冲突conda create -n bisenet python3.7 -y conda activate bisenet安装PyTorch时需特别注意版本匹配问题。对于CUDA 10.2环境使用以下命令安装兼容的PyTorch版本pip install torch1.8.1cu102 torchvision0.9.1cu102 -f https://download.pytorch.org/whl/torch_stable.html克隆BiSeNetv2官方仓库并安装依赖git clone https://github.com/CoinCheung/BiSeNet cd BiSeNet pip install -r requirements.txt常见问题排查遇到ImportError: libGL.so.1错误时执行sudo apt install libgl1-mesa-glx报错ModuleNotFoundError: No module named mmcv时使用pip install mmcv-full提示建议在工程根目录下创建MODEL文件夹存放预训练模型保持项目结构清晰2. Cityscapes数据集处理技巧Cityscapes作为自动驾驶领域的标杆数据集其精细的标注质量令人赞叹。下载数据集后建议采用以下目录结构project_root/ ├── BiSeNet/ └── cityscapes/ ├── leftImg8bit/ └── gtFine/创建软链接的正确姿势cd BiSeNet/datasets/cityscapes ln -s ../../../cityscapes/leftImg8bit leftImg8bit ln -s ../../../cityscapes/gtFine gtFine数据集预处理时需要注意图像尺寸默认为2048×102419个语义类别包含道路、车辆、行人等标注采用彩色编码需通过官方脚本转换3. 模型训练全流程解析BiSeNetv2采用双分支结构兼顾空间细节和上下文信息。训练配置主要参数参数值说明lr_start5e-3初始学习率weight_decay5e-4权重衰减cropsize[512,1024]训练裁剪尺寸ims_per_gpu8每GPU图像数单卡训练启动命令export CUDA_VISIBLE_DEVICES0 python -m torch.distributed.launch --nproc_per_node1 tools/train_amp.py --config configs/bisenetv2_city.py多卡训练只需调整环境变量export CUDA_VISIBLE_DEVICES0,1 python -m torch.distributed.launch --nproc_per_node2 tools/train_amp.py --config configs/bisenetv2_city.py训练过程常见问题OOM错误减小ims_per_gpu或cropsize损失不下降检查学习率设置NaN值尝试关闭混合精度训练4. 模型评估与可视化训练完成后使用以下命令评估模型在验证集上的表现python tools/evaluate.py --config configs/bisenetv2_city.py --weight-path ./res/model_final.pthDemo测试支持图片和视频输入# 图片测试 python tools/demo.py --config configs/bisenetv2_city.py --weight-path ./MODEL/model_final_v2_city.pth --img-path ./example.png # 视频测试 python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path ./MODEL/model_final_v2_coco.pth --input ./video.mp4 --output res.mp4可视化结果解读技巧不同颜色代表不同语义类别边缘模糊区域通常是难例小物体识别效果反映模型感受野设计5. 自定义数据集迁移方案当需要训练自己的数据集时关键修改点集中在配置文件cfg dict( model_typebisenetv2, n_cats5, # 修改为自定义类别数 datasetCustom, im_root./datasets/custom, train_im_anns./datasets/custom/train.txt, cropsize[384, 640] # 根据图像尺寸调整 )数据标注建议流程使用LabelMe进行多边形标注将JSON转换为单通道PNG生成train.txt/val.txt文件列表数据增强策略调整城市街景保持常规缩放比例医疗图像减小旋转幅度遥感影像增加色彩扰动在完成第一个完整训练周期后建议先用小批量数据验证流程是否正确。记得备份重要配置文件不同实验使用不同respth保存路径。当看到模型开始识别出你标注的物体轮廓时那种成就感绝对值得这些繁琐的配置工作。

更多文章