我在python 2.7,openCV版本3中实现滑动窗口,使用sklearn,skimage应用HOG检测器来本地化对象。
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")
如果我绘制它,滑动窗口可视化很好,它只是预测功能。如何将窗口特征与较大长度的训练特征向量进行比较?
非常感谢你的时间!
亲切的问候,
佛瑞德
答案 0 :(得分:1)
我想我有答案:
只需训练与窗口大小相同尺寸的图像。可能看起来你正在丢失数据,但随后在更大的图像上进行测试。为了使其正常工作,所述目标对象应该适合窗口大小。
所以我正在训练270x200,然后扫描一个270x200的窗口,比如一个2.7K X 2K(相同的宽高比)。
对于其他困惑的人来说,它的工作原理如下:)
佛瑞德