0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机视觉的损失函数是什么?

汽车玩家 来源: AI公园 作者:Sowmya Yellapragad 2020-03-13 16:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

导读

损失函数在模型的性能中起着关键作用。选择正确的损失函数可以帮助你的模型学习如何将注意力集中在数据中的正确特征集合上,从而获得最优和更快的收敛。

计算机视觉的损失函数是什么?

计算机视觉是计算机科学的一个领域,主要研究从数字图像中自动提取信息。

在过去的十年中,在深度学习方面的创新,大量数据的方便获取以及GPU的使用已经将计算机视觉领域推到了聚光灯下。它甚至开始在一些任务中实现“超人”的性能,比如人脸识别和手写文本识别。(事实上,如今登机的自动人脸验证已经变得越来越普遍了。)

近年来,我们在网络架构、激活函数、损失函数等计算机视觉领域看到了许多创新。

损失函数在模型的性能中起着关键作用。选择正确的损失函数可以帮助你的模型学习如何将注意力集中在数据中的正确特征集合上,从而获得最优和更快的收敛。

这篇文章的主要目的是总结一些重要的损失函数在计算机视觉中的使用。

你可以在这里:https://github.com/sowmyay/medium/blob/master/CV-LossFunctions.ipynb找到这里讨论的所有损失函数的PyTorch实现。

Pixel-wise损失函数

顾名思义,这种损失函数计算预测图像和目标图像的像素间损失。损失函数,如MSE或L2损失、MAE或L1损失、交叉熵损失等,大部分都可以应用于在目标变量的每一对像素之间进行预测。

由于这些损失函数分别对每个像素向量的类预测进行评估,然后对所有像素进行平均,因此它们断言图像中的每个像素都具有相同的学习能力。这在图像的语义分割中特别有用,因为模型需要学习像素级的密集预测。

在U-Net等模型中也使用了这些损失函数的变体,在用于图像分割时采用加权的像素级交叉熵损失来处理类间不平衡问题。

类不平衡是像素级分类任务中常见的问题。当图像数据中的各种类不平衡时,就会出现这种情况。由于像素方面的损失是所有像素损失的平均值,因此训练会被分布最多的类来主导。

Perceptual损失函数

Johnson et al (2016),Perceptual损失函数用于比较看起来相似的两个不同的图像,就像相同的照片,但移动了一个像素或相同的图像使用了不同的分辨率。在这种情况下,虽然图像非常相似,pixel-wise损失函数将输出一个大的误差值。而Perceptual损失函数比较图像之间的高级感知和语义差异。

考虑一个图像分类网络如VGG,已经在ImageNet的数以百万计的图像数据集上训练过,第一层的网络往往提取底层的特征(如线,边缘或颜色渐变)而最后的卷积层应对更复杂的概念(如特定的形状和模式)。根据Johnson等人的观点,这些在前几层捕获的低层次特征对于比较非常相似的图像非常有用。

例如,假设你构建了一个网络来从输入图像重构一个超分辨图像。在训练期间,你的目标图像将是输入图像的超分辨率版本。你的目标是比较网络的输出图像和目标图像。为此,我们将这些图像通过一个预先训练好的VGG网络传递,并提取VGG中前几个块的输出值,从而提取图像的底层特征信息。这些低级的特征张量可以通过简单的像素级损失来进行比较。

计算机视觉的损失函数是什么?

用于图像分类的预训练的损失网络

Perceptual损失的数学表示

计算机视觉的损失函数是什么?

其中,V_j(Y)表示VGG网络第j层在处理图像Y时的激活情况,其形状为(C_j, H_j, W_j)。我们使用L2损失的平方,根据图像的形状归一化,比较了ground truth图像Y和预测图像Y^的激活情况。

如果你想使用VGG网络的多个特征映射作为你的损失计算的一部分,只需为多个j添加L_j值。

内容-风格损失函数—神经网络风格转换

风格转换是将图像的语义内容转换成不同风格的过程。风格转换模型的目标是,给定一个内容图像(C)和一个风格图像(S),生成包含C的内容和S的风格的输出图像。

