初始图像分割

但行好事,莫问前程,心之所向,无问西东。似乎这时候我以及陷入了精神内耗中,但是这似乎以及无所谓了,尽力去做吧,或许已经迟了,但现在什么不做,那就没有一丝希望了。

一,图像分割概念

图像分割的大概概念似乎不用多说了,其实没有我以前想象的那么复杂,本质上是对图像像素的一个分类。其中有分为语义分割和实例分割,区别在于,同一类别的不同物体是否分在一起,就如下面的车。

简述图像分割

定义的官方一点就是:图像分割的主要目的是将 图像划分为 与其中含有的真实世界的物体或区域有强相关性的组成部分部分。

1,传统图像分割

传统的图像分割方法下面列举了几种。当然,最传统的还是labelme了,但是讽刺的是,最先进的分割技术还总是离不开人工标注。人工智能,有多少人工,就有多少智能。

  1. 阈值 - 将图像分割为前景和背景。指定的阈值将像素分为两个级别之一,以隔离对象。阈值化将灰度图像转换为二值图像或将彩色图像的较亮和较暗像素进行区分。
  2. K-means聚类 - 算法识别数据中的组,变量K表示组的数量。该算法根据特征相似性将每个数据点(或像素)分配到其中一组。聚类不是分析预定义的组,而是迭代地工作,从而有机地形成组。
  3. 基于直方图的图像分割 - 使用直方图根据“灰度”对像素进行分组。简单的图像由一个对象和一个背景组成。背景通常是一个灰度级,是较大的实体。因此,一个较大的峰值代表了直方图中的背景灰度。一个较小的峰值代表这个物体,这是另一个灰色级别。
  4. 边缘检测 - 识别亮度的急剧变化或不连续的地方。边缘检测通常包括将不连续点排列成曲线线段或边缘。例如,一块红色和一块蓝色之间的边界

这些传统的方法,和很多领域的传统方法一样。它的缺陷就在于需要比较严格的人工干预算法和专业知识,同时效率较低。

2,深度学习分割

在深度学习的图形处理中,最常见的算子就算卷积。但是传统的卷积网络中有全连接层的存在,所以不能处理不同大小的输入。因此在图像分割领域中,更多是使用FCN全卷积网络。同时由于去掉了全连接层,模型的参数量也大大减少,运算时间也降低。

同时这样的分割是一种端到端的技术,最后输出的通道数等于需要分割的类别数(大多数时候会包括背景等)。

二,评价指标

1,像素准确率

既然图像分割的本质是对像素块的分类,那么最先想到的评价指标自然是准确率。

\[PA= \frac{TP+TN}{TP+TN+FP+FN}\]

当然,这么简单的指标也会遇到一个很简单的问题,类别不平衡。这个问题在图像分割中更加常见,因为我们总是需要在一幅图中分割很小的一部分。但数据集的大部分为背景时,模型全部预测为0,那么即使准确率很高,那也毫无意义。

2,交并比 IoU

Intersection-Over-Union (IoU),也称为 Jaccard 指数。简单来说,IoU 是预测分割和标签之间的重叠区域除以预测分割和标签之间的联合区域。

\[IoU = \frac{|A\cap{B}|}{|A\cup{B}|}=\frac{TP}{TP+FP+FN}\]

看公式似乎不太直观,可以看下面这个图:

image-20230503155732185

简单来说,就是正确分类的区域占,总区域的比,一般来说大于0.5就是一个不错的分数了。

3,Dice系数

Dice系数,骰子系数,最开始接触就是在RSNA2022的比赛中,比赛中diceloss作为pF1的可微近似。他在这里可以直接和F1分数画上等号。与 IoU 一样,它们的范围都从 0 到 1,其中 1 表示预测和真实之间的最大相似度。Dice系数定义为两倍的交集除以像素和。

\[Dice = \frac{2|A\cap{B}|}{|A|+|B|}=\frac{2 TP}{2 TP+FP+FN}\]

image-20230503160950178

三,训练损失

暂时没有啥太深刻的理解,比较值得注意的是,之前提到的diceloss,是极不稳定的。

[**基础积累 图像分割损失函数最全面、最详细总结,含代码**](https://blog.51cto.com/u_15067234/2904552)

四,Unet

五,Kaggle上的小demo