Implementierung HoG Funktionen Erkennung für Sliding Window Classifier - Python, Bildverarbeitung, Mustererkennung, Computer-Vision, Klassifizierung

Ich habe einen Klassifikator geschrieben und möchte mich nun bewerbenes um Bilder zu erkennen. Mein Klassifikator hat bereits Modelle für HoG-Merkmale einiger Objekte, an denen ich interessiert bin. Ich habe die Schiebefenster-Sache, die über das Bild auf verschiedenen Skalen gleitet, und ich kann die HoG-Funktionen für jedes Fenster bekommen. Meine Fragen sind - was ist der nächste Schritt?

Ist es wirklich so einfach, wie die HoG-Merkmale des Modells mit den Features aus dem Fenster zu vergleichen? Ich verstehe, dass es bei integrierten Bildern einen Schwellenwert für jede Klasse gibt (wie z face oder not face) und wenn der berechnete Wert des durch das Fenster erzeugten Bildes nahe genug an den Werten der Klasse ist und keine Schwelle überschreitet, dann sagen wir, dass wir eine Übereinstimmung haben.

Aber wie funktioniert es mit HoG-Funktionen?

Antworten:

3 für die Antwort № 1

Ja, so einfach ist das.Sobald Sie Ihr HOG-Modell und Ihre Fenster haben, müssen Sie nur die Fensterfunktionen auf die Modelle anwenden. Und dann wählen Sie das beste Ergebnis (mit einem Schwellenwert oder nicht, abhängig von Ihrer Anwendung).

Hier Sie haben einen Beispielcode, der dieselben Schritte ausführt. Der Schlüsselteil ist der folgende:

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

Für jedes Fenster extrahiert der Code den HOG-Deskriptor und speichert ihn in featureVector. Dann mit svmclassify Der Code erkennt die Fenster, in denen das Objekt vorhanden ist.


Verwandte Fragen
Speisekarte