HOG+SVM訓練時報錯 OpenCV Error: Assertion failed
阿新 • • 發佈:2019-02-11
在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)
順便對於此處原始碼的解釋貼兩個還不錯的部落格: