1. 項目背景
開源項目HyperLPR,在車牌粗定位(提取)階段,依賴於訓練好的模型文件cascade.xml,而該文件是一個由基於OpenCV的Haar級聯分類器訓練出來的模型,HyperLPR作者有在他的博客中談到了該模型文件的訓練過程。
車牌粗定位大致程序流程:
以下內容記錄訓練cascade.xml模型文件的過程。
2. 環境準備
- Python2.7.14
- OpenCV3.0
- 其他依賴(image, opencv-python):
- 開源項目:OpenCV Cascade車牌檢測器訓練代碼
- Tip:記住安裝或下載解壓的目錄
3. 數據準備
- 正樣片:最好使用項目具體應用,若無,可用開源項目Plate_Recognition-LPRnet下的車牌圖像作爲正樣片,此項目正樣片應置於
train-detector/china/
目錄下 - 負樣片:train-detector下的raw-neg已包含
4. prep.py使用說明
4.1. 變量說明
- 調整國家和車牌長度寬度,將以下代碼置於導包語句後
- OPENCV_DIR:opencv安裝目錄
OPENCV_DIR= 'D:\\ProgramData\\OpenCV3.0.0\\opencv\\build\\x64\\vc11\\bin'
- BASE_DIR:指定prep所在的目錄
BASE_DIR = 'G:\\PycharmProjects\\train-detector\\'
- OUTPUT_DIR:訓練模型輸出目錄
- INPUT_NEGATIVE_DIR:負樣本放置目錄
INPUT_NEGATIVE_DIR = BASE_DIR + 'raw-neg\\'
- INPUT_POSITIVE_DIR:正樣本輸出目錄
INPUT_POSITIVE_DIR = BASE_DIR + COUNTRY + '\\'
4.2. 訓練過程(cmd切換到prep所在目錄下)
- & ‘D:\ProgramData\Python27\python.exe’ prep.py neg
- & ‘D:\ProgramData\Python27\python.exe’ prep.py pos
- & ‘D:\ProgramData\Python27\python.exe’ prep.py train---->生成的語句複製運行
訓練過程
可能出現的問題:<BEGIN OpenCV Error: Bad argument (Can not get new positive sample. The most possible reason is insufficient count of samples in given vec-file. ) in CvCascadeImageReader::PosReader::get, file C:\buildslave64\win64_amdocl\master_PackSlave-win64-vc11-shared\opencv\apps\traincascade\imagestorage.cpp, line 157
解決方法:參數numPos調低,如此處正樣片有752,可設置numPos爲652,原因參見
4.3. 訓練結果
train-detector/out/cascade.xml
5. 相關知識點
- 基於OpenCV的Haar級聯分類器
- OpenALPR的Train-Detector