我正在使用人脸图像进行年龄(或性别)分类。我决定使用LBP(局部二进制模式)方法进行特征提取和支持向量机(SVM)进行freature分类。整个过程如图1所示。
据我了解,程序如下:
从包含3组的训练集开始:儿童,青年,高级。每组有50张图像(总共150张图像)。使用LBP准备150张图像进行分类。
在带有标签的150张LBP图像上训练SVM:
使用一组新图像测试系统。如果一切按计划进行,系统应根据步骤2中定义的组正确分类图像。
算法:
for i=1 to N //Assume N is number of image
LBP_feature[i]=LBP_extract(image_i)
end
//Training stage
SVM.train(LBP_feature,label);
//Test stage
face=getFromCamera
//Extract LBP from the face
face_LBP=LBP_extract(face)
label=SVM.predict(face_LBP)
if label=0 then Children
if label=1 then Young
if label=2 then Senior
建议的系统对此任务有意义吗?
答案 0 :(得分:1)
如果您想使用支持向量机,并且您还想将图像视为"样本"分区域,然后所谓的"支持配送机器"由Jeff Schneider和Barnabas Poczos开发可能最适合您的问题(在线提供纸张和文档)。他们实际上表明,通过一些调整,支持分发机器胜过某些流行图像分类数据集的所有最先进的方法。他们使用SIFT(sp?)特征,然后每个图像都是来自特征空间的样本(子区域补丁)的集合,然后支持分发机器"是基于内核的SVM,通过使用基于样本的估计器来估计两个分布之间的分歧内核。
如果您想使用支持分发机等SVM,最后一点需要考虑。 SVM是两类分类器。为了扩展到2个以上的类,您可以训练一个SVM,它将一个类与其他类的并集进行分类,对于每个类的选择(如果你有N个类,那么N个SVM),然后运行每个SVM并选择具有最高分类分数的类。然而,另一种方法是为每对类训练一个SVM(因此N类的N(N-1)/ 2个SVM),然后尝试通过获得"共识"来选择最佳类。所有成对比较。您可以在线阅读所有这些内容,并选择您认为最佳的方法,或者选择哪种方法为培训数据提供最佳的一次性交叉验证性能。 (这应该很容易计算,因为你只有150个训练点)
答案 1 :(得分:0)
在纸面上,这种方法很有意义。最重要的一点是LBP是否是此任务的正确功能。您可以首先使用不同的参数(图像大小,如果使用LBP直方图的bin计数等)提取LBP,并使用Weka或R等工具观察数据,以查看不同类别的样本数据是否显示不同的分布。 / p>
您还可以参考一些关于年龄估计的研究论文,看看其他哪些特征是合适的。对于老年人,我已经尝试过Radon变换并取得了一些成功。面部的皱纹在Radon变换中得到很好的体现。