此处的LDA指Latent Dirichlet Allocation(隐狄利克雷分配),而非Linear Discriminant Analysis(线性判别分析),前者是一种主题生成模型,后者则是一种判别模型,而本实验使用的判别模型亦非后者,而是SVM判别模型,用的是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的LibSVM工具包。
实验流程:
- 首先使用DenseSift算法从图片上选取合适的描述特征,每张图片取适量的patch块,每个块用128维向量表示;
- 建立BOW(词袋)模型:对DenseSift提取的特征向量做k-means聚类,每一类代表一个Word,并进行归一化,从而建立字典;
- 在词典表示图像的基础上建立LDA模型,使用Gibbs Sampling算法得到图像-主题矩阵即主题向量;
- 利用得到的主题向量代替原先的图像词典表示,并与对应的标签一起训练SVM支持向量机;
- 使用训练出的SVM分类器来识别测试集,并使用不同的SVM核函数进行对比实验。
- 使用Spatial Pyramid Matching算法优化后再分类,与BOW模型对比
具体细节详见论文链接:
基于LDA的图像语义分析
参考:
建立图像BOW字典表示以及Spatial Pyramid Matching优化借鉴:
Bag of Words/Bag of Features的Matlab源码发布
一个用BoW|Pyramid BoW+SVM进行图像分类的Matlab Demo
LDA实现借鉴了GibbsLDA++工具包:
GibbsLDA++: A C/C++ Implementation of Latent Dirichlet Allocation