- 导读
- 1. Pixel-wise损失函数
- 2. Perceptual损失函数
- 3. 内容-风格损失函数—神经网络风格转换
- 5. 纹理损失
- 6. 拓扑感知损失函数
- 7. 对比损失/三元组损失
- 8. GAN损失
以下文章来源于AI公园 ,作者ronghuaiyang
导读
损失函数在模型的性能中起着关键作用。选择正确的损失函数可以帮助你的模型学习如何将注意力集中在数据中的正确特征集合上,从而获得最优和更快的收敛。
计算机视觉是计算机科学的一个领域,主要研究从数字图像中自动提取信息。
在过去的十年中,在深度学习方面的创新,大量数据的方便获取以及GPU的使用已经将计算机视觉领域推到了聚光灯下。它甚至开始在一些任务中实现“超人”的性能,比如人脸识别和手写文本识别。(事实上,如今登机的自动人脸验证已经变得越来越普遍了。)
近年来,我们在网络架构、激活函数、损失函数等计算机视觉领域看到了许多创新。
损失函数在模型的性能中起着关键作用。选择正确的损失函数可以帮助你的模型学习如何将注意力集中在数据中的正确特征集合上,从而获得最优和更快的收敛。
这篇文章的主要目的是总结一些重要的损失函数在计算机视觉中的使用。
你可以在这里:https://github.com/sowmyay/medium/blob/master/CV-LossFunctions.ipynb找到这里讨论的所有损失函数的PyTorch实现。
1. Pixel-wise损失函数
顾名思义,这种损失函数计算预测图像和目标图像的像素间损失。损失函数,如MSE或L2损失、MAE或L1损失、交叉熵损失等,大部分都可以应用于在目标变量的每一对像素之间进行预测。
由于这些损失函数分别对每个像素向量的类预测进行评估,然后对所有像素进行平均,因此它们断言图像中的每个像素都具有相同的学习能力。这在图像的语义分割中特别有用,因为模型需要学习像素级的密集预测。
在U-Net等模型中也使用了这些损失函数的变体,在用于图像分割时采用加权的像素级交叉熵损失来处理类间不平衡问题。
类不平衡是像素级分类任务中常见的问题。当图像数据中的各种类不平衡时,就会出现这种情况。由于像素方面的损失是所有像素损失的平均值,因此训练会被分布最多的类来主导。
2. Perceptual损失函数
Johnson et al (2016),Perceptual损失函数用于比较看起来相似的两个不同的图像,就像相同的照片,但移动了一个像素或相同的图像使用了不同的分辨率。在这种情况下,虽然图像非常相似,pixel-wise损失函数将输出一个大的误差值。而Perceptual损失函数比较图像之间的高级感知和语义差异。
考虑一个图像分类网络如VGG,已经在ImageNet的数以百万计的图像数据集上训练过,第一层的网络往往提取底层的特征(如线,边缘或颜色渐变)而最后的卷积层应对更复杂的概念(如特定的形状和模式)。根据Johnson等人的观点,这些在前几层捕获的低层次特征对于比较非常相似的图像非常有用。
例如,假设你构建了一个网络来从输入图像重构一个超分辨图像。在训练期间,你的目标图像将是输入图像的超分辨率版本。你的目标是比较网络的输出图像和目标图像。为此,我们将这些图像通过一个预先训练好的VGG网络传递,并提取VGG中前几个块的输出值,从而提取图像的底层特征信息。这些低级的特征张量可以通过简单的像素级损失来进行比较。