2017-09-18 14 views
1

개체 감지 프로젝트를위한 SVM 분류 자와 결합 된 돼지 특징 디스크립터를 사용할 것입니다. scikit-image에서 제공되는 돼지는 분류 단계에서 매우 좋은 결과를 가져옵니다. 그러나 매우 느리게 실행됩니다 (이미지 당 20 초). 반면 OpenCV 버전은 매우 빠릅니다 (이미지 당 0.3 초). 문제는 두 돼지 버전 모두에 대해 동일한 매개 변수를 사용했지만 결과가 서로 다르다는 것입니다.scikit-image 돼지와 OpenCV 돼지를 사용할 때 왜 동일한 기능 설명을 얻지 못합니까?

OpenCV의 버전 :

winSize = (4,4) 
blockSize = (2,2) 
blockStride = (2,2) 
cellSize = (2,2) 
nbins = 5 
hog = cv2.HOGDescriptor(winSize,blockSize,blockStride,cellSize,nbins) 
hist = hog.compute(image) 

scikit 이미지 버전을 다음과 같다 : I는 각 버전에 사용 파라미터는

hist = hog(image, orientations=5, pixels_per_cell=(2,2),cells_per_block=(2, 2), block_norm='L2-Hys') 

OpenCV의 기인 돼지 :

[[ 0.  ] 
[ 0.  ] 
[ 0.99502486] 
    ..., 
[ 0.99502486] 
[ 0.  ] 
[ 0.  ]] 

scikit 이미지로 인한 돼지 :

[[ 0.  ] 
[ 0.  ] 
[ 0.16415654] 
    ..., 
[ 0.14253933] 
[ 0.  ] 
[ 0.  ]] 

그것은 모두 기술자에 의해 생성 된 기능의 수는 동일하다는 것을 주목할 가치가있다.

scikit-image와 동일한 결과를 생성하지 않는 OpenCV 돼지의 문제점은 무엇입니까?

+0

왜 값이 동일해야하며 왜 OpenCV의 문제입니까? – Piglet

+0

답장을 보내 주셔서 감사합니다. 내가 말했듯이, scikit-image 돼지는 바람직한 결과를 가져 오지만, OpenCV는 그렇지 않습니다. 내가 알고 싶은 것은 왜 돼지의 매개 변수와 개념이 같을 때 결과가 동등하지 않은지입니다. – Federico

답변

0

scigit 이미지에서 HOG 용지 구현은 opencv 이미지와 다릅니다. 마지막으로 소스 코드를 살펴 보았을 때 scikit 이미지로 수행되는 정규화가이 논문에서 권장하는 것이 아니라는 것을 알았습니다.

여러 매개 변수를 변경하고 HOG 용지 구현에 훨씬 가깝기 때문에 opencv에서 제공하는 것을 사용하는 것이 좋습니다. 또한, 스스로 알아 낸 것처럼 opencv 구현이 최적화되어 훨씬 빠릅니다.