【问题标题】:Image classification using SVM - Python使用 SVM 进行图像分类 - Python
【发布时间】:2016-05-15 03:01:22
【问题描述】:

我有一组图像,分为优质图像和劣质图像。我必须训练一个分类模型,以便任何新图像都可以分类为好/坏。 SVM 似乎是最好的方法。我在 MATLAB 中完成了图像处理,但在 python 中没有。

谁能建议如何在 python 中做到这一点?图书馆有哪些? SVM scikit 有,图像的特征提取和 PCA 呢?

【问题讨论】:

  • 小心你要处理的问题不是分类是质量评估。我不是 Python 专家,但从图像处理的角度来看,这是两个不同的问题。
  • @BH85 我同意。但问题是评估质量并在此基础上对其进行分类是好是坏。什么是正确的做法?

标签: python image-processing


【解决方案1】:

看看dlibopencv。两者都是用 C++ 实现的成熟的计算机视觉框架,带有 python 绑定。这很重要,因为这意味着它依赖于引擎盖下的编译代码,因此它比在直接 python 中完成要快得多。我相信在 dlib 中实现 SVM 是基于目前更多的研究,因此您可能需要考虑这一点,因为使用它可能会获得更好的结果。

【讨论】:

    【解决方案2】:

    我会开始阅读this 简单教程,然后进入OpenCV Python 教程。另外,如果您熟悉sklearn 接口,则有Scikit-Image

    【讨论】:

      【解决方案3】:

      我正在使用 opencv 2.4、python 2.7 和 pycharm

      SVM是一种用于数据分类的机器学习模型。Opencv2.7有pca和svm。使用svm构建图像分类器的步骤是

      1. 调整每张图片的大小
      2. 转换为灰度
      3. 找到主成分分析
      4. 扁平化并将其附加到训练列表中
      5. 将标签附加到训练标签

      示例代码是

      for file in listing1:
       img = cv2.imread(path1 + file)
       res=cv2.resize(img,(250,250))
       gray_image = cv2.cvtColor(res, cv2.COLOR_BGR2GRAY)
       xarr=np.squeeze(np.array(gray_image).astype(np.float32))
       m,v=cv2.PCACompute(xarr)
       arr= np.array(v)
       flat_arr= arr.ravel()
       training_set.append(flat_arr)
       training_labels.append(1)
      

      现在培训

      trainData=np.float32(training_set)
      responses=np.float32(training_labels)
      svm = cv2.SVM()
      svm.train(trainData,responses, params=svm_params)
      svm.save('svm_data.dat')
      

      我想这会给你一些想法。

      【讨论】:

      • 谢谢,但看在上帝的份上,请写一个大大的注释(对于我们这些不是 python 大师的人)“这个代码实际上不起作用,”所以我们这些人,不是python fluent 并没有浪费很多时间试图弄清楚为什么我们会遇到大量错误......谢谢!
      猜你喜欢
      • 2016-08-09
      • 2016-09-13
      • 2014-05-12
      • 1970-01-01
      • 2016-01-21
      • 2012-04-19
      • 2018-06-29
      • 2012-06-05
      • 2016-12-01
      相关资源
      最近更新 更多