[关闭]
@w460461339 2019-03-11T16:51:29.000000Z 字数 862 阅读 1648

SIFT加速/替换

顺丰工作


1、目标

对python下的opencv中的sift操作模块寻找更快的实现。

2、尝试1:silx

参考:
https://github.com/silx-kit/silx

这个应该是尝试最深的一种,但是在运行它给的例子的时候,出现了以下错误:

AttributeError: 'NoneType' object has no attribute 'create_context'

image_1cne12cu81fpta551ic2srn197v9.png-83.4kB

在参考:https://github.com/silx-kit/silx/issues/1279
解决的时候,发现答主说是缺少驱动…然而不知道怎么安装opencl所需要的驱动。

另外,问题提出人也并没有走安装驱动的方式解决问题,他貌似后来是换了个机子……

2、尝试2:PCA/SVD降维

参考:
https://blog.csdn.net/yhyhbo/article/details/54620178

严格来说,这个不是针对SIFT操作的提速,而是SIFT提取特征后,需要用knn进行匹配,而此时若是能够对输入KNN的矩阵做一个降维,速度想必能够提升很多。

原来输入KNNMatcher的特征点矩阵大概是[6350,128],即每个特征点用128维向量表示。

我尝试使用SVD降维至32维后,速度并没有明显提升…算球。

3、尝试3:python调用C++

准确的说还没尝试…感觉是个大坑= -

这个是CUDA实现的sift,维护的很勤快,应该能用:
https://github.com/Celebrandil/CudaSift

python调用c++网上很多方法,可以试试:
https://segmentfault.com/a/1190000012730513

4、尝试4:numpy_sift

https://github.com/ducha-aiki/numpy-sift/blob/master/example.ipynb

这个我试了下…貌似只能用65size的,不知道是我没用对还是怎么着= -

4、已经失败的方法

SURF和ORB,检测到的点都太少,无法满足匹配要求。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注