ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

归因分析笔记3:视觉词袋-特征提取

2022-02-20 14:03:36  阅读:279  来源: 互联网

标签:特征 词袋 分类器 visual 归因 图像 特征提取 视觉


Bag of Visual Words

目录

Matlab文档

使用视觉词袋进行图像分类

第1步:设置图像类别集

第2步:创建特征袋

第3步:用视觉词袋训练图像分类器

第4步:对图像或图像集分类


联系因果正则化论文作者

目前的问题是, 这篇论文里所有特征都是01, 他都处理了.

模型输入的特征不知道实际意义, 但是他最后还是能还原到图片上.

作者回信:

这篇文章当时是采用了Bag of Visual Words的特征提取方式,每张图片被抽象成了M维的词袋向量,每一维特征代表一个特定的visual word,可以被映射回原先的图像当中,一些示例可参考 (https://ww2.mathworks.cn/help/vision/ug/image-classification-with-bag-of-visual-words.html?s_tid=srchtitle_Bag%20of%20word_2)

根据matlab文档, 直方图为图像的特征向量。

而直方图长度对应于视觉单词visual word的数量(视觉单词的数量由bagOfFeatures对象构建)。

而每个visual word对应图中的多个grid(就像NLP的单词在中一篇文章出现过几次)

理论上来说, 确实可以做映射.

那么降维是否可以逆变换呢? PCA是可以的.

Bag of visual word类似于BoW模型,基本思想概括如下:

       1)提取特征(Extract Features)

       根据具体应用考虑,综合考虑特征的独特性、提取复杂性、效果好坏,处理是否方便等选择特征。

       2)学习视觉词袋(Learn Visual Vocabulary)

       统计图像数据库中出现的所有特征,去除冗余组成词袋。如果提取的图像特征过多,一般需要利用聚类算法先把相近的单词归为一类(类似于文档检索里的找词根),利用这些聚类结果来组成词袋。

       3)利用视觉词袋量化图像特征(Quantize features using visual vocabulary)

       4)利用词频表示图像(Represent images by frequencies of visual words)

参考文献:

[1] Csurka, G., C. R. Dance, L. Fan, J. Willamowski, and C. Bray. Visual Categorization with Bags of Keypoints. Workshop on Statistical Learning in Computer Vision. ECCV 1 (1–22), 1–2.

Matlab文档

https://ww2.mathworks.cn/help/vision/ug/image-classification-with-bag-of-visual-words.html?s_tid=srchtitle_Bag%20of%20word_2

使用视觉词袋进行图像分类

通过创建一个视觉词袋,使用CV的工具包用于图像类别分类。该过程生成代表图像的视觉词出现的直方图。这些直方图用于训练图像类别分类器。以下步骤介绍了如何设置图像,创建视觉词袋,然后训练并应用图像类别分类器。

第1步:设置图像类别集

组织图像, 并划分为训练集测试集。为了训练图像分类器, 使用imageageataStore函数存储图像。将图像组织成类别, 从而更容易处理大量图像。可以使用SpliteachLabel函数将图像拆分为训练和测试数据。

读取类别图像并创建图像集:

setDir  = fullfile(toolboxdir('vision'),'visiondata','imageSets');

imds = imageDatastore(setDir,'IncludeSubfolders',true,'LabelSource',...

    'foldernames');

将集合分成训练和测试图像子集。在此示例中,划分30%的图像用于训练, 剩余的则测试

[trainingSet,testSet] = splitEachLabel(imds,0.3,'randomize');

第2步:创建特征袋

创建视觉词汇表(visual vocabulary)或特征袋(bag of features), 通过从每个类别的代表性图像中提取特征描述符(feature descriptors)。

bagOfFeatores对象定义特征或视觉单词: 在(训练集提取的)特征描述符上使用K-means聚类(统计信息和机器学习工具箱)算法。

该算法迭代地将描述符分为K个互斥簇。产生的簇是紧凑的(compact),通过类似的特性(similar characteristics)分离。每个簇中心代表一个特征或视觉字。

可以基于特征检测器(feature detector)提取特征,或者定义网格(grid)以提取特征描述符。网格方法可能会失去细粒度的(fine-grained scale)尺度信息。因此,对于不包含不同特征(distinct features)的图像使用网格,例如包含景象的图像,如海滩。使用加速鲁棒特征(或SURF)检测器提供更大的范围的不变性(invariance)。默认情况下,该算法运行“网格”方法。

该算法的工作流将图像作为整体(entirety)分析。图像必须有合适label, 描述它们所代表的类别。例如,一组汽车图像的label为cars。工作流程不依赖于空间(spatial)信息,也不依赖于对图像中的特定对象标记。bag-of-visual-words技术依赖于无定位(localization)的检测.

第3步:用视觉词袋训练图像分类器

TrainimageCategoryClassifier函数返回图像分类器。

该函数训练一个多分类器, 通过纠错输出码(ECOC)+SVM二分类器. TrainimageCategoryClassfier函数使用(从bagOfFeatures对象得到的)视觉词袋,对图像编码得到视觉单词的直方图(histogram of visual words.)。然后使用视觉词的直方图作为正负样本, 来训练分类器。

1.使用bagOfFeatures编码方法从训练集中编码每个图像。

该函数对图像检测和提取特征,

然后使用近似最近邻算法来构建每个图像的特征直方图。

然后,该函数基于特定簇中心的描述符接近度递增直方图(increments histogram bins)。

直方图长度对应于视觉单词的数量(视觉单词的数量由bagOfFeatures对象构建)。

直方图为图像的特征向量。

 

2.对训练集中的每个图像重复步骤1以创建训练数据。

 

3. 评估分类器的效果。

使用imageCategoryClassifier的评估方法, 在图像验证集测试分类器。输出混淆矩阵表示对预测的分析。分类结果全对则得到对角线上的归一化矩阵。不正确则分类结果得到分数值。

 

第4步:对图像或图像集分类

在新图像上使用ImageCategoryClassifier预测方法来确定其类别。

标签:特征,词袋,分类器,visual,归因,图像,特征提取,视觉
来源: https://blog.csdn.net/lagoon_lala/article/details/123030157

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有