我正在做一个计算机视觉项目,我需要一些帮助。我的项目的目标是提取任何对象的属性——例如,如果我有一只耐克跑鞋,我应该能够首先判断它是一只鞋,然后再判断它是一只耐克鞋而不是阿迪达斯鞋(可能是因为耐克勾号),然后弄清楚它是跑鞋而不是足球鞋钉。
我首先将其视为图像分类问题,我正在使用以下步骤:
- 我已经采集了鞋子、高跟鞋、手表的训练样本(每个大约 60 个),并使用 Dense SIFT 提取了它们的特征。
- 使用 k-means 聚类创建词汇表(任意选择词汇表大小为 600)。
- 为图像创建词袋表示。
- 训练一个 SVM 分类器以获得每个类别(鞋、鞋跟、手表)的词袋(特征向量)。
- 为了测试,我提取了测试图像的特征向量,并从已经创建的词汇表中找到了它的词袋表示。
- 我将测试图像的词袋与每个类的词袋进行比较,并返回最匹配的类。
我想知道我应该如何从这里开始?使用 D-SIFT 进行特征提取是否会帮助我识别属性,因为它仅代表某些点周围的梯度?
有时,我的分类会出错,例如,如果我用左鞋和手表的图像训练分类器,右鞋被分类为手表。我知道我必须在我的训练集中包含正确的鞋子来解决这个问题,但是我应该遵循其他方法吗?
还有什么方法可以理解形状吗?例如,如果我训练了手表分类器,并且训练集中有圆形和矩形表盘的手表,我可以识别任何新测试图像的形状吗?还是我只是为圆形和矩形表盘的手表单独训练?谢谢