基于训练集的OpenCV(Python)图像分类
这更像是“我在哪里可以找到做某事的好资源”的问题.我试图使用
Python(OpenCV或其他)基于训练集对图像进行分类.
我的训练集:这是由许多产品缺陷图像组成的.每张图像可以在产品上的3个位置中的1个位置拍摄,每个图像将包含5种类型的产品缺陷中的1种.这些缺陷已经由人工分类和验证. 要分类的图像:这些图像由相似的图像组成,在相同的3个位置拍摄,但缺陷的类型未被分类(虽然缺陷区域是由工具识别的图片识别,但只是工具没有正确地对它们进行分类我无法改变工具). 我按照“使用Python编程计算机视觉:用于分析图像的工具和算法”一书中的建议尝试进行此分类.在这种情况下,我使用存储在mySQL数据库(训练数据)中的SIFT描述符进行Bag of Words方法.到目前为止,我没有太多的运气(我继续排除故障),并认为我会向那里的任何OpenCV专家寻求建议. 任何参考或建议将不胜感激. 所以,回到这个问题,我认为值得分享我所学到的东西.我不知道这是“答案”,但这是我最终的结果.正在进行的工作,你总能变得更好. 我现在的解决方案是结合3种不同的方法.所有这些都可以在互联网上搜索到,所以我不会详细介绍如何. 首先,我使用SIFT方法,使用对VLFeat的命令行调用生成SIFT直方图.这可能是Python中其他地方的一个选项,它就是我使用的.我使用k-means聚类来做词汇词汇的视觉包,并建立了一个数据库,将质心与训练图像相关的单词直方图联系起来.我通过添加Root SIFT步骤改进了一些结果.然后我使用Dense SIFT创建了一个单独的数据库(但没有Root SIFT调整).最后,我根据训练图像的RGB分量创建了一个颜色直方图数据库.我没有使用所有256个RGB区域,而是将8个区间内的R,G和B值相加,然后将这些值展平为24 bin直方图. 对未知图像进行相同的处理,然后使用欧几里德距离比较直方图矢量.我也尝试了Chi Squared比较,但在我看来,Euclidean提供了更好的结果.我从每个过程中获得前3个结果,图像分类基于9投票中的5个.如果未达到多数,则分析是不确定的. 对于我封闭的图像群体,我的误分类率为3.1%,不确定率为3.1%. 解决方法
我使用Bag of features(BoF)和SVM研究了图像分类问题.我是用C和OpenCV做的,但我确信你也可以得到类似python的方法.
概念: 创建BoF词典: >从训练样本中拍摄一张图像. 训练: >加载您的BoF字典 测试: >加载SVM分类器 你可以参考这个article (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |