建议scikit学习用于垃圾邮件检测的算法 - 像图像分类任务

时间:2013-06-16 16:10:00

标签: image classification scikit-learn

我有一组“goob”和“bad”图像,呈现为灰度数组。我想从这些图像中提取“好”和“坏”的特征并填充字典。 这是我的高级算法来完成这项任务:

  1. 加载图像并将其显示为NP矩阵img_mtx [ img_mtx.shape = (10, 255, 255)]
  2. 使用image.PatchExtractor优先于img_mtx获取每张图片的1000个补丁,总计10000 7x7像素patches [patches.shape = (10000, 49)]
  3. 下一步,我假设我的patches矩阵就像一个单词包,我想为每个图像创建一个稀疏的补丁矩阵,并为每个图像设置“好”或“坏”类。 / LI>
  4. 现在我应该有非常经典的分类任务,比如垃圾邮件检测,只需在训练集中添加更多图像,我就应该有一个好的结果。
  5. 但我在这里遇到了一些问题:

    • 如何实施第3步?我见过文本分类的例子,但没有看到图像分类
    • 当我需要对新图像进行分类时,我再次将其拆分为补丁,但现在我需要将这些补丁从新图像映射到我的“补丁字典”中。怎么做最好的方法,记住我可能永远不会收到与字典100%匹配?我看起来需要计算距离字典功能的最近距离,但这听起来很贵。

    ......或者我采取了完全错误的方法来完成这项任务?

1 个答案:

答案 0 :(得分:1)

您应该首先考虑一下您的任务有哪些好的功能。此外,您应该考虑图像是否始终是相同的形状并对齐。 如果您认为描述补丁是个好主意,您可能需要查看标准图像功能,如SIFT或SURF或BRIEF - 可能会查看scikit-image,opencv或mahotas - 尽管只有原始补丁可能是第一步。 如果你想使用补丁描述符并想要抛弃空间排列(这将是单词方法的包),你需要聚集描述符,然后在“单词”上构建直方图。然后,您可以训练直方图并获得整个图像的单一预测。关于此,有大量的文献,不知道什么是一个好的开始点。也许看看Szeliski在Computer Vision上的书。