私は、sklearn、skimageを使用してpython 2.7、openCV version 3でスライディングウィンドウを実装しています.HOG検出器を適用してオブジェクトをローカライズします。Python OpenCV Sliding Windowオブジェクト検出
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")
私はそれを描く場合はスライディングウィンドウは細かい視覚化する、それだけで、予測関数です:
私のコードはこれです。ウィンドウフィーチャをトレーニングフィーチャと比較する方法
ありがとうございました!
敬具、
フレッド
更新:同じ長さの配列を取得するためにゼロで試してみましたパディングが、それは、私ならば正常に動作され(作業から予測因子を停止set fd = hog(image ..ウィンドウの代わりにimage .. また、1セルあたりのピクセル数や1ブロックあたりのセル数などを変更しようとしました。* 2しかし、アンパックする値が多すぎるというエラーが表示されます。ウィンドウをあらかじめ変更しておくことはできません。後で変更することはできません。 –
更新:セルごとにピクセルを変更しようとしましたが、動作しますが、問題は結果のベクトル長wiあなたが必要とするもの。私の場合、訓練された長さは574924のようなものです。ウィンドウサイズに比例して1つのセルまたはピクセルあたりのピクセル数を変更すると、イメージサイズが自動的に解決されます。 –