点击小眼睛开启蜘蛛网特效

直方图损失:Histogram Loss详解

论文名称:Learning Deep Embeddings with Histogram Loss

前言

直方图我们都很常见,直方图可以比较直观明显地显示一个对象的某种分布信息。比如一个灰度图的灰度级数直方图,我们在学习数字图像处理的时候应该都有听说过。

《直方图损失:Histogram Loss详解》

上方的图很熟悉吧,右边显示的是其灰度直方图,横坐标为0-255的像素值,纵坐标为处在该像素值的像素个数,越高说明像素越多,分布密集。将左边的猴子彩色图转化为灰度图后通过直方图将其分布显示出来。显然可以看出,这张照片中猴子略微亮一些,因为灰度值大部分都超过了100。

《直方图损失:Histogram Loss详解》

而这张图则是通过PS观察《梵高的梦境》这幅图中的RGB亮度元素的直方图分布,RGB中的RGB三个变量都携带了代表“图像亮度的”信息,所以我们可以一眼看出这幅图的亮暗程度,显然,通过上图右边的直方图,我们可以看出大部分的像素点集中在值100以内。从0到255很明显地出现了一个较缓的坡度,也就是说,这幅图的对比度尚可,明暗较明显,图像主题偏暗。

正文

在简单介绍完直方图后,这里来说一下直方图损失。

直方图损失,就是针对直方图显示出来信息分布的一种损失计算方法。

我们有很多计算损失的方法,最简单的L2损失也就是欧几里得空间中相应两点距离的平方。在进行图像匹配的时候这种方法简单粗暴,就像下面的一段代码:

import cv2
import numpy as np

image1 = cv2.imread('pig.png')      # 读入一张图
image2 = cv2.imread('apple.png')    # 读入另一张图,与之前那张图形状相同

loss = image2 - image1              # 对应两点之前的距离
loss = loss**2                      # 距离的平方
loss = np.sum(loss)                 # 所有对应两点“累加”起来,就是最后的损失

这种损失比较容易实现,而且效果还不错,在图片匹配的时候,凭借两张图对应点之间的差值来估算两张图“内容”的损失。这里说的“内容”损失是指两张图片的相似程度,越相似,损失越小。

当然我们的损失不是这样直接使用的,在是深度学习的训练中,我们的数据往往都是首先通过足够深度的神经网络,然后将我们的低纬数据上升到高维中。这样,通过低纬上升到高维的数据,这些数据可以称之为图像的特征,我们通过训练神经网络中的权重,使其可以辨别我们数据中的特征,而其中训练就需要一个损失函数来做标准,使神经网络中的权重更好地契合这些特征,从而做出分类。

上面的L2-loss损失是常见的损失函数,而这里说的Histogram-loss,直方图损失,也是一个损失函数,类似于L2-loss,这个损失也是在神经网络训练过程中被利用。

《直方图损失:Histogram Loss详解》

如上图,输入不同图片去训练,这些图片(上面两个图是一个人,有着共同的特征,而下方的图是干扰图,要用Histogram损失去做区分)通过神经网络变成高维特征向量。这些特征向量有些是相似而有些不相似,简单地通过特征与特征之间的某种距离就可以区分出来。

《直方图损失:Histogram Loss详解》

接下来用更直观的方式来说一下,上图中的input batch可以理解为多张图(有特征相似的图,有特征不相似的图)混合起来的像素集,也就是一堆数据集,每一列不同的颜色代表一类数据(拥有相同类似的特征)。通过deep net也就是深层网络进行处理后,得到embedded batch,也就是这堆数据中隐含的特征数据。我们的目的是找到一个损失来通过减小这个损失从而神经网络在训练的时候会根据这个损失函数来使这些特征数据,被权重“过滤”后,尽可能“完美”地分布。这个损失就是我们描述的Histogram Loss。

根据上图右侧,Histogram-loss将相似的特征点对(positive pair)和不相似的特征点(negative pair)对进行排列组成概率分布分布(probability distribution),然后对positive pair的概率分布做累计密度分布,将positive pair的累计密度分布和negative pair的分布进行相乘,然后再进行积分,就得到了我们需要的Histogram-loss:

《直方图损失:Histogram Loss详解》

上式中p-是negative pair的概率分布,而p+是positive pair的概率分布。注意这里损失的实际意义是:通过在正样本中随机取样所得到的相似性比从负样本中随机取样得到的相似性低的可能性。

也就是说,我们可以通过降低这个损失,来使在训练中的神经网络权重使数据高维特征分布更加“规整”。

参考链接

http://sites.skoltech.ru/compvision/projects/learning-deep-embeddings-with-histogram-loss/

  点赞
本篇文章采用 署名-非商业性使用-禁止演绎 4.0 国际 进行许可
转载请务必注明来源: https://oldpan.me/archives/histogram-loss-description

   关注Oldpan博客微信公众号,你最需要的及时推送给你。