2016-09-02 4 views
0

저는 python 2.7, openCV 버전 3에서 sklearn, skimage를 사용하여 HOG 탐지기를 적용하여 객체를 지역화하는 슬라이딩 윈도우를 구현했습니다.Python OpenCV 슬라이딩 윈도우 객체 감지

호그 설정이 정상적으로 작동합니다. 슬라이딩 윈도우를 적용하지 않으면 모든 것이 정상적으로 작동합니다.

문제는 슬라이딩 윈도우의 크기가 128x128이고, 벡터의 길이가 15876임을 나타냅니다. 트레이닝 세트는 800x600 이미지에서 트레이닝되었으므로 579474 크기입니다.

분명히이 문제를 직접 해결하는 질문은 없었지만 정말 당황 스럽습니다. 나는 또한이 문제를 다루는 많은 논문을 보지 못했다.

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

업데이트 혼란 다른 사람을 위해, 다음과 같이 작동 : 같은 길이의 배열을 얻기 위해 제로와 시도 패딩을하지만 내가하면 잘 작동하는 (작업에서 예측을 중지 set fd = hog (image 대신 .. window 대신. 또한 셀당 픽셀 수와 블록 당 셀 수를 변경해보십시오. 예를 들어 * 2. 그러나 너무 많은 값을 풀면 오류가 발생합니다. 윈도우를 미리 변경하고 나중에 변경할 수 없습니다. –

+0

업데이트 : 셀당 픽셀을 변경하려고 시도했지만 작동하지만 문제는 결과 벡터 길이와 일치합니다. wi 당신이 필요로하는 것. 제 경우에는 훈련 된 길이는 574924와 같습니다. 창 크기에 비례하여 셀당 또는 픽셀 당 픽셀을 변경하면 이미지 크기가 자동으로 솔루션을 얻는 것 같지 않습니다. –

답변

1

는 나는이에 대한 답을 가지고 생각합니다. 데이터를 잃어 버리는 것처럼 보일 수도 있지만 큰 이미지를 테스트하십시오. 이 작업을 잘 수행하려면 대상 개체가 창 크기에 맞아야합니다.

그래서 270x200에 대해 교육하고 2.7x2K (동일한 종횡비)라고 말하면서 270x200 창을 스캔합니다.

그것은 :

프레드