विंडो वर्गीकरण स्लाइडिंग के लिए होग सुविधाओं का कार्यान्वयन - पायथन, छवि प्रसंस्करण, पैटर्न मिलान, कंप्यूटर दृष्टि, वर्गीकरण

मैंने एक वर्गीकृत लिखा है और अब आवेदन करना चाहते हैंयह छवियों का पता लगाने के लिए। मेरे क्लासिफायरफायर को पहले से ही कुछ ऑब्जेक्ट्स की होग सुविधाओं के लिए मॉडल मिल गए हैं, जिनमें मुझे रूचि है। मुझे स्लाइडिंग विंडो चीज चल रही है, जो विभिन्न तराजू पर छवि भर में स्लाइड करेगा, और मैं प्रत्येक विंडो के लिए होग फीचर्स प्राप्त कर सकता हूं। मेरे प्रश्न हैं - अगला कदम क्या है?

क्या यह वास्तव में खिड़की से सुविधाओं के खिलाफ मॉडल की होग सुविधाओं के मिलान के रूप में सरल है? मैं समझता हूं कि अभिन्न छवियों के साथ, प्रत्येक वर्ग के लिए एक थ्रेसहोल्ड मान है (जैसे कि face या not face) और यदि खिड़की से उत्पन्न छवि का गणना मूल्य कक्षा के मानों के लिए पर्याप्त है और थ्रेसहोल्ड पार नहीं करता है, तो हम कहते हैं कि हमें एक मैच मिला है।

लेकिन यह होग सुविधाओं के साथ कैसे काम करता है?

उत्तर:

जवाब के लिए 3 № 1

हां, यह उतना आसान है जितना।एक बार आपके पास अपना HOG मॉडल और आपकी विंडो हो जाने के बाद, आपको केवल मॉडल में विंडो सुविधाओं को लागू करने की आवश्यकता होती है। और उसके बाद सबसे अच्छा परिणाम चुनें (थ्रेसहोल्ड का उपयोग करके या नहीं, आपके आवेदन के आधार पर)।

यहाँ आपके पास एक नमूना कोड है जो एक ही कदम करता है। मुख्य भाग निम्नलिखित है:

function detect(im,model,wSize)
%{
this function will take three parameters
1.  im      --> Test Image
2.  model   --> trained model
3.  wStize  --> Size of the window, i.e. [24,32]
and draw rectangle on best estimated window
%}

topLeftRow = 1;
topLeftCol = 1;
[bottomRightCol bottomRightRow d] = size(im);

fcount = 1;

% this for loop scan the entire image and extract features for each sliding window
for y = topLeftCol:bottomRightCol-wSize(2)
for x = topLeftRow:bottomRightRow-wSize(1)
p1 = [x,y];
p2 = [x+(wSize(1)-1), y+(wSize(2)-1)];
po = [p1; p2];
img = imcut(po,im);
featureVector{fcount} = HOG(double(img));
boxPoint{fcount} = [x,y];
fcount = fcount+1;
x = x+1;
end
end

lebel = ones(length(featureVector),1);
P = cell2mat(featureVector);
% each row of P" correspond to a window
[~, predictions] = svmclassify(P",lebel,model); % classifying each window

[a, indx]= max(predictions);
bBox = cell2mat(boxPoint(indx));
rectangle("Position",[bBox(1),bBox(2),24,32],"LineWidth",1, "EdgeColor","r");
end

प्रत्येक विंडो के लिए, कोड HOG डिस्क्रिप्टर निकालता है और उन्हें स्टोर करता है featureVector। फिर उपयोग करें svmclassify कोड उन विंडो का पता लगाता है जहां ऑब्जेक्ट मौजूद है।


संबंधित सवाल
सबसे लोकप्रिय