我正在使用两个特征描述符,HOG和LBP进行人员检测。到目前为止,我使用简单的连接组合了这两个功能。但它有时会显示由于大矢量引起的问题。这是我的代码。
%extract features from negative and positive images
[HOGpos,HOGneg] = features(pathPos, pathNeg);
% loading and labeling each training example
HOG_featV = HOGfeature(fpos,fneg);
% get label of training data from HOG
HOGlabel = cell2mat(HOG_featV(2,:));
% get the feature vector value from HOG
HOGfeatureVector = HOG_featV(3,:)';
C = cell2mat(HOGfeatureVector); % each row of P correspond to a training example
%extract features from LBP
[LBPpos,LBPneg] = LBPfeatures(pathPos, pathNeg);
% loading and labeling each training example
LBP_featV = loadingV(LBPpos, LBPneg);
% get label of training data from LBP
LBPlabel = cell2mat(LBP_featV(2,:));
% get feature vector value from LBP
LBPfeatureVector = LBP_featV(3,:);
M = cell2mat(LBPtP)'; % each row of P correspond to a training example
%concatenate HOG and LBP feature
featureVector = [C M];
我想知道,是否有任何方法可以将两个特征向量组合起来更可靠,更快速?如果是,请提供一些我可以参考的建议或链接。谢谢。
答案 0 :(得分:5)
我从您那里了解到以下内容: 您正在选择图像中的1845个关键点。对于每个点,您计算长度为383的特征向量(LBP + HOG组合)。表示图像的总矢量长度约为100,000。
如果实际上你只有1845个图像,并且每个图像仅由383个特征表示,那么你注定要失败并且你的SVM将具有非常高的错误率。主要是因为(特征向量太短,训练图像量太小)。所以我认为情况并非如此
您的方法存在一些问题。
实用建议:
您可以继续使用LBP / HOG功能,但首先要确保您拥有大量的非人群'示例(1-10百万)否则您的错误率会很高。尝试获得数千人的图像
训练一个级联探测器。它比SVM更容易理解,更快,更准确。为训练过程提供所有可能的HOG,LBP功能(无直方图)并让它选择好的功能。您可以在openCV中免费实现级联检测器培训。我的个人建议:不要使用SVM进行检测。这是一个错误的工具。一旦您在图像中检测到某个人,您可以使用SVM对其进行分类,无论是成人还是小孩,但不要使用SVM进行检测。