Я реализую скользящее окно в python 2.7, openCV версии 3, используя sklearn, skimage, чтобы применить детектор HOG для локализации объекта.Python OpenCV Скользящее окно Обнаружение объекта
Установка HOG работает нормально. Если я не применяю скользящее окно, все будет хорошо.
Проблема заключается в том, что раздвижное окно имеет размер 128x128, что дает длину вектора функциональности 15876. Если учебный набор имеет размер 579474, так как он был обучен изображениями 800x600.
Я не видел вопросов, которые прямо касаются этого в ясной форме, но на самом деле это меня озадачило. Я также не вижу многих статей, посвященных этому вопросу.
Мой код заключается в следующем:
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")
Скользящее окно визуализирует хорошо, если я рисую его, это просто функция предсказания. Как сравнить особенности окна с возможностями векторов обучения большей длины?
Большое спасибо за ваше время!
С наилучшими пожеланиями,
Фред
Update: Пробовал заполняется нулями, чтобы получить тот же массив длины, но что останавливает предсказатель от работы (который работает отлично, если я set fd = hog (image .. вместо окна. Также попытался изменить пиксели на ячейку и ячейки на блок, например * 2. Но тогда вы получите сообщение об ошибке слишком много значений для распаковки. Поэтому подумайте, что они взяты из и не может быть изменено позже. –
Обновление: Пробовал менять пиксели на ячейку снова, и это действительно работает, но проблема заключается в том, чтобы сопоставить полученную длину вектора wi что вам нужно. В моем случае обученная длина - это что-то вроде 574924. Кажется, что изменение пикселей на ячейку или ячейки на блок пропорционально размеру окна: размер изображения автоматически также дает вам решение. –