跳转到正文
403F's Cafe
返回

超像素算法比较

超像素算法比较 封面图

目录

目录

1. 什么是超像素

超像素(superpixel)是一种图像预分割方法。它会把一张图像中空间相邻、颜色或纹理相似的像素聚合成若干小区域。相比直接处理单个像素,超像素把图像从像素级表示转换为区域级表示

一个理想的超像素结果通常具有以下特点:

超像素的主要作用不是直接完成语义分割,而是为后续图像分析提供更稳定、更紧凑的中间表示。常见用途包括:

在这些场景中,超像素质量会影响后续算法的可靠性。如果一个超像素横跨真实语义边界,例如同时包含道路和车辆,那么后续对该区域提取的特征或标签都会被混合污染。相反,如果超像素能够较好地贴合真实边界,那么后续算法更容易在区域级别区分不同物体或不同语义类别。

因此,评价超像素算法时不能只看区域数量,也不能只看视觉效果,而应同时关注:

2. 实验数据集与参与比较的算法

2.1 数据集

本次比较使用 Cityscapes 数据集的完整训练集:

Cityscapes 是自动驾驶和街景理解中常用的数据集,包含道路、车辆、行人、建筑、交通设施等复杂城市街景。它适合用于测试超像素算法对真实语义边界的贴合能力,因为图像中存在大量细长物体、小目标、遮挡关系和复杂边界。

2.2 诊断范围

本次实验只比较超像素算法本身,评估内容包括:

本次实验不评估任何下游任务,例如语义分割模型精度、区域合并效果或特征分类性能。因此,本文结论只说明这些算法在超像素层面的表现,不直接等价于下游任务的最终收益。

2.3 实验配置

本次实验的主要配置如下:

其中:

2.4 参与比较的算法

本次比较了 6 种超像素方法:

方法 IDBackend说明
rust_slic_r24_c10rust_slicRust 实现的 SLIC,作为 baseline
opencv_slic_r24_c10opencv_slicOpenCV SLIC
opencv_slico_r24opencv_slicoOpenCV SLICO
opencv_mslic_r24_c10opencv_mslicOpenCV MSLIC
opencv_lsc_r24opencv_lscOpenCV LSC
opencv_seeds_target_r24opencv_seedsOpenCV SEEDS

这些方法覆盖了常见的基于聚类、局部搜索或种子扩展的超像素算法。比较重点不是证明某个算法在所有场景中绝对最好,而是在 Cityscapes 街景图像上观察它们的边界贴合、区域纯度和成本差异。

3. 评价指标

本次比较使用以下指标:

指标含义趋势
recall_ttolerance_px=2 容差内,真实语义边界被超像素边界覆盖的比例越高越好
precision_t超像素边界中有多少比例对齐真实语义边界越高越好
f1_ttolerant precision 与 tolerant recall 的调和平均越高越好
missed_gt_boundary_rate_t未被超像素边界覆盖的真实语义边界比例,即 1 - recall越低越好
pixel_impurity被选中像素中不属于所在区域主类别的比例越低越好
mixed_region_pixel_rate落在混合区域中的像素比例越低越好
mean_num_regions每张图平均超像素区域数量越低计算成本越低

这些指标可以分成三类:

需要注意,所有方法的 precision_t 都较低。这是超像素任务中的常见现象:超像素算法通常会在图像内部产生大量区域边界,而这些边界并不一定对应真实语义边界。因此,precision 偏低并不必然说明算法失败,而是说明该方法产生了较多内部切分。

在本次分析中,更重要的是综合判断:

4. 总体结果

4.1 边界贴合度

方法Recall@tMissed boundaryPrecision@tF1@t
rust_slic_r24_c1076.10%23.90%8.09%14.63%
opencv_slic_r24_c1080.50%19.50%7.15%13.13%
opencv_slico_r2456.06%43.94%5.68%10.31%
opencv_mslic_r24_c1092.91%7.09%6.19%11.60%
opencv_lsc_r2468.84%31.16%7.78%13.98%
opencv_seeds_target_r2465.38%34.62%7.04%12.72%

4.2 区域纯度与计算成本

方法Backend平均 region 数Pixel impurityMixed-region pixel rate
rust_slic_r24_c10rust_slic4,513.52.59%10.66%
opencv_slic_r24_c10opencv_slic3,824.02.78%11.41%
opencv_slico_r24opencv_slico3,654.83.27%12.45%
opencv_mslic_r24_c10opencv_mslic21,499.91.76%7.15%
opencv_lsc_r24opencv_lsc3,608.22.96%11.63%
opencv_seeds_target_r24opencv_seeds2,048.03.72%14.27%

总体结果可以概括为:

5. 具体算法比较

5.1 MSLIC:最高边界覆盖与最低污染,但成本最高

