cover_image

基于facenet模型的图像搜索

王友金 同程旅行技术中心
2017年09月08日 09:41

提到搜索,大家首先就会想到中国的百度、美国的谷歌。目前我们用的比较多是基于文本的搜索引擎。进入21世纪,图片在我们生活中越来越重要,就促进来图片的搜索引擎的发展。目前比较有名的图像搜索引擎厂商有:Tineye、谷歌图片搜索、百度识图搜索。

  • 图像搜索的难点

1.  图片质量

图片在传播的过程中,为了减少图片的大小,选择进行格式转换,使用有损压缩;或者进行图像放大、缩小等操作都会引起图片的质量的下降。

2.  水印

现在是版权时代,所以图片被上传到一些网站,网站为了表示版权,都会在图片上加上自己所属的版权水印,这样也产生了噪点。

3.  速度

作为一款的图片搜索引擎,速度总不能太慢,但随着图片库越来越大,直接导致了搜索的速度下降。如何快速搜索也是目前一大热门。

4.  图片特征提取

图片特征提取是图像搜索最核心却有最困难的点。由于图片各种各样,传统的特征很难有效的表示图片的信息。我们需要一个能够丰富的表达图像信息的特征。

  • facenet模型

facenet是谷歌提出基于深度学习的人脸检测算法,其核心是通过深度学习有效的将图片映射到欧式空间。

1.  facenet模型的结构

图片

模型的前半部分就是一个传统的卷积神经网络(可以根据需求,使用VGG或者ResNet等模型),求L2范数获取到128纬度的特征值。本模型最大的亮度就是Triplet loss的损失函数的提出。

2.  Triplet loss

(1)Triplet loss的公式

x 是输入的图片,f(x)Rd CNN 表示后的特征向量公式为:

图片

(2)Triplet loss思想

一般的损失函数是二元,一个是模型预测值,一个是正确值,通过不断调整模型参数达到预测值和正确值的差距最小。而Triplet loss是三元损失函数,它的目标是让类内的距离小于类间的距离。

假设我们有一个图片样本是Anchor 另二个样本分别是Positive,Negative;其中AnchorPositive是同一个人A的人脸图片,Negative是第二个人B的人脸图片。Triplet loss的目的就是要A的二张图片AnchorPositive 的距离 要小于A人中Anchor图片和B人中Negative图片的距离。

图片

  • 基于facenet的图像搜索

由于近几年数据量成指数的产生和计算能力的大幅提升,带动了deep learning的发展。

卷积神经网络对图片这种多维层次的信息的数据能够更好的去表达。在卷积神经网络中,每一层的中间数据都可以代表图片在某些纬度的信息,相比传统sifthog,表达信息会丰富一些。

Facenet是谷歌用来解决人脸识别的深度卷积网络,由于该框架解决了图片信息到欧式空间的直接映射。所以使用facenet模型来做提特提取。

1.  三元组的选择

训练facenet,就要选择三元组。在人脸识别中,每一个人的照片至少会有2张,可以很方便的组合三元组。而在图片搜索里,每一张图片都是一个独立的个体。因此还需要生成一些图片。

训练过程中,随机选取样本图片A,然后对A图片进行旋转、尺度、噪声等变化,产生一张新的图片BB就是APositive图片,可以理解为图片AB 图片在人脸领域代表同一个人。随机从训练数据库中抽取一张非A的图片为CC就是ANegative图片。这样(AB,C)就是训练过程中三元组。

图片

2.  特征比较和优化

通过训练好的facenet模型,我们就可以得到每张图片的128纬度的特征值。将每一张图片的特征值存入数据库中,得到图片库的特征库。搜索的时候,拿到搜索图片,首先计算搜索图片的128纬度的特征值,使用欧式距离算法,通过同我们事先计算出来的特征库比较,按照距离的大小排序,即可得到最相似的图片。

由于高纬度的特征之间相似度比较的运算量会特别大,比较时间是随着我们的图片库的增大而增大。所以在图片库较大的情况下,直接去做挨个图片做欧式距离的计算是不可取的。

我们可以分层次比较。将每一张图片得到的128纬的特征值,通过设定阈值之后,可以将128纬度的浮点向量变换成01的二值向量。这样每一张图片都可以得到二层的特征值。第一层是128纬度的二值向量,第二层是128纬度的浮点向量。首先获取搜索图片第一层特征值,使用汉明距离算法,计算出同特征库的第一层最相似的若干图片,假设为100张,然后同这100张图片使用欧式距离,计算第二层的特征值距离并排序,即可得到相似图片。


图片

  • 总结

         图像搜索引擎的研究已经持续的很长时间了,由于之前一直没有解决图片表示的难点,一直没有突破。近些年,随着深度学习的快速发展,其有效的解决了图片有效特征提取难的问题,让图像搜索技术在生活中迅速应用起来。但是深度学习存在计算量大,硬件成本高等缺点,也制约着图像搜索引擎的普及。如何快速而有效获得图片的表示现在依然是一大研究热点方向。

继续滑动看下一个
同程旅行技术中心
向上滑动看下一个