数据集准备:
1.图片库:取线上1000个视频,对每个视频每隔1秒抽一张视频帧图片,作为总图片库。
2.待查询图片:定义7种图片变换方式:旋转、拉伸、调整亮度、裁剪、加字幕、无处理,每种变换生成100个样本。每个样本的生成方式为:从1000个视频里随机选取一个视频,并从所有图片帧里随机取一帧。这样总共得到700个待查询图片。
局部特征提取包含两部分内容:特征点检测和特征点描述。
3.2.1 SIFT特征提取+SIFT描述子
对所有的库存图片以及待查询图片用SIFT提取特征,并利用特征从检索库里检索700个测试样本,计算召回率和准确率如下:
结果显示准确率较低,通过观察错误结果发现,部分图片提取到的特征数目较少,甚至只有个位数,而正常图片能达到几百到上千个特征点,特征点缺失会导致检索时易匹配到错误的样本。通过设置“最低样本数”限制,当样本数大于阈值时,认为其查询结果“可信”。
经测试,将“最低样本数”阈值定为30,并加入“排除率”指标,表示未达到最低样本数,该查询记录不可信。将特征数太少的样本排除后,再次测试结果如下:
结果显示在增加了“最低样本数”和“排除率”指标后,准确率大幅度提升,但仍有20% 左右的排除率,即有五分之一的查询是没有返回可信结果的。
3.2.2 Hessian Affine特征提取+SIFT描述子
为进一步提升准确率,参考[4]工程描述,将SIFT特征点检测换成Hessian-Affine特征检测会有更好的效果,即先用Hessian-Affine检测特征点,后用SIFT描述子描述特征。换用Hessian-Affine后,测试结果如下;
结果显示,召回率和准确率均有所提升,且排除率降至4%。
4. 结论
通过设计实验测试结果发现,基于局部不变特征做相似度计算具有良好的抗干扰能力,准确度优于传统感知哈希算法,对旋转不变性的支持优于卷积神经网络。最终权衡计算复杂度和检索效率,在端上选取Hessian-Affine做特征点检测,SIFT做描述子的方式进行图像相似度计算。
5. 趋势展望
尽管基于局部特征不变性的图像相似度计算在抗干扰能力及计算复杂度上占优,但仅能表达图像浅层特性,而卷积神经网络具有多层次语义表达能力,不同层所提取的图像特征具有不同含义,低层次表达角点特征,中间层聚合角点特征表达物体部件,高层进一步表达整个物体,选择不同卷积层会提取出不同层次的特征。在计算复杂度及检索效率高要求的客户端将局部特征提取与卷积神经网络相结合互相弥补不足,突出优势,可能会带来更好的效果,未来将进一步探索。