opencv_mslic_r24_c10 是本次比较中边界覆盖和区域纯度表现最强的方法:

相对于 rust_slic_r24_c10

样本级比较也显示 MSLIC 的优势非常稳定:

这说明 MSLIC 的优势不是少数样本造成的,而是在完整 Cityscapes train split 上具有一致性。

但 MSLIC 的缺点同样明显:它产生的区域数量远高于其他方法。

因此,MSLIC 可以被视为高质量、高成本的方案。它适合用于追求边界覆盖和区域纯度的场景,但如果后续处理对区域数量敏感,则需要谨慎使用。

结论:MSLIC 是本次实验中边界贴合和区域纯度最强的方法,但其计算成本最高,不适合作为无条件默认选择。

5.2 Rust SLIC:最均衡的 baseline

rust_slic_r24_c10 虽然不是 recall 最高的方法,但它在整体折中上表现最好:

样本级 F1 胜出情况为:

这说明 Rust SLIC 的优势在于平衡:它不会像 MSLIC 那样大幅增加区域数量,同时保持了较好的边界覆盖和区域纯度。

结论:Rust SLIC 是本次比较中最均衡的 baseline,适合需要兼顾质量和计算成本的场景。

5.3 OpenCV SLIC:低成本提高 boundary recall,但纯度略差

opencv_slic_r24_c10 的主要特点是区域数量比 Rust SLIC 更少,但 boundary recall 更高:

它的缺点是区域纯度略差:

样本级比较显示:

结论:OpenCV SLIC 是一个有价值的低成本 recall 提升方案。它不一定比 Rust SLIC 更均衡,但适合测试较少区域数量下是否仍能提高语义边界覆盖。

5.4 LSC:当前配置下没有达到预期

opencv_lsc_r24 在当前 Cityscapes 设置下没有优于 Rust SLIC:

样本级比较也较弱:

结论:在当前 region_size=24 和默认 LSC ratio 配置下,LSC 不具备明显优势。

这不代表 LSC 在所有参数下都不可用,但当前配置不应作为优先选择。

5.5 SEEDS:当前配置过粗,漏边界较多

opencv_seeds_target_r24 的平均区域数量明显低于其他方法:

这种较低区域数量带来了较低成本,但也导致边界覆盖不足:

相对于 Rust SLIC:

结论:当前 SEEDS 配置过粗,容易漏掉真实语义边界。如果继续评估 SEEDS,应提高目标 region 数进行 sweep。

可以考虑的后续配置包括:

5.6 SLICO:当前表现最弱

opencv_slico_r24 是本次比较中表现最弱的方法:

相对于 Rust SLIC,样本级比较几乎没有优势:

结论:SLICO 在当前配置下不适合作为优先候选。

6. 样本级稳定性分析

为了避免均值掩盖样本级差异,本次还统计了每张图上的最优方法。

6.1 Boundary recall winner

方法胜出样本数
opencv_mslic_r24_c102972
opencv_slic_r24_c102
rust_slic_r24_c101

解释:MSLIC 在 boundary recall 上几乎完全支配其他方法。

6.2 Boundary F1 winner

方法胜出样本数
rust_slic_r24_c102333
opencv_lsc_r24338
opencv_slic_r24_c10149
opencv_mslic_r24_c10124
opencv_seeds_target_r2431
opencv_slico_r240

解释:Rust SLIC 在 F1 上明显占优,说明它在边界覆盖和过度切分之间更均衡。

6.3 Pixel impurity winner

方法胜出样本数
opencv_mslic_r24_c102949
rust_slic_r24_c1019
opencv_slic_r24_c107

解释:MSLIC 在降低 mixed-label region contamination 上具有强一致性优势。

7. 可视化结果

7.1 可视化文件位置

为了让文章源码中不出现实验内部前缀,代表性可视化图已经复制到报告同目录下的 figures/ 文件夹。

每个方法包含两类图片:

7.2 代表性图片引用

Rust SLIC baseline

Rust SLIC contact sheet

Rust SLIC region report

OpenCV SLIC

OpenCV SLIC contact sheet

OpenCV SLIC region report

OpenCV MSLIC

OpenCV MSLIC contact sheet

OpenCV MSLIC region report

OpenCV SEEDS

OpenCV SEEDS contact sheet

OpenCV SEEDS region report

7.3 可视化解读

从 contact sheet 可以看到,不同算法使用同一批 Cityscapes 样例图,因此可以直接比较边界密度和覆盖风格。

结合 train_report.png 和数值结果,可以得到以下观察:

可视化结果与指标结论一致:

8. 最终结论

本次 Cityscapes train split 上的超像素算法比较显示:

最关键的数值结果是:

因此,综合推荐为:

本报告的结论置信度为:


分享文章:

下一篇
ICPC 西安邀请赛 2026 总结