来详解一下计算机视觉中的语义分割任务 (2)

1,541 阅读5分钟

这是我参与2022首次更文挑战的第20天,活动详情查看:2022首次更文挑战

这一次分享更多篇幅去说明分类问题中混淆矩阵,以及基于混淆矩阵可以计算得出一些衡量分类问题的指标,例如准确度、错误率、召回率、特异率、精准率和 F1 分值,然后再去谈一谈在语言分割中我们用到那些指标。

有时候我们学习真实比较枯燥的事,所以我们需要在漫长学习之路上时常找一些可以激励自己继续前行的动力,通常我们可以通过描绘努力后美好未来让自己产生兴奋,忘记枯燥继续前行。

聊一聊基于视觉的无人驾驶靠不靠谱

tesla_fsd.jpeg

这部分内容有点跑题,不喜欢可以直接跳过

多聊一句,关于特斯拉采用视觉方法来解决自动驾驶,特斯拉在这个方面有视觉方面有一定积累。还有就是基于摄像头就是成本问题,因为特斯拉需要量产,而且特斯拉有自己芯片,这个芯片唯一客户就是神经网络,还有就是特斯拉具有大量数据。减少数据融合的问题。

  • 人才
  • 算力
  • 成本
  • 数据

tesla_ai_day.jpeg

人才方面特斯拉有 Andrej Karpathy 这位李飞飞的高徒,所以可见特斯拉有一只计算机视觉的人才。

其实对于计算机视觉,首先我们希望高清图像,这个其实在算力上是一个不小的挑战。为此特斯拉先是采用英伟达的芯片,然后引入研发芯片的专业人员来研发一个转为特斯拉神经网络服务的芯片。

tesla_chip.jpeg

还有就是特斯拉车队系统,提出一种有效解决方案,来收集数据。

混淆矩阵

关于混淆矩阵,我们需要这里通过一个简单示例来看一看我们可以利用混淆矩阵拿到那些指标,可以获取如下指标

  • 准确度(Accuracy)
  • 错误率(Misclassification Rate)
  • 召回率(Recall)
  • 特异率(Specificity)
  • 精准率(Precision)
  • F1 分数(F1 Score)

准确率(Accuracy)

然后我们先说准确率,这个指标反应了在总体样本中一共有多少样本是正确分类的,所以公式如下

准确率

Accuracy=TP+TNTP+FN+FP+TNAccuracy = \frac{TP + TN}{ TP + FN + FP + TN}

错误率

MisclassificationRate=FN+TNTP+FN+FP+TNMisclassification Rate = \frac{FN + TN}{TP + FN + FP + TN}

召回率

也就是考察模型对于实际正例样本中预测为正例样本能力,如果对于样本我们都预测为正例样本,那么其召回率就是 100%

Recall=TPTP+FNRecall = \frac{TP}{TP + FN}

召回率也是 sensitivity 也就是模型对于正例样本的敏感程度。对于违规交易检测,我们希望提升召回率,即便在检查结果中存在某些合规交易,然后在可以在检查出结果进行审核,将合规交易从检查结果中筛选出。

特异值

Specificity=TNTN+FPSpecificity = \frac{TN}{TN + FP}

也就是模型对负例检出能力

精准率

那么什么时候我们精准率,例如我们给人推荐电影,我们希望推荐精准,那么也就是要提高精准率。也就是减少 FP 也就是将负例预测为正例的那部分,我们希望减少将负例预测为正例,从而让用户感觉我们推荐的不准,即使漏掉一些正例样本。

Precision=TPTP+FPPrecision = \frac{TP}{TP + FP}

F1 分值

F1 相对于精准度,就是既考虑了精准度有考虑了召回率

F1Score=2×Precision×RecallPrecision+RecallF1\,Score = \frac{2 \times Precision \times Recall}{Precision + Recall}

在分类任务中,混淆矩阵相对于单一的预测准确度

假设一共有 1000 个样本其中正例样本为 850 负例样本 150,如果预测结果为 1000 都是正例样本那么我们首先体表,这里行表示样本实际是正例还是负例,而行表示预测结果是正例还是负例

样本正例负例
正例TPFN
负例FPTN

这里 positive 和 negative 表示预测结果,而 T 和 F 表示预测错误

TP 对于正例样本预测正确也就是 850 TN 表示对于负例样本预测正确错误 0 FN 表示对负例样本预测错误的是 0 FP 表示对正例样本预测错误的是 150

样本正例负例
正例8500
负例1500

填完这张表我们就可以用数据带入公式来计算模型在分类问题上一些指标

Accuracy=TP+TNTP+FN+FP+TNAccuracy = \frac{TP + TN}{ TP + FN + FP + TN}\\
Accuracy=850+01000=85Accuracy = \frac{850 + 0}{1000} = 85%
recall=850850+0=100recall = \frac{850}{850 + 0} = 100%

这些指标没有什么特别

这里 IoU 分值是对每个类别单独计算的,然后对所有类别进行平均,以提供的语义分割预测的总体平均IoU 得分。

但是 IoU 可以作为衡量指标,但是因为对微分并不友好,所以不适合作为损失函数,接下来我们聊一聊 Dice

损失函数

简单地说,Dice 系数是2重叠面积除以两幅图像的总像素数。(见第2节中对联合面积的解释)。

Dice=2×intersectionunion+intersectionDice = \frac{2 \times intersection }{union + intersection}

我们来推导一下,

percision=TPTP+FPpercision = \frac{TP}{TP + FP}
recall=TPTP+FNrecall = \frac{TP}{TP + FN}
Dice=11/precision+1/recallDice = \frac{1}{1/precision + 1/recall}

我们来看一看这里 Dice 实际意义,precision 变大时候,1/precision 变小,也就是 Dice 分母变小,这样 Dice 值就会增大,同时我们也希望 recall 变小,所以这个 Dice 既考虑了 precision 有同时考虑了 recall。

但是我们依旧会在评估时候使用 IoU 来做模型的评估的。