在这里,我们将讨论content-style损失函数的最简单实现之一,该函数用于训练这种风格的转换模型。后来的研究中使用了许多内容-风格损失函数的变体。下一节将讨论一个这样的损失函数,称为“纹理损失”。

内容/风格损失的数学表示

已经发现,CNNs在较高的层次上捕获内容的信息,而较低的层次更关注单个像素值。

因此,我们使用一个或多个CNN顶层,计算原始内容图像(C)和预测输出(P) 的激活图。

计算机视觉的损失函数是什么?

同样,通过计算预测图像(P)和风格图像(S)的下一级特征图的L2距离,可以计算出风格损失,得到的损失函数定义为:

计算机视觉的损失函数是什么?

alpha和beta是超参数。

注意:只有减少样式和内容损失的优化会导致高像素化和噪声输出。为了解决这个问题,我们引入了total variation loss来保证生成的图像的空间连续性和平滑性。

纹理损失

Gatys et al (2016)首次引入的用于图像风格转换的风格损失组件。纹理损失是一种引入的损失函数,是对感知损失的改进,特别适用于捕获图像的风格。Gatys et al发现,我们可以通过查看激活或特征图(来自VGG网络)内的值的空间相关性来提取图像的风格表示。这是通过计算Gram矩阵来实现的:

计算机视觉的损失函数是什么?

Gram矩阵(对于VGG网络的l层)是向量化特征映射F_i和F_j(在l层)的内积,它捕捉了特征在图像不同部分同时出现的趋势。

纹理损失的数学表示

计算机视觉的损失函数是什么?

这里,G^l^和A^l^分别是模型输出的l层和目标图像的l层的风格样式表示。N~l~是层l中不同特征映射的数量,M~l~是层l(i)中特征映射的容量(也就是通道的宽和高)。最后,E~l~是图层l的纹理损失。

网络的纹理损失是所有纹理损失的加权和,表示为:

计算机视觉的损失函数是什么?

这里a是原始图像,x是预测图像。

注意:虽然这里的数学看起来有点复杂,但请理解纹理损失只是应用在特征图的gram矩阵上的感知损失。

拓扑感知损失函数

Mosinska等人(2017)介绍了最近文献中另一个有趣的损失函数,即拓扑感知损耗函数。这可以被认为是感知损失的延伸,应用于分割mask预测。

Mosinska等人认为,在图像分割问题中使用的像素级损失,如交叉熵损失,只依赖于局部测度,而不考虑拓扑结构的特征,如连接组件或孔的数量。因此,传统的分割模型如U-Net往往会对薄的结构进行错误的分类。这是因为对薄层像素的错误分类在像素损失方面的代价很低。作为对像素损失的改进,他们建议引入一个惩罚项,该惩罚项基于VGG-19网络生成的特征图(类似于感知损失),以考虑拓扑信息。

(c)使用像素级丢失检测神经元膜后获得的分割,(d)利用拓扑损耗检测细胞膜后得到的分割

这种方法在从卫星图像中进行道路分割时也特别有用,例如,树木的遮挡。

拓扑感知损失的数学表示

计算机视觉的损失函数是什么?

这里,在RHS上,l(m,n)表示VGG19网络第n层的第m个feature map。Mu是衡量像素损失和拓扑损失相对重要性的标量。

对比损失/三元组损失

计算机视觉的损失函数是什么?

Triplet loss是由Florian Schroff等人在FaceNet(2015)中提出的,其目的是在有限的小数据集(如办公室中的人脸识别系统)上构建一个人脸识别系统。传统的CNN人脸识别架构在这种情况下总是失败。

Florian Schroff et al关注的事实是,在人脸识别的小样本空间中,我们不仅要正确识别匹配的人脸,还要准确区分两个不同的人脸。为了解决这个问题,FaceNet的论文引入了一个名为“Siamese网络”的概念。

在Siamese网络中,我们通过网络传递一个图像A,并将其转换成一个更小的表示,称为嵌入。现在,在不更新网络的任何权值或偏差的情况下,我们对不同的图像B重复这个过程并提取其嵌入。如果图像B与图像A中的人是同一个人,那么它们相应的嵌入必须非常相似。如果它们属于不同的人,那么它们相应的嵌入一定是非常不同的。

