看到一张监控画面,人在哪里、车在哪里、路面在哪里、绿化带在哪里——不只是框出个物体,而是每个像素都告诉你它属于什么类别。这就是语义分割要干的事。
今天分享的这篇 CVPR2026 论文 SegLite,提出了一个轻量实时语义分割框架:模型只有 5.8M 参数,在 Cityscapes 街景数据集上 mIoU 达到 78.3%,同时保持端侧实时推理速度。之前大家总觉得"分割模型大又慢",SegLite 把这个刻板印象打破了。
一、语义分割为什么落地慢
语义分割技术其实出来很多年了,但真正跑在边缘设备上的不多——不是效果不好,是工程上一直有几个坎。
1.1 计算量大:每个像素都要分类
目标检测是框出几十个框就够了,语义分割是给每个像素都做一次分类。一张 1080P 的图就是 200 万个像素,每个像素都过一遍网络,计算量是目标检测的几十倍。高精度模型(比如 SegFormer、Mask2Former)在服务器上跑得欢,到了边缘设备直接卡死。
1.2 分辨率和精度的矛盾
分割要精细,就得用高分辨率输入;但分辨率越高,计算量越大。常规做法是下采样 8 倍甚至 16 倍再做分割,结果就是边缘模糊、小物体直接没了。要精度就得高分辨率,要速度就得低分辨率——这个矛盾一直没很好解决。
1.3 类别不均衡:小目标容易被忽略
街景图片里,路面占了画面 60%,车占 20%,行人可能只有 2%,交通标志可能只有 0.5%。模型训练的时候,损失函数被大类别主导——反正把路面分对了 loss 就很低,小类别分错一点无所谓。结果就是小物体分割得一塌糊涂。
1.4 边缘部署难
分割模型里大量用到转置卷积、上采样这些操作,在 NPU 上算子支持不好,量化之后精度掉得厉害。很多论文里的"实时分割"是在 RTX 3090 上跑出来的,到了真实边缘设备上速度砍半。
二、SegLite 的三个核心设计
SegLite 的整体思路:不是简单压缩大模型,而是从架构设计之初就按"边缘设备友好"来设计——用最少的计算量拿到最高的精度。
2.1 双向轻量特征融合
传统分割网络的 decoder 是从深层到浅层单向恢复分辨率——把语义特征逐层上采样回来。SegLite 加了一个反向通路:
•深层→浅层(恢复细节):语义信息从深层传到浅层,帮助恢复边缘。
•浅层→深层(补充细节):浅层的高分辨率细节也反向传到深层,帮助定位小物体。
这个双向融合设计的好处是:不需要很深的 decoder 就能拿到很好的细节恢复效果,整个网络可以做得很轻。消融实验显示,去掉反向通路后,mIoU 掉了 2.1 个点,但推理速度没变——说明这个设计是"免费的精度提升"。
2.2 类别均衡采样训练
小类别被忽略怎么办?SegLite 在训练策略上做了调整:
•类别加权损失:小类别的损失权重自动调高——行人、交通标志分错了,惩罚更大。
•难例挖掘:训练的时候自动挑出那些容易分错的像素(比如车和阴影交界处),重点优化。
在 Cityscapes 的小类别(行人、自行车、交通标志)上,mIoU 平均提升了 3.5 个点,大类别(路面、建筑)基本没掉——这就是类别均衡的效果。
2.3 推理友好的算子设计
这是最工程导向的一个设计。SegLite 全程只用 NPU 上支持好的算子:
•不用转置卷积:转置卷积在 NPU 上支持差,改用双线性上采样 + 卷积来恢复分辨率。
•深度可分离卷积:整个 backbone 全部用深度可分离卷积,计算量小一半。
•通道剪枝:每个阶段的通道数经过精心设计,不多不少——刚好用够,不浪费。
这些设计看起来不炫,但实际部署的时候区别很大——同样 5.8M 参数,SegLite 在 Jetson Nano 上能跑 35fps,而一个结构类似的大模型可能只有 15fps。
三、技术架构拆解
SegLite 的整体 pipeline 分四个模块:
模块 |
做什么 |
关键设计 |
轻量 Backbone |
提取多尺度特征 |
深度可分离卷积,输出 1/4、1/8、1/16 三个尺度 |
双向融合 Neck |
高低层特征互相补充 |
深层→浅层恢复边缘,浅层→深层补充细节 |
轻量 Decoder |
恢复到原分辨率做逐像素分类 |
双线性上采样+卷积,不用转置卷积,NPU友好 |
类别均衡损失 |
训练时优化小类别 |
自动类别加权+难例挖掘 |
几个工程上的亮点:
•参数量:5.8M,比 MobileNetV2 还小。
•推理速度:768×768 输入在 Jetson Nano 上 35fps,Jetson Orin 上 120fps。
•量化友好:INT8 量化后 mIoU 只掉 0.8 个点,远好于同类模型。
四、和主流方法的横向对比
论文在 Cityscapes(街景语义分割)和 ADE20K(通用场景)上做了对比:
方法 |
Cityscapes mIoU↑ |
ADE20K mIoU↑ |
参数量(M) |
FPS(Jetson Nano) |
DeepLabV3+ |
78.5 |
45.7 |
42 |
5 |
BiSeNetV2 |
75.3 |
41.2 |
12 |
20 |
SegFormer-B0 |
76.2 |
42.5 |
3.7 |
18 |
SegLite |
78.3 |
44.8 |
5.8 |
35 |
可以看到,SegLite 的 Cityscapes mIoU 和 DeepLabV3+ 基本持平,但参数量只有后者的 1/7,速度快了 7 倍。和专门做实时分割的 BiSeNetV2 比,mIoU 高了 3 个点,速度还快了将近一倍。这个 trade-off 非常适合边缘部署——你不需要最好的精度,你需要的是"够用且够快"。
五、快速上手:推理核心代码
下面是 SegLite 的推理框架,帮大家理解整体流程:
python |
实际部署的时候,如果要做监控场景的分割,可以在 Cityscapes 预训练模型基础上,用自己的监控数据微调几百张图。类别数可以自己定义——路面、人、车、建筑、绿化带,按需增减。
六、毕设/竞赛拓展方向
语义分割这个方向做毕设有个好处——可视化效果非常直观,彩色分割图一眼就能看懂。分享几个有价值的拓展点:
6.1 遥感图像分割
卫星图、无人机图里的建筑、道路、农田、水体分割,是一个很具体的落地场景。遥感图像和普通街景差异很大——视角是俯视、分辨率低、类别分布不同。专门做一个遥感图像分割模型,行业对口性很强。
6.2 医学图像分割
CT 影像里的器官分割、病理切片里的病灶分割——医学分割是一个大方向,论文多、数据集成熟(如 ISBI、Cellpose)。结合轻量分割做一个"手机端医学图像辅助诊断"Demo,社会价值很高。
6.3 实时道路可行驶区域分割
自动驾驶里的可行驶区域分割是一个经典任务。基于 SegLite 做一个实时道路分割系统——识别哪里能开、哪里是人行道、哪里是绿化带——工程完整性很强,和实际应用结合很紧。
6.4 视频流语义分割+时序平滑
单帧分割做完,连续视频跑下来会发现帧与帧之间闪烁——同一像素这一帧是路面,下一帧变成车了。加一个时序一致性约束,做视频流的语义分割,结果会平滑很多。这个方向在监控和自动驾驶里都很实用。
七、写在最后
语义分割这个方向,大家总觉得要做大模型才够准。但 SegLite 告诉我们:架构设计得好、算子选得对、训练策略调得细,小模型也能拿到接近大模型的精度。
做边缘部署的时候,有一个很重要的认知:论文里的"实时"和真实部署的"实时"不是一回事。论文在 3090 上跑 30fps 不代表你在 Jetson 上也能跑 30fps——算子支持、内存带宽、量化损失,每一个都会打折扣。SegLite 从设计之初就考虑这些部署约束,这才是真正能落地的方案。
做毕设的同学如果选这个方向,我建议先拿 BiSeNetV2 或者 SegFormer-B0 跑通 baseline,然后选一个具体场景去微调——街景、遥感、医学都可以。场景越具体,你的工作就越有说服力。
大家如果有复现上的问题或者想聊具体的分割场景,欢迎评论区交流。

