机器学习篇---图像分割
图像分割是计算机视觉的基础任务,简单说就是把图像划分成多个有意义的区域。经过多年发展,它已形成一套成熟的方法体系,大致可分为经典传统方法和现代深度学习方法两大流派。
📜 经典传统方法:基于数学与物理规则
在深度学习兴起前,图像分割主要依靠图像的底层特征(如灰度、纹理、边缘)和数学模型。这类方法计算量小、可解释性强,但泛化能力较弱。
基于阈值 (Threshold-based):通过设定灰度值界限来分离物体与背景。例如Otsu算法能自动找到最佳阈值,适合处理前景与背景对比度高的简单图像。
基于边缘检测 (Edge-based):先找到图像中灰度变化剧烈的像素点,再连接成物体轮廓。Canny算子就是一个经典工具,能精准定位边缘,但对噪声比较敏感。
基于区域 (Region-based):从一些“种子点”出发,将与周围相似的邻域像素不断合并(区域生长),最终形成完整区域。这种方法的效果很大程度上取决于初始种子点的选取。
基于图论 (Graph-based):将图像看作一幅由像素点构成的图,通过最小化“切割”的代价来找到最佳分割边界。GrabCut是其中的代表,只需用户画个框,就能迭代式地分离前景。
🤖 深度学习方法:让机器学会“看”
自2012年起,深度学习凭借自动从数据中学习复杂特征的能力,成为了图像分割的主流。根据任务目标的不同,它演变出了几个细分方向:
语义分割 (Semantic Segmentation):这是最基础的任务,目标是给图像中每一个像素都分配一个类别标签(如“天空”、“汽车”、“行人”)。
FCN (全卷积网络):开山之作,将分类网络的全连接层替换为卷积层,首次实现了端到端的像素级预测。
U-Net:设计了一个对称的“编码器-解码器”结构,并通过“跳跃连接”巧妙融合了高层语义和底层细节,在医学影像等小样本场景中表现出色。
DeepLab系列:引入了“空洞卷积”和“ASPP(空洞空间金字塔池化)”模块,能有效扩大感受野、捕捉多尺度信息,分割精度很高。
实例分割 (Instance Segmentation):任务更进一步,不仅要区分像素类别,还要能区分出同一类别的不同个体(如“猫A”和“猫B”)。
Mask R-CNN:堪称标杆,它在著名的目标检测网络Faster R-CNN上增加了一个分支,为每个检测出的物体精准生成一个二值的分割掩码。
全景分割 (Panoptic Segmentation):这是语义分割和实例分割的“合体”。它要求对图中所有像素进行分类,其中“背景”类(如天空)按语义分割处理,而“前景物体”类(如行人)则按实例分割处理,为每个实例分配唯一ID。代表性方法有Panoptic FPN。
基于Transformer的新范式:近年来,源自NLP的Transformer架构开始大放异彩。其核心的“自注意力机制”能天然捕捉全局信息。像Swin Transformer和Mask2Former等模型,在分割精度上又达到了新高度。
下面这张图可以帮你更直观地建立起图像分割方法的体系框架:
总的来说,从直接设定阈值到让网络自主理解图像,图像分割技术正向着更精准、更统一、更高效的方向发展。在实际应用中,选择哪种方法往往需要在精度、速度和计算成本之间做权衡。比如,经典方法依然适用于简单、实时的嵌入式场景;U-Net是医学影像分析的首选;DeepLab系列在追求高精度的任务中表现优异;而Mask R-CNN则是需要区分个体的自动驾驶、遥感图像等领域的核心。
