Ind*_*ach 1 matlab image-processing video-processing feature-extraction
我正在使用两个特征描述符,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];
Run Code Online (Sandbox Code Playgroud)
我想知道,有没有什么方法可以将两个特征向量组合起来更可靠,更快?如果是,请提供一些我可以参考的建议或链接.谢谢.
我从你的意见中评论如下: 你在图像中选择了1845个关键点.对于每个点,您计算长度为383的特征向量(LBP + HOG组合).表示图像的总矢量长度约为100,000.
实际上,如果您只有1845个图像,并且每个图像仅由383个特征表示,那么您注定要失败,并且您的SVM将具有非常高的错误率.主要是因为(特征向量太短,训练图像量太小).所以我认为情况并非如此
你的方法有一些问题.
实用建议:
您可以继续使用LBP/HOG功能,但首先要确保您有大量的"非人"示例(1-10百万)否则您的错误率会很高.尝试获得数千人的图像
训练一个级联探测器.它比SVM更容易理解,更快,更准确.为训练过程提供所有可能的HOG,LBP功能(无直方图)并让它选择好的功能.您可以在openCV中免费实现级联检测器培训.我的个人建议:不要使用SVM进行检测.这是一个错误的工具.一旦您在图像中检测到某个人,您就可以使用SVM对其进行分类,无论是成人还是小孩,但不使用SVM进行检测.