基于内容的图像检索
![]()
电商上的应用:找相似,找同款。
CBIR2个重点
![]()
CNPR,用卷积神经网络学习出来一个分桶的编号。预先把图像做一些分桶或者说把他先丢到空间不同的区域,然后检索时只是找其中某个区域的图片。
图像特征HOG
图像特征SIFT
图像特征GIST
![]()
找同款可以使用这种,不需要使用复杂的神经网络
最近领问题(NN)
K最近领算法(NN=>KNN)
![]()
以未知点为圆心画圆,他所属的类别取决于圆内类别最多的点。你得先计算他们之间的相近度,每个图片抽取出来的feature和其他图片feature的相近度。
距离准则
![]()
假设Alexnet FC的结果是4096*1 double型向量,那么那他去比对 计算量会非常大,所以会将它映射到一个的数例如:128/64bit维的10101数字串。
汉明距离
近似最近领
![]()
海量数据的情况用KNN是不行的。现在项目上一般使用的是一整套的ANN
局部敏感度哈希表
LSH(Lshash库)
![]()
直观的理解就是用超平面对空间做一个划分,画完后落在同一区域的一些点 他们得到的01串应该是一样的,而临近的点他们之间可能有一个维度的值不同。
超平面的优化方式这么木有讲!!超平面的划分不一定合理,所以这个算法是牺牲一部分准确度来提高速度。
怎么样去权衡准确度和速度?增加超平面可以提高准确度,但是会造成在Nbit的范围内落下来的点非常的少。另一种方式是随机的使用另外一组超平面做划分(不同的hash)。
N值是通过经验和上下调整的方式得到的。
![]()
使用3个哈希得到各自相似的结果,将他们组合起来。具体和谁最相似,可以采用其他算法比如:距离算法求得。
聚类的方式分桶很慢!!
其余近似最近领算法
![]()
k-Means Tree:先聚类大范围,在聚类小范围。查找时也是先找落在那个大范围内,再往细的找。
ANN库
![]()
FLANN实际中使用效果会好。
如何让CBIR系统更快?
让神经网络分桶,检索的时候也是让神经网络计算图片会落在那个桶里,然后将该桶里的图片返回回来。
![]()
训练的时候使用的Alexnet 全连接层是4096维