CNN for image retrieval

CNN for Image Retrieval

博文:Image retrieval using MatconvNet and pre-trained imageNet,对应web演示主页picSearch。

编译matconvnet:

先装vs,再装matlab(若顺序装反,则会报错,matlab找不到vs的路径,如果你能把路径设置好,也可以随意顺序安装),我的vs版本是vs2012。把matlab的目录设定在X:\matconvnet-1.0-beta10下,然后在matlab命令窗口中输入:addpath matlab,回车,在输入:vl_compilenn,回车进行CPU版的编译(GPU稍微麻烦,可在网上查阅具体编译方法),编译成功后会在matlab文件夹下生成一个mex文件夹,有4个mexw64文件和一个build文件夹,这样就把matconvnet配置好了。

在执行extractCNN.m 的时候,可能会报错,这时候,需要把 weights 改为 filters,因为vggnet 的模型里面用的是filters,而不是weights,其实意思是一样的。。。

注意:鉴于MatConvNet只能在Matlab 2014及其以上以及系统必须是64位,所以在使用此工具箱之前得满足这两个条件。如果是Pythoner,推荐使用flask-keras-cnn-image-retrieval,纯Python,非常易于写成在线图像搜索应用。

示例:Caltech-256图像数据库

Caltech-256图像数据库上搜索结果

运行步骤

1). 如果不需要计算mAP的话,那就直接把你的图像库文件夹名字命名为database,并将图片全部放在放在database文件夹下即可。如果你要在后面计算MAP(平均检索精度)的话,要确保图像数据库做成文件夹databaseClassified中的形式,然后执行下面命令:

python movefiles.py

2). 接着便可以抽取特征。运行extractCNN.m,要用parfor并行的话,直接修改注释部分即可。

3). 检索可视化。这一步运行queryInDatabaseDemo.m即可。

4). 计算mAP。不需要计算MAP的这步略过。运行compute_MAP.m,关于mAP的计算,请参阅我画的mAP计算过程示意图:信息检索评价指标,这个计算mAP的脚本是按照那个流程中定义的mAP计算方式来写的。


你可能感兴趣的:(图像处理)