级联分类器训练全过程记录

摘要:本实验记录主要介绍如何训练分类器,这其中包括准备训练数据和运行训练程序。


注意事项:
  OpenCV里面有两个现成的程序可以用来训练级联分类器,分别是opencv_haartraining和opencv_traincascade。opencv_traincascade是一个新程序,根据OpenCV2.x API用C++编写。
  这二者主要的区别是opencv_traincascade支持Haar和 LBP两种特征,并易于增加其他的特征。与Haar特征相比,LBP特征是整数特征,因此训练和检测过程都会比Haar特征快几倍。LBP和Haar特征用于检测的准确率,是依赖训练过程中的训练数据的质量和训练参数。训练一个与基于Haar特征同样准确度的LBP的分类器是可能的。
  opencv_traincascade和opencv_haartraining所输出的分类器文件格式并不相同。注意,新的级联检测接口(参考objdetect 模块中的 CascadeClassifier 类)支持这两种格式。opencv_traincascade可以用旧格式导出训练好的级联分类器。但是在训练过程被中断后再重启训练过程,opencv_traincascade和opencv_haartraining不能装载与中断前不同的文件格式。
opencv_traincascade 程序使用TBB来处理多线程。
  如果希望使用多核并行运算加速,请使用TBB来编译OpenCV。

辅助程序:
  opencv_createsamples用来准备训练用的正样本数据和测试数据。opencv_createsamples 能够生成能被opencv_haartraining和opencv_traincascade程序支持的正样本数据。它的输出为以 *.vec为扩展名的文件,该文件以二进制方式存储图像。

  opencv_performance可以用来评估分类器的质量,但只能评估opencv_haartraining输出的分类器。它读入一组标注好的图像,运行分类器并报告性能,如检测到物体的数目,漏检的数目,误检的数目,以及其他信息。由于opencv_haartraining是一个将被弃用的程序,下面将不再介绍,主要介绍opencv_traincascade。opencv_createsamples 程序用来为opencv_traincascade 准备训练样本,因此也会介绍它。

级联分类器训练全过程记录_第1张图片

级联分类器训练全过程记录_第2张图片

你可能感兴趣的:(级联分类器训练全过程记录)