参考
- 本文所参考的代码,图片数据库,文档 ImageRetrieval
- 颜色相关直方图: color correlogram
- 混淆矩阵: confusion matrix
- 数据库与其它计算机视觉参考资料:CVPapers
模仿
- 按照参考中的文档,进行特征抽取,建立图片数据库
- 效果:
- 改进: 更改svm,使输入可能同时匹配多个类,或者不匹配任何类;修改L2的bug,当每一类的训练数较小时,而要求返回的图片过多时,可能索引溢出;另外进行评估检验时的testIdx可能不覆盖所有的图片类,因此有一定概率出现这个bug.
matlab 函数
- [idx,name]=grp2idx(s) : 对分类信息(字符组,数组等)建立索引
>> s={'hello','good','hello','good','world'};
>> [a,b]=grp2idx(s)
a =
1
2
1
2
3
b =
'hello'
'good'
'world'
- [train,test]=crossvalind(‘HoldOut’, N,P): 生成交叉验证索引
- bsxfun:批量处理
- svmtrain:SVM训练
- svmclassify:应用SVM进行分类
- mode:得到出现次数最多的数
- confusionmat:生成混淆矩阵
- sortrows:对行进行排序
- arrayfun:对数据进行批量处理
问题
- 彩色图片与灰色图片问题:有些特征为彩色图片特有,因此,当数据库中既有彩色图片,又有灰色图片时,难道只能选择灰色图片支持的特征,色彩信息就无法进行利用?
- 当图片构成一个集合时(同一物体的不同角度的图片集),如何进行匹配检索?
- 本质上,SVM算法只进行二分类,输出为0或1。因此对N分类问题,可以通过训练(N,2)种SVM模型,即每两个类别训练一种模型,如下:
data/model M1-2 M1-3 … M1-N … M(N-1)-N D1 1 3 … 1 … N D2 2 1 … 1 … N-1 D3 2 1 … N … N … 1 3 … 1 … N-1 DK 1 1 … N … N 这样,通过取众数(出现次数最多的数),就可以得到数据Di的分类
同样,也可以对每一类与剩余类进行训练,这样可以得到N种SVM模型,如下:
data/model M1 M2 … MN D1 1 0 … 0 D2 0 1 … 1 D3 0 0 … 0 … 1 1 … 1 DK 0 0 … 1 这时,如果数据像D1或DK一样,只有一个分类器值为1,则可正确得到分类。反之,有可能多个分类器的值为1或者没有分类器的值为1. 即一个未知数据Di可以同时属于多个分类,或者不属于已知的任务分类。
提高
- 2015 [Locality-sensitive hashing for region-based large-scale image indexing]