我是机器学习和openCV的新手。我从Cohn-Kanade面部数据库中为每种情绪(中性和快乐)拍摄了一组10张图像。然后我从每个图像中提取了面部特征并将它们放入我的训练数据矩阵中并为相应的情绪分配了标签(例如:0代表中性,1代表快乐)。
我已经使用了伽玛= 0.1和C = 1的RBF内核。一旦经过训练,我就会从智能手机相机传递从实时相机帧中提取的面部特征进行预测。预测总是返回1.
如果我增加中性表达训练样本的数量(例如:15个中性表情图像和10个快乐表达图像),则预测总是返回0,如果训练样本中每个表达的图像数量相等,然后SVM预测总是返回1.
为什么SVM会以这种方式运行?如何检查我是否使用正确的gamma和C值?此外,SVM是否依赖于训练图像和测试图像的分辨率?
答案 0 :(得分:0)
我会要求您上传SVM功能,以便我们了解您的代码。其次,我之前使用过SVM,你需要规范化训练数据和标签。您还应确保使用正确的分类器,因为并非所有分类器都受支持。请点击此链接获取一些教程http://docs.opencv.org/3.0-beta/modules/ml/doc/support_vector_machines.html
为了回答你的其他问题,遗憾的是你必须自己找到伽玛和C的最佳组合,这是SVM的一个缺点。 https://www.quora.com/What-are-C-and-gamma-with-regards-to-a-support-vector-machine
是的,SVM确实取决于分辨率,因为您的要素/特征向量会根据分辨率而改变,因此会改变输入和标签。 附:理想情况下,这应该在评论中,但遗憾的是,我没有足够的分数来做到这一点。