halcon 相似度_怎样用深度学习判断两张图片的相似度?

最直接的,训练数据以“图片对”(image pair)为单位,标签是相似度,把这样的数据输入神经网络,最终网络模型能够回归出输入图片对的相似度;

于是第二个步骤来了,怎么样给训练数据打上相似度?手工标注。有没有更准确的、更快的呢?有,用深度学习模型来标注两张图像的相似度,怎么做的?看问题描述加上步骤1就行。流程递归,卡死了,无解。

既然步骤1里面“最直接的”不可以,那就间接来解决。转入步骤4

间接来说,我们既然不知道如何准确标注具体的、取值区间在0~1的连续的相似度,那么粗糙一些,标注离散的相似度:0表示不像,1表示很像。比如把英短猫和美短猫组成的图片对标注成1,英短猫和哈士奇组成的图片对标注成0,损失函数使用逻辑回归这种soft的概率回归形式,就可以了。只要图片对的标注足够充分,效果就会很好。前面有答主回答的Siamese Network就是这样的。这样子做,我们有了一个基于二分类的网络、输出相似度的模型。

但是问题又来了,如果构造一个充分的训练集,要给一千种、每种有好多张图片的数据两两之间标注0和1,这是一件很可怕的事情:如果你每种图有100张,总共有10万张图片,那么可以构成

这么多的图片对,显然这根本很难训练完成,更何况10万的数据集已经是一个很小的数据集了。

那么再间接一些,不用0和1表示像与不像了,用0, 1, 2, 3, 4...999,表示一千种不同的类,把只有两种分类的逻辑回归损失函数,换成有n种分类的softmax损失函数。这样子,理论上softmax给每个类一个“中心”,每个中心都是一个高维向量,每个类的中心都和其他的类中心尽量的“不像”,用数学来说就是余弦越小。然后呢,我们让同一类的图像,尽量往自己的中心上去靠,靠的越近、越紧,就越好。这样子,美短猫都紧密团结在美短猫的中心上去了,哈士奇都紧密团结再哈士奇的中心上去了。训练结束,“最美短猫”的美短猫离自己的中心靠的最近,“不那么美短猫”的美短猫距离美短猫中心靠的比较远,而哈士奇离美短猫中心靠的就很远很远了,离自己的中心比较近。这样的就比较好能解决我们的问题了。输入了图像,我们能得到图像的一个特征向量,输入另一个图像得到另一个特征向量,用余弦函数比比他们的距离,相似度就有了。前面有答主说的用imagenet上pretrain模型,使用两张图的最后隐层的向量输出,求余弦做相似度就是这个道理。

然后就得到了用深度学习判断两张图片相似度的方法。更高级的知识,请深入学习metric learning和深度学习结合的相关知识。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值