BiSeNet
BiSeNet 是一个专注于实时语义分割的开源深度学习项目,提供了 BiSeNetV1 和 BiSeNetV2 两种高效网络架构的 PyTorch 实现。它主要解决了在自动驾驶、机器人导航等场景中,如何在保证高精度的同时实现极速图像处理的难题。通过在 Cityscapes 数据集上达到每秒数百帧的推理速度,BiSeNet 成功平衡了计算效率与分割质量,让实时环境感知成为可能。
该项目特别适合计算机视觉开发者、算法研究人员以及需要部署边缘计算应用的技术团队使用。其核心亮点在于独特的双路径网络设计:一条路径捕捉高分辨率的空间细节,另一条路径提取深层语义信息,两者结合既保留了图像边缘的清晰度,又确保了分类的准确性。此外,BiSeNet 不仅提供了在 Cityscapes、COCO-Stuff 和 ADE20K 等多个主流数据集上的预训练模型,还详细支持了 TensorRT、NCNN、OpenVINO 等多种工业级部署方案,方便用户将模型快速迁移至不同硬件平台。无论是进行学术研究还是开发实际的视频分割应用,BiSeNet 都提供了一套完整且易于上手的工具链。
使用场景
某自动驾驶初创团队正在开发城市道路实时感知系统,需要在车载边缘设备上对摄像头视频流进行毫秒级的路面语义分割,以识别车道线、行人和障碍物。
没有 BiSeNet 时
- 推理延迟过高:传统高精度分割模型在 Tesla T4 等边缘 GPU 上运行缓慢,帧率往往低于 30 FPS,导致车辆决策滞后,存在安全隐患。
- 部署流程复杂:将实验室模型转化为车载引擎(如 TensorRT 或 NCNN)需要大量手动优化代码,缺乏统一的导出脚本,工程落地周期长达数周。
- 精度与速度难平衡:为了追求速度强行压缩模型,导致小目标(如远处行人)漏检严重;若保留精度则显存占用过大,无法在嵌入式设备运行。
- 动态场景适应性差:面对城市复杂光影和多尺度物体,固定架构的模型泛化能力不足,需频繁重新训练调整参数。
使用 BiSeNet 后
- 实现实时高频响应:利用 BiSeNetV2 的双路架构,在 fp16 精度下于 Cityscapes 数据集达到 161 FPS,int8 量化后更可达 198 FPS,完美满足实时控制需求。
- 一键式多平台部署:借助官方提供的 TensorRT、NCNN 及 OpenVINO 专用脚本,团队可在一天内完成从 PyTorch 模型到车载推理引擎的转换与验证。
- 兼顾细节与效率:BiSeNet 特有的细节分支保留了高分辨率特征,在维持极高速度的同时,mIOU 仍保持在 75% 以上,显著提升了边缘目标的识别准确率。
- 灵活适配生产环境:支持直接读取摄像头数据流并输出分割视频,配合 Triton 推理服务器方案,轻松集成至现有的自动驾驶软件栈中。
BiSeNet 通过独创的双路网络设计,成功打破了语义分割领域“高精度”与“高速度”不可兼得的僵局,成为边缘端实时视觉感知的理想基石。
运行环境要求
- Linux
- 需要 NVIDIA GPU (作者测试环境为 Tesla T4),支持 CUDA 10.2 或 11.3,需安装 cuDNN 8
- 训练 COCOStuff 数据集时因类别多 (171 类) 需较大显存,建议使用多卡分布式训练
未说明

