J'implémente une fenêtre glissante dans python 2.7, openCV version 3, en utilisant sklearn, skimage pour appliquer un détecteur HOG pour localiser un objet.Détection d'objet fenêtre coulissante OpenCV Python
La configuration HOG fonctionne correctement. Si je n'applique pas une fenêtre coulissante, tout fonctionne bien. Le problème est que la fenêtre glissante a une taille de 128x128, ce qui donne une longueur de vecteur caractéristique de 15876. Alors que l'ensemble d'apprentissage a une taille de 579474, comme il a été formé sur des images 800x600.
Je n'ai pas vu de question qui aborde directement cette question d'une manière claire, mais il m'a vraiment déconcerté. Je ne vois pas non plus beaucoup d'articles traitant de ce problème.
Mon code est le suivant:
clf = joblib.load(model_path)
# load the image and define the window width and height
image = imread(args["image"], flatten=True)
(winW, winH) = (128, 128)
# loop over the image pyramid
for resized in pyramid(image, scale=1.5):
# loop over the sliding window for each layer of the pyramid
for (x, y, window) in sliding_window(resized, stepSize=32, windowSize=(winW, winH)):
# if the window does not meet our desired window size, ignore it
if window.shape[0] != winH or window.shape[1] != winW:
continue
fd = hog(window, orientations, pixels_per_cell, cells_per_block, visualize, normalize)
pred = clf.predict(fd)
if pred == 1:
print("found, found, found, found, found")
La fenêtre coulissante très bien si je visualise dessine, il est juste la fonction de prédiction. Comment comparer les caractéristiques de la fenêtre aux vecteurs de caractéristiques d'entraînement de plus grandes longueurs?
Merci beaucoup pour votre temps!
Cordialement,
Fred
Mise à jour: padding Essayé avec des zéros pour obtenir le même tableau de longueur, mais qui empêche le prédicteur de travail (qui fonctionne très bien si je set fd = hog (image .. à la place de la fenêtre Vous avez également essayé de changer les pixels par cellule et les cellules par bloc, par exemple * 2. Mais alors vous obtenez une erreur en disant que trop de valeurs doivent être décompressées. fenêtre à l'avance et il ne peut pas être changé plus tard –
Mise à jour: J'ai essayé de changer les pixels par cellule à nouveau et cela fonctionne, mais le problème correspond alors à la longueur du vecteur résultant wi ce dont tu as besoin. Dans mon cas, la longueur de formation est quelque chose comme 574924. Il ne semble pas que la modification des pixels par cellule ou cellules par bloc proportionnellement à la taille de la fenêtre: taille de l'image vous obtient automatiquement la solution non plus. –