重申一下,Siamese网络的目标是确保一个特定的人的图像(锚点)与同一个人的所有其他图像(positive)的距离要比与任何其他人的图像(negative)的距离更近。

为了训练这样一个网络,他们引入了三元组损失函数。考虑一个三元组:[anchor, positive, negative] 。

三元组损失定义为:
1. 定义距离度量d=L2范数
2. 计算anchor图像与positive图像的嵌入距离=d(a, p)
3. 计算anchor图像嵌入到negative图像的距离=d(a, n)
4. 三元组损失= d(a, p) - d(a, n) + offset

三元组的数学表示

计算机视觉的损失函数是什么?

这里, x^a^ -> anchor, x^p^ -> positive,x^n^ -> negative

注:为了快速收敛,必须选取正确的三元组进行损失计算。FaceNet的论文讨论了实现这一目标的两种方法——离线三元组生成和在线三元组生成。关于这个话题的详细讨论我们将留到以后讨论。

GAN损失

由Ian Goodfellow等人(https://arxiv.org/abs/1406.2661)(2014)首先提出的生成式对抗网络是目前最流行的图像生成任务解决方案。GANs的灵感来自博弈论,并使用一个对抗的方案,使它可以用无监督的方式训练。

GANs可以被看作是一个两个人的游戏,我们让生成器(比如产生一个超分辨率的图像)与另一个网络 —— 判别器进行较量。判别器的任务是评估一个图像是来自原始数据集(真实图像)还是来自另一个网络(假图像)。判别器模型像任何其他深度学习神经网络一样k可以被更新,生成器使用判别器作为损失函数,这意味着生成器的损失函数是隐式的,是在训练过程中学习的。对于典型的机器学习模型,收敛可以看作是在训练数据集上让所选损失函数最小化。在GAN中,收敛标志着双人博弈的结束,是寻求生成器和判别器损失之间的平衡。

对于GAN来说,生成器和判别器是两个参与者,它们轮流更新各自的模型权值。在这里,我们将总结一些用于GAN网络的损失函数

1. Min-Max损失函数

计算机视觉的损失函数是什么?

然而,在实践中发现,这种生成器的损失函数会饱和。也就是说,如果它不能像判别器学习得那么快,判别器赢了,游戏就结束了,模型就不能得到有效的训练。

2. 不饱和的GAN损失

不饱和GAN损失是一种改进的生成器损失,以克服饱和的问题,使用了一个微妙的变化。该生成器不是最小化所生成图像的负判别器概率的对数,而是最大化所生成图像的判别器概率的对数。

计算机视觉的损失函数是什么?

3. 最小均方GAN损失

由Xudong Mao, et al (2016)提出,当生成的图像与真实图像非常不同时,这种损失函数特别有用,因为此时会导致梯度非常小或梯度消失,进而导致模型很少或没有更新。

计算机视觉的损失函数是什么?

4. Wasserstein GAN损失

Martin Arjovsky等人(2017)。他们观察到,传统GAN的目的是最小化真实图像和生成图像的实际概率分布和预测概率分布之间的距离,即所谓的Kullback-Leibler (KL)散度。相反,他们建议在Earth-Mover’s distance上对问题进行建模,该模型根据将一个分布转换成另一个分布的成本来计算两个概率分布之间的距离。

使用Wasserstein损失的GAN涉及到将判别器的概念改变为一个更改评估器,比生成器模型更新得更频繁(例如,更新频率是生成器模型的五倍)。评估器用实际的数字而不是预测概率来给图像打分。它还要求模型的权重保持较小。该得分的计算使得真假图像的得分之间的距离最大程度地分离。Wasserstein的损失的好处是,它提供了一个有用几乎无处不在的梯度,允许模型的继续训练。

计算机视觉的损失函数是什么?

5. 循环一致性损失

图像到图像的转换是一个图像合成的任务,需要对给定的图像进行有控制的修改,生成一个新的图像。例如,把马转换成斑马(或反过来),把绘画转换成照片(或反过来),等等。

juno - yan Zhu et al (2018)介绍。训练用于图像到图像转换的模型通常需要大量成对的样本数据集,这些样本很难找到。CycleGAN是一种不需要配对实例的自动训练技术。这些模型以一种无监督的方式进行训练,使用来自源和目标域的图像集合,这些图像不需要以任何方式关联。

CycleGAN是GAN体系结构的扩展,它同时训练两个生成器模型和两个判别器模型。一个生成器从第一个域获取图像作为第二个域的输入和输出图像,另一个生成器从第二个域获取图像作为输入并生成第一个域的图像。然后使用判别器模型来确定生成的图像是否可信,并相应地更新生成器模型。

循环一致性是指第一个生成器输出的图像可以用作第二个生成器的输入,而第二个生成器的输出应该与原始图像匹配。反之亦然。

CycleGAN通过增加额外的损失来测量第二个生成器生成的输出与原始图像之间的差异,从而趋向于循环一致性。该损失作为正则化项用于生成模型,指导新领域的图像生成过程向图像转换方向发展。

计算机视觉的损失函数是什么?

计算机视觉的损失函数是什么?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • gpu
    gpu
    +关注

    关注

    28

    文章

    5099

    浏览量

    134461
  • 计算机视觉
    +关注

    关注

    9

    文章

    1714

    浏览量

    47454
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用代理式AI激活传统计算机视觉系统的三种方法

    当前的计算机视觉系统擅长于识别物理空间与流程中的事件,却难以诠释场景细节及其意义,也无法推理后续可能发生的情况。
    的头像 发表于 12-01 09:44 327次阅读

    STM32计算机视觉开发套件:B-CAMS-IMX摄像头模块技术解析

    STMicroelectronics用于 STM32开发板的B-CAMS-IMX摄像头模块提供强大的硬件集,可处理多种计算机视觉场景和用例。该模块具有高分辨率500万像素IMX335LQN
    的头像 发表于 10-20 09:46 713次阅读
    STM32<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>开发套件:B-CAMS-IMX摄像头模块技术解析

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    易控智驾荣获计算机视觉顶会CVPR 2025认可

    近日,2025年国际计算机视觉与模式识别顶级会议(IEEE/CVF Conference on Computer Vision and Pattern Recognition,CVPR 2025)在美国田纳西州纳什维尔召开。
    的头像 发表于 07-29 16:54 981次阅读

    工业计算机的重要性

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 398次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 420次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 531次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 517次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    利用边缘计算和工业计算机实现智能视频分析

    IVA的好处、实际部署应用程序以及工业计算机如何实现这些解决方案。一、什么是智能视频分析(IVA)?智能视频分析(IVA)集成了复杂的计算机视觉,通常与卷积神经网
    的头像 发表于 05-16 14:37 632次阅读
    利用边缘<b class='flag-5'>计算</b>和工业<b class='flag-5'>计算机</b>实现智能视频分析

    一文带你了解工业计算机尺寸

    工业计算机是现代自动化、人工智能(AI)和边缘计算的支柱。这些坚固耐用的系统旨在承受恶劣的环境,同时为关键应用提供可靠的性能。然而,由于有这么多可用的外形尺寸,为您的工业计算机选择合适的尺寸可能是
    的头像 发表于 04-24 13:35 790次阅读
    一文带你了解工业<b class='flag-5'>计算机</b>尺寸

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    的头像 发表于 04-22 14:29 1860次阅读
    <b class='flag-5'>计算机</b>网络入门指南

    Arm KleidiCV与OpenCV集成助力移动端计算机视觉性能优化

    生成式及多模态人工智能 (AI) 工作负载的广泛增长,推动了对计算机视觉 (CV) 技术日益高涨的需求。此类技术能够解释并分析源自现实世界的视觉信息,并可应用于人脸识别、照片分类、滤镜处理及增强现实
    的头像 发表于 02-24 10:15 877次阅读

    AR和VR中的计算机视觉

    ):计算机视觉引领混合现实体验增强现实(AR)和虚拟现实(VR)正在彻底改变我们与外部世界的互动方式。即便是在引人入胜的沉浸式
    的头像 发表于 02-08 14:29 2128次阅读
    AR和VR中的<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 948次阅读