快速开始
BiSeNetV1 和 BiSeNetV2
在 Cityscapes 验证集上的 mIOU 和 FPS:
| 无 | ss | ssc | msf | mscf | FPS(fp32/fp16/int8) | 链接 |
|---|---|---|---|---|---|---|
| bisenetv1 | 75.44 | 76.94 | 77.45 | 78.86 | 112/239/435 | 下载 |
| bisenetv2 | 74.95 | 75.58 | 76.53 | 77.08 | 103/161/198 | 下载 |
在 COCO-Stuff val2017 集上的 mIOU:
| 无 | ss | ssc | msf | mscf | 链接 |
|---|---|---|---|---|---|
| bisenetv1 | 31.49 | 31.42 | 32.46 | 32.55 | 下载 |
| bisenetv2 | 30.49 | 30.55 | 31.81 | 31.73 | 下载 |
在 ADE20K 验证集上的 mIOU:
| 无 | ss | ssc | msf | mscf | 链接 |
|---|---|---|---|---|---|
| bisenetv1 | 36.15 | 36.04 | 37.27 | 36.58 | 下载 |
| bisenetv2 | 32.53 | 32.43 | 33.23 | 31.72 | 下载 |
提示:
ss 表示单尺度评估,ssc 表示单尺度裁剪评估,msf 表示带翻转变换的多尺度评估,mscf 表示带翻转变换的多尺度裁剪评估。多尺度评估的尺度和裁剪尺寸可在 configs 中找到。
FPS 的测试方法与论文中的不同。更多信息请参见 here。
BiSeNetV2 的作者使用的是 COCO-Stuff-10k 数据集,而我使用的是 COCO-Stuff-123k(具体如何划分不清楚,但训练集和验证集的图像数量与目标检测任务相同)。因此,结果可能与论文有所不同。
作者未报告 ADE20K 上的结果,因此没有官方的训练设置。这里我只是提供了一个“能跑通”的结果。或许通过更好的设置,ADE20K 上的结果还能进一步提升。
模型存在较大的方差,这意味着多次训练的结果可能会有较大的波动。例如,如果你在 Cityscapes 数据集上多次训练 BiSeNetV2,你会发现其 ss 评估结果会在 73.1 到 75.1 之间变化。
部署训练好的模型
TensorRT
详细信息请参见 tensorrt。NCNN
详细信息请参见 ncnn。OpenVINO
详细信息请参见 openvino。TIS
Triton 推理服务器(TIS)提供了一种部署服务解决方案。详细信息请参见 tis。
平台
我的运行环境如下:
- Ubuntu 18.04
- NVIDIA Tesla T4 GPU,驱动版本 450.80.02
- CUDA 10.2/11.3
- cuDNN 8
- Miniconda Python 3.8.8
- PyTorch 1.11.0
开始使用
有了预训练权重后,你可以对单张图片进行推理,命令如下:
$ python tools/demo.py --config configs/bisenetv2_city.py --weight-path /path/to/your/weights.pth --img-path ./example.png
这将会对图片进行推理,并将结果保存为 ./res.jpg。
你也可以对视频进行推理,命令如下:
$ python tools/demo_video.py --config configs/bisenetv2_coco.py --weight-path res/model_final.pth --input ./video.mp4 --output res.mp4
这将会生成分割后的视频文件 res.mp4。如果你想从摄像头输入,可以将 --input 设置为摄像头 ID,而不是 input ./video.mp4。
准备数据集
- Cityscapes
从官方网站 website 注册并下载数据集,然后将其解压到 datasets/cityscapes 目录下:
$ mv /path/to/leftImg8bit_trainvaltest.zip datasets/cityscapes
$ mv /path/to/gtFine_trainvaltest.zip datasets/cityscapes
$ cd datasets/cityscapes
$ unzip leftImg8bit_trainvaltest.zip
$ unzip gtFine_trainvaltest.zip
- COCO-Stuff
从官方网站 website 下载 train2017.zip、val2017.zip 和 stuffthingmaps_trainval2017.zip。然后按照以下步骤操作:
$ unzip train2017.zip
$ unzip val2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/images
$ mv val2017/ /path/to/BiSeNet/datasets/coco/images
$ unzip stuffthingmaps_trainval2017.zip
$ mv train2017/ /path/to/BiSeNet/datasets/coco/labels
$ mv val2017/ /path/to/BiSeNet/datasets/coco/labels
$ cd /path/to/BiSeNet
$ python tools/gen_dataset_annos.py --dataset coco
- ADE20K
从这个 网站 下载 ADEChallengeData2016.zip 并解压。然后将解压后的文件夹移动到 datasets/ade20k,并使用我为你准备的脚本生成标注文件:
$ unzip ADEChallengeData2016.zip
$ mv ADEChallengeData2016/images /path/to/BiSeNet/datasets/ade20k/
$ mv ADEChallengeData2016/annotations /path/to/BiSeNet/datasets/ade20k/
$ python tools/gen_dataset_annos.py --dataset ade20k
- 自定义数据集
如果你想用自己的数据集进行训练,需要先生成标注文件,格式如下:
munster_000002_000019_leftImg8bit.png,munster_000002_000019_gtFine_labelIds.png
frankfurt_000001_079206_leftImg8bit.png,frankfurt_000001_079206_gtFine_labelIds.png
...
每行是一对训练样本和真实标签图像路径,用逗号 , 分隔。
建议你使用以下脚本来检查数据集信息:
$ python tools/check_dataset_info.py --im_root /path/to/your/data_root --im_anns /path/to/your/anno_file
这会打印出一些关于你的数据集的信息。
然后你需要修改配置文件中的 im_root 和 train/val_im_anns 字段。我为你准备了一个示例配置文件 bisenet_customer.py,你可以从这个配置文件开始。
训练
我用于训练模型的命令可以在 here 找到。
注意:
- 尽管
bisenetv2的浮点运算量较少,但它需要更多的训练轮次。因此,bisenetv1的训练时间更短。 - 我使用总批次大小为 16 来训练所有模型。由于 COCO-Stuff 有 171 个类别,训练时需要更多的显存。因此,我将 16 张图片分配到多于 2 张 GPU 上进行训练,就像在 Cityscapes 上那样。
从已训练模型微调
你也可以加载已训练的模型权重并在此基础上进行微调,命令如下:
$ export CUDA_VISIBLE_DEVICES=0,1
$ torchrun --nproc_per_node=2 tools/train_amp.py --finetune-from ./res/model_final.pth --config ./configs/bisenetv2_city.py # 或 bisenetv1
评估预训练模型
你也可以这样评估一个训练好的模型:
$ python tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
或者你可以使用多张GPU:
$ torchrun --nproc_per_node=2 tools/evaluate.py --config configs/bisenetv1_city.py --weight-path /path/to/your/weight.pth
请注意,这是原始代码库的重构版本。如果你需要,可以前往 old 目录查看原始实现,不过我认为你可能不需要它。
版本历史
0.0.02020/08/06常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器