1. 项目背景

  开源项目HyperLPR,在车牌粗定位(提取)阶段,依赖于训练好的模型文件cascade.xml,而该文件是一个由基于OpenCV的Haar级联分类器训练出来的模型,HyperLPR作者有在他的博客中谈到了该模型文件的训练过程。
  车牌粗定位大致程序流程:
目标检测器训练过程总结(HyperLPR)
  以下内容记录训练cascade.xml模型文件的过程。

2. 环境准备

3. 数据准备

  • 正样片:最好使用项目具体应用,若无,可用开源项目Plate_Recognition-LPRnet下的车牌图像作为正样片,此项目正样片应置于train-detector/china/目录下
  • 负样片:train-detector下的raw-neg已包含

4. prep.py使用说明

4.1. 变量说明

  • 调整国家和车牌长度宽度,将以下代码置于导包语句后
    目标检测器训练过程总结(HyperLPR)
  • 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所在目录下)

  1. & ‘D:\ProgramData\Python27\python.exe’ prep.py neg
  2. & ‘D:\ProgramData\Python27\python.exe’ prep.py pos
  3. & ‘D:\ProgramData\Python27\python.exe’ prep.py train---->生成的语句复制运行
    目标检测器训练过程总结(HyperLPR)

目标检测器训练过程总结(HyperLPR)
训练过程
目标检测器训练过程总结(HyperLPR)
可能出现的问题:<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. 相关知识点

相关文章: