视觉特征抽取算法——SURF

目前公司PF系统(违禁图片机器审核)运营尚存在一些问题,主要包括:

1.C++&opencv,第三方依赖较重,缺乏相应的C++工程师,维护成本较大
2.图片识别引擎与对比算分机制接近黑盒,内部机制不易理解,例如像提高某张高危图片的激励(权重)因子等等
3.针对公司特定业务的修改较为困难,例如增加对三维仿射的稳定性、增加图像签名缓存、特征匹配可视化等等

在隐网项目的过程中,积累了关于相关算法的经验;项目结束后,打算花业余时间实现JAVA版本的图片识别引擎,目前有一些进展,分享给各位。

违禁图片审核与我之前分享的《基于图像签名和局部敏感哈希的相似图片检索》有所不同,主要是业务上的区别:

1.图片审核讲究是召回率(查全率),因为违禁是不惜一切代价必须去除的,由于必须经过人工审核的复查,因此对准确率的要求则不是十分严格;而图片搜索讲究的是准确率,由于互联网海量图片的存在,对召回率则没有过多的要求。
2.图片审核的图库数量级一般在10000 – 100000;而图片检索的量级至少在百万以上。前者可以使用视觉分词(bag of words)与配合级联聚类(Kmeans Hierarchy Cluster)提升效果,后者使用mpeg-7边缘直方图签名以提高检索效率。

整个过程类似于搜索引擎的步骤,包括feature extraction、build、query、TF-IDF以及PageRanking,可参考下面系列图:

视觉特征抽取算法——SURF_第1张图片


视觉特征抽取算法——SURF_第2张图片


视觉特征抽取算法——SURF_第3张图片


视觉特征抽取算法——SURF_第4张图片


这次分享主要集中在图像特征抽取上,之后的分享会逐步进入到索引构建、查询以及评分规则上。基于SURF的特征抽取主要包括以下几个步骤:
1. 积分图像计算
2. 快速海森矩阵检测
1) 海森矩阵计算
2) 尺度空间构建
3) 兴趣点检测及精确定位
3. 兴趣点描述
1) 方向分配
2) 64位描述符生成

具体流程图如下:

视觉特征抽取算法——SURF_第5张图片


论文中匹配的效果:

视觉特征抽取算法——SURF_第6张图片


视觉特征抽取算法——SURF_第7张图片


使用测试图库,在自己机器上使用JAVA实现的效果:


视觉特征抽取算法——SURF_第8张图片


视觉特征抽取算法——SURF_第9张图片






你可能感兴趣的:(C++,c,算法,互联网,搜索引擎)