正式使用新OA平台出租opencv里的训练和检测 - opencv_createsamples
2018-04-02 13:59
204 查看
新OA平台出租
Q1157880099 金沙科技 www.1157880099.com 好久没有来写blog了,学生生涯终结,就不好好总结了,今天把opencv里关于adaboost训练和检测的过程记录下来,方便别人也方便自己~~~啊哈哈~~~~(2015.8.28更改,见绿色)一、基础知识准备首先,opencv目前仅支持三种特征的训练检测, HAAR、LBP、HOG,选择哪个特征就去补充哪个吧。opencv的这个训练算法是基于adaboost而来的,所以需要先对adaboost进行基础知识补充啊,网上一大堆资料,同志们速度去查阅。我的资源里也有,大家去下载吧,这些我想都不是大家能直接拿来用的,我下面将直接手把手告诉大家训练怎么操作,以及要注意哪些细节。
二、关于正样本的准备1、采集正样本图片因为正样本最后需要大小归一化,所以我在采集样本的时候就直接把它从原图里抠出来了,方便后面缩放嘛,而不是只保存它的框个数和框位置信息(框个数、框位置信息看下一步解释),在裁剪的过程中尽量保持样本的长宽比例一致。比如我最后要归一化成20 X 20,在裁剪样本的时候,我都是20X20或者21X21、22X22等等,最大我也没有超过30X30(不超过跟我的自身用途有关,对于人脸检测这种要保证缩放不变性的样本,肯定就可以超过啦),我资源里也给出可以直接用的裁剪样本程序。(这里我说错了,根据createsamples.cpp ,我们不需要提前进行缩放操作,它在第3步变成vec时就包含了缩放工作.如果我们是用objectMaker标记样本,程序同时生成的关于每一幅图的samplesInfo信息,直接给第三步用即可。当然,你提前缩放了也没关系,按照第2步操作即可)2、获取正样本路径列表在你的图片文件夹里,编写一个bat程序(get route.bat,bat是避免每次都需要去dos框输入,那里又不能复制又不能粘贴!),如下所示:
运行bat文件,就会生成如下dat文件:
把这个dat文件中的所有非图片的路径都删掉,比如上图的头两行,再将bmp 替换成 bmp 1 0 0 20 20,如下:
(1代表个数,后四个分别对应 left top width height,如果我们之前不是把样本裁剪下来的,那么你的这个dat可能就长成这样1. bmp 3 1 3 24 24 26 28 25 25 60 80 26 26,1.bmp是完全的原图啊,你之前的样本就是从这张图上扣下来的)3、获取供训练的vec文件这里,我们得利用opencv里的一个程序叫opencv_createsamples.exe,可以把它拷贝出来。针对它的命令输入也是写成bat文件啦,因为cascade训练的时候用的是vec。如下:
运行bat,就在我们得pos文件夹里生成了如下vec文件:
就此有关正样本的东西准备结束。(vec中其实就是保存的每一个sample图,并且已经统一w、h大小了,如果你想看所有的sample,也可以通过调用opencv_createsamples.exe,使用操作,见附)
三、关于负样本的准备这个特别简单,直接拿原始图,不需要裁剪抠图(不裁剪还能保证样本的多样性),也不需要保存框(网上说只要保证比正样本大小大哈,大家就保证吧),只要把路径保存下来。同正样本类似,步骤图如下:
至此有关负样本的也准备完成。
四、开始训练吧这里我们用opencv_traincascade.exe(opencv_haartraining.exe的用法跟这个很相似,具体需要输入哪些参数去看opencv的源码吧,网上资料也有很多,主要是opencv_traincascade.exe比opencv_haartraining.exe包含更多的特征,功能齐全些啊),直接上图:
命令输入也直接用bat文件,请务必保证好大小写一致,不然不予识别参数。小白兔,跑起来~~~
Q1157880099 金沙科技 www.1157880099.com 好久没有来写blog了,学生生涯终结,就不好好总结了,今天把opencv里关于adaboost训练和检测的过程记录下来,方便别人也方便自己~~~啊哈哈~~~~(2015.8.28更改,见绿色)一、基础知识准备首先,opencv目前仅支持三种特征的训练检测, HAAR、LBP、HOG,选择哪个特征就去补充哪个吧。opencv的这个训练算法是基于adaboost而来的,所以需要先对adaboost进行基础知识补充啊,网上一大堆资料,同志们速度去查阅。我的资源里也有,大家去下载吧,这些我想都不是大家能直接拿来用的,我下面将直接手把手告诉大家训练怎么操作,以及要注意哪些细节。
二、关于正样本的准备1、采集正样本图片因为正样本最后需要大小归一化,所以我在采集样本的时候就直接把它从原图里抠出来了,方便后面缩放嘛,而不是只保存它的框个数和框位置信息(框个数、框位置信息看下一步解释),在裁剪的过程中尽量保持样本的长宽比例一致。比如我最后要归一化成20 X 20,在裁剪样本的时候,我都是20X20或者21X21、22X22等等,最大我也没有超过30X30(不超过跟我的自身用途有关,对于人脸检测这种要保证缩放不变性的样本,肯定就可以超过啦),我资源里也给出可以直接用的裁剪样本程序。(这里我说错了,根据createsamples.cpp ,我们不需要提前进行缩放操作,它在第3步变成vec时就包含了缩放工作.如果我们是用objectMaker标记样本,程序同时生成的关于每一幅图的samplesInfo信息,直接给第三步用即可。当然,你提前缩放了也没关系,按照第2步操作即可)2、获取正样本路径列表在你的图片文件夹里,编写一个bat程序(get route.bat,bat是避免每次都需要去dos框输入,那里又不能复制又不能粘贴!),如下所示:
运行bat文件,就会生成如下dat文件:
把这个dat文件中的所有非图片的路径都删掉,比如上图的头两行,再将bmp 替换成 bmp 1 0 0 20 20,如下:
(1代表个数,后四个分别对应 left top width height,如果我们之前不是把样本裁剪下来的,那么你的这个dat可能就长成这样1. bmp 3 1 3 24 24 26 28 25 25 60 80 26 26,1.bmp是完全的原图啊,你之前的样本就是从这张图上扣下来的)3、获取供训练的vec文件这里,我们得利用opencv里的一个程序叫opencv_createsamples.exe,可以把它拷贝出来。针对它的命令输入也是写成bat文件啦,因为cascade训练的时候用的是vec。如下:
运行bat,就在我们得pos文件夹里生成了如下vec文件:
就此有关正样本的东西准备结束。(vec中其实就是保存的每一个sample图,并且已经统一w、h大小了,如果你想看所有的sample,也可以通过调用opencv_createsamples.exe,使用操作,见附)
三、关于负样本的准备这个特别简单,直接拿原始图,不需要裁剪抠图(不裁剪还能保证样本的多样性),也不需要保存框(网上说只要保证比正样本大小大哈,大家就保证吧),只要把路径保存下来。同正样本类似,步骤图如下:
至此有关负样本的也准备完成。
四、开始训练吧这里我们用opencv_traincascade.exe(opencv_haartraining.exe的用法跟这个很相似,具体需要输入哪些参数去看opencv的源码吧,网上资料也有很多,主要是opencv_traincascade.exe比opencv_haartraining.exe包含更多的特征,功能齐全些啊),直接上图:
命令输入也直接用bat文件,请务必保证好大小写一致,不然不予识别参数。小白兔,跑起来~~~
相关文章推荐
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade-2.4.11版本
- 正式使用opencv里的训练和检测 - opencv_createsamples、opencv_traincascade
- AdaBoost 人脸检测介绍(6) : 使用OpenCV自带的 AdaBoost程序训练并检测目标
- opencv中cascade级联分类器在检测任务中的训练使用
- 目标检测——opencv cascade训练的一般使用流程与常见问题
- 使用opencv2.0的haar算法人脸检测分类器训练xml
- 手把手教你使用 svm+hog 训练,检测手写数字
- Opencv使用索贝尔滤波进行边缘检测
- 使用OPENCV训练手写数字识别分类器
- 如何用OpenCV自带的adaboost程序训练并检测目标
- 使用OpenCV检测程序效率
- Opencv人脸检测Mode的训练
- OpenCV学习笔记(一):使用CascadeClassifier检测人脸
- 使用OpenCV调用摄像头检测人脸并截图-Python
- OpenCV3.2.0中使用HOG特征训练SVM分类器时重点注意事项
- 基于VS C++平台的OpenCV设置,实现简单的行人检测