1. 程式人生 > >HOG+SVM訓練時報錯 OpenCV Error: Assertion failed

HOG+SVM訓練時報錯 OpenCV Error: Assertion failed

在HOG+SVM圖片訓練時,經常會看到一種報錯資訊:

OpenCV Error: Assertion failed (checkDetectorSize()) in cv::HOGDescriptor::setSVMDetector, file C:\builds\master_PackSlave-win64-vc12-shared\opencv\modules\objdetect\src\hog.cpp……

如:

其實這種錯誤是源自目標檢測大小設定的不對,很多同學一開始訓練HOG的時候沒有注意HOG檢測框是有大小設定的,這點和haar特徵值訓練不同。

如果大家去看下HOGDescriptor類在opencv中的原始碼,可以看出它是有預設值的,

預設建構函式的幾個引數:

winSize : 視窗的大小

blockSize :塊的大小

cellSize: 胞元的大小

nbins: 方向bin的個數

如果你訓練時的目標大小是32x32的大小,而檢測時變成了64x64或者乾脆沒有設定用預設的64x128,則會出現上述錯誤。只要在初始化HOGDescriptor的時候設定的沒錯問題就可解決,即將HOGDescriptor myHOG改為HOGDescriptor myHOG(Size(32, 32), Size(16, 16), Size(8, 8), Size(8, 8), 9)

順便對於此處原始碼的解釋貼兩個還不錯的部落格: