How can I work with my own dataset in scikit-learn (for computer vision)?
如何在SciKit学习中使用自己的数据集?SciKit教程始终以加载他的数据集为例(数字数据集、花数据集…)
http://scikit-learn.org/stable/datasets/index.htmlie:从sklearn.datasets导入加载
我有我的图像,我不知道如何创建新的。
特别是,首先,我使用我发现的这个示例(我使用library opencv):
1 2 3 4 5 6 7 8 9 10 11 12
| 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) |
我想提取一组图像的特征,以一种有用的方式实现机器学习算法!
您首先需要清楚地定义您要实现的目标:"以一种有用的方式将特性提取到一组图像中,以实现机器学习算法!"太模糊了,不能给你任何指导。
你想这样做吗?
图片整体的图像分类(例如室内场景与室外场景)?
对象识别(例如识别不同图片中同一对象的几个实例)在一组图片的子部分中,是否可以使用具有不同大小窗口的扫描程序?
对象检测和基于类的分类(例如,在图片中查找所有出现的汽车或行人,并在这些类的每个出现的实例周围找到一个边界框)?
全图语义分析A.K.A.像素分割+每个分段(建筑、道路、人、树)的类别分类…
每个任务都需要不同的管道(特征提取+机器学习模型组合)。
你应该从阅读一本关于这个主题的书开始,例如:http://szeliski.org/book/
另一方面,stackoverflow可能不是提出此类开放式问题的最佳场所。
- 它可以是图像分类比较和目标检测?我有考古标志,每一个考古标志的形象。我需要为每个图像提取特征(比如冲浪,或者用canny算法提取轮廓),我看到SciKit使用"数据集"来加载他的默认图像,比如虹膜或数字。我想比较这个特性并计算它的相似性。
- 对于整个图像分类(假设图像居中并缩放到符号上),SciKit Learn希望输入数据使用形状为(n_images, n_features)的numpy数组,目标使用形状为(n_images,)的numpy数组预测每个不同符号的不同整数。提取功能的方法。也许你可以尝试使用SciKit图像中的Hog功能,它提供固定大小的数组,而不是基于关键点的功能,比如具有动态结构的Surf或Sift(关键点的数量因图像而异)。
- 如果您真的想使用surf特性,您可能需要使用一个集群算法在从语料库中提取的所有surf特性向量上构建1000个可视化单词(或更多)的词汇表。然后,对于每个图像,将提取的表面特征向量分配给其最近的质心(量化),使每个图像编码为一袋(可视)字(bow)。但是,如果你是一个新手,对麻木/坐骨神经痛的学习和一般的计算机视觉来说,这就要复杂得多。
- 非常感谢!我读到的hog特征是用于人类识别的,我想我需要一个识别符号边缘的算法,类似于一个识别文本的OCR软件,或者不?还是猪也适合我?
- 试试看。这可能取决于你的数据。
- 好的,猪的特征适用于图像。下一步是什么?这里(scikit image.org/docs/dev/auto-examples/…)谈到:"最后一步是从覆盖检测窗口的密集重叠网格块的所有块中收集HOG描述符,并将其组合为特征向量,用于窗口分类器。"我是否实现了窗口分类器?还是SVM?我该如何处理numpy数组(n_图像,n_功能)?我真的很困惑!
- StackOverflow并不是回答这些开放式问题的最佳场所,这些问题的答案涉及各种工具和数学概念的复杂管道:对象分类仍然是一个活跃的研究领域。请询问一些具体的、自持的编程问题,或者注册计算机视觉和机器学习研究生课程(或阅读书籍)。
- 这本书:szeliski.org/book,它只是理论上的(数学方程式…)或者还有代码和所有不同的管道,就像你说的,来实现我的目标?
- 我在这里找到了部分问题的答案(创建数据集):不幸的是,Scikit中没有:coccidia.icb.usp.br/coccimorph/tutorials/…
- @我觉得你什么都不回答。问题很清楚:如何用自己的图像来准备像irises这样的数据集。但你说的是复杂性、调查、不同的方法等等,而不是问题的关键。
- @Roman Scikit Learn将任何numpy数组作为输入:在Iris中,它不是基于图像的,因此很容易:您可以加载csv文件的数值。虹膜数据集是通过人工测量花瓣和萼片长度而创建的。所以这不是计算机视觉问题。另一方面,计算机视觉问题要复杂得多。对于cv,您需要使用诸如opencv之类的工具提取特定于任务的特性。Scikit Learn不是它自己的简历库。
- 没有简单的答案:您需要提取的功能类型取决于您的目标。是否要进行对象识别、图像分类、图像分割?还有别的吗?如果你想知道怎么做的话,就读一本关于opencv的书。它不适合stackoverflow答案。
- @食人魔非常感谢!现在你的答案对我更有用。你能稍微更新一下你的答案吗?我会重新投票的。