2011-09-07 2 views
4

OpenCV2.3을 사용하여 SVM 및 HOG를 기반으로하는 사람 감지 시스템을 구현하려고합니다. 하지만 나는 갇혔다.OpenCV + HOG + SVM : SVM 단일 기능 벡터에 도움이 필요합니다.

여기까지왔다 : 이미지 데이터베이스에서 HOG 값을 계산 한 다음 LIBSVM을 사용하여 SVM 벡터를 계산할 수 있습니다. 각각 3780 개의 값을 갖는 1419 개의 SVM 벡터.

OpenCV는 hog.setSVMDetector() 메소드에서 하나의 기능 벡터를 원합니다. 따라서 LIBSVM이 계산 한 1419 개의 SVM 벡터 중 하나의 특징 벡터를 계산해야합니다.

는 I 하나 힌트 발견이 하나의 특징 벡터를 계산하는 방법 : 성분의 link

"검출 된 특징 벡터를 전 (전 범위 예 0-3779 인 경우)의 합에서 내장 i * 지원 벡터의 알파 값에서 벡터를 지원합니다. j가 지원 벡터의 수 det[i] = sum_j (sv_j[i] * alpha[j]), i 은 지원 벡터의 구성 요소의 수 "

이에 따라, 내 일상적인 작품이 방법 :. 는 내가 처음의 첫 번째 요소를 가지고 SVM 벡터, ... 알파 값을 곱하면 알파 값을 곱한 두 번째 SVM 벡터의 첫 번째 요소로 추가

하지만 상당히 높은 값을 얻을 모든 1419 요소를 합산 한 후 :

16.0657, -0.351117, 2.73681, 17.5677, -8.10134, 
11.0206, -13.4837, -2.84614, 16.796, 15.0564, 
8.19778, -0.7101, 5.25691, -9.53694, 23.9357, 

당신은

0.05359386f, -0.14721455f, -0.05532170f, 0.05077307f, 
0.11547081f, -0.04268804f, 0.04635834f, -0.05468199f, 0.08232084f, 
0.10424068f, -0.02294518f, 0.01108519f, 0.01378693f, 0.11193510f, 
0.01268418f, 0.08528346f, -0.06309239f, 0.13054633f, 0.08100729f, 
-0.05209739f, -0.04315529f, 0.09341384f, 0.11035026f, -0.07596218f, 
-0.05517511f, -0.04465296f, 0.02947334f, 0.04555536f, 

는 기본 벡터 값이에 있는지, (참조 OpenCV의 소스와 hog.cpp)를 OpenCV의 샘플에서 기본 벡터에, peopledetect.cpp 그들을 비교하는 경우 -1과 +1 사이의 경계선이지만 내 값이 훨씬 큽니다.

내 단일 기능 벡터 루틴은 약간의 조정과 아이디어가 필요하다고 생각하십니까?

감사합니다,

크리스토프

답변

0

집계 된 벡터의 값이 높은 보여요.
나는 나는 그것이 라인의 일부를 잃고 잘못된 결과를 얻는 원인이 있기 때문에 코드에서 svinstr.sync();을 제거했다 http://lnx.mangaitalia.net/trainer/main.cpp
에있는 loadSVMfromModelFile()을 사용했다.
파일의 나머지 부분에 대해서는 잘 모릅니다.이 함수 만 사용했습니다.