如何在 scikit-learn(用于计算机视觉)中使用我自己的数据集?
Posted
技术标签:
【中文标题】如何在 scikit-learn(用于计算机视觉)中使用我自己的数据集?【英文标题】:How can I work with my own dataset in scikit-learn (for computer vision)? 【发布时间】:2012-11-17 16:43:45 【问题描述】:如何在 scikit-learn 中使用我自己的数据集? Scikit Tutorial总是以加载他的数据集(数字数据集,花卉数据集......)为例。
http://scikit-learn.org/stable/datasets/index.html 即:从 sklearn.datasets 导入 load_iris
我有我的图像,但我不知道如何创建新图像。
特别是,对于开始,我使用我找到的这个例子(我使用库 opencv):
img =cv2.imread('telamone.jpg')
# Convert them to grayscale
imgg =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
# SURF extraction
surf = cv2.SURF()
kp, descritors = surf.detect(imgg,None,useProvidedKeypoints = False)
# Setting up samples and responses for kNN
samples = np.array(descritors)
responses = np.arange(len(kp),dtype = np.float32)
我想提取一组图像的特征,以一种对实现机器学习算法有用的方式!
【问题讨论】:
【参考方案1】:您首先需要明确定义您要实现的目标:“将特征提取到一组图像中,以对实现机器学习算法有用的方式!”太模糊了,无法给你任何指导。
你想做什么:
图片整体的图像分类(例如室内场景 vs 室外场景)?
在一组图片的子部分内进行对象识别(例如识别不同图片中同一对象的多个实例),可能使用具有各种大小窗口的扫描程序?
对象检测和基于类别的分类(例如,查找图片中所有出现的汽车或行人,以及每个出现这些类别的实例周围的边界框)?
全图语义解析,也就是像素分割+每个段(建筑、道路、人、树)的类分类...
这些任务中的每一个都需要不同的管道(特征提取 + 机器学习模型组合)。
您可能应该从阅读有关该主题的书开始,例如:http://szeliski.org/Book/
另外作为旁注,*** 可能不是提出此类开放式问题的最佳场所。
【讨论】:
可能是图像分类比较和物体检测?我有考古标志,每个考古标志的图像。我需要为每张图像提取特征(如冲浪,或使用精明算法的轮廓),我看到 scikit 使用“数据集”加载他的默认图像,如虹膜或数字。我想比较这个特征并计算它的相似度。 对于整个图像分类(假设图像居中并在标志上放大),scikit-learn 期望输入数据的形状为(n_images, n_features)
的 numpy 数组和形状为 @987654324 的 numpy 数组@ 为目标预测每个不同符号的不同整数。提取特征的方法。也许您可以尝试 scikit-image 中提供固定大小数组的 HoG 功能,而不是像 SURF 或 SIFT 这样具有动态结构的基于关键点的功能(关键点的数量因图像而异)。
如果您真的想使用 SURF 特征,您可能需要使用聚类算法在从语料库中提取的所有 SURF 特征向量上构建 1000 个(或更多)视觉词的词汇表。然后对于每个图像,将提取的 SURF 特征向量分配给它们最近的质心(量化),以将每张图片编码为(视觉)词袋(BoW)。但是,如果您是 numpy / scikit-learn 和一般计算机视觉的新手,这将变得更加复杂。
非常感谢!我读到 HoG 功能是用于人类识别,我想我需要一个识别符号边缘的算法,类似于识别文本的 OCR 软件,或者不?还是 HoG 也适合我的目的?
我在这里找到了我的问题的部分答案(创建数据集):不幸的是不在 scikit 中:coccidia.icb.usp.br/coccimorph/tutorials/…以上是关于如何在 scikit-learn(用于计算机视觉)中使用我自己的数据集?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 scikit-learn 计算用于情感分析的分类报告