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计算方式来写的。