您的位置:首页 > 编程语言 > Python开发

Python3+OpenCV学习笔记(五):鸟类检测模型的训练

2018-03-01 13:49 274 查看
最近各种事情耽搁,OpenCV的学习也没有进展。
因为项目需求,所以自己做了这样一个基于Haar特征级联分类器的鸟类检测模型,记录下来。
OpenCV官方文档中有一个Haar级联分类器做的人脸检测例程,自行参阅文档。
做一个鸟类检测模型首先需要训练出一个识别用的.xml文件,下面就开始进行训练。

一、准备样本集
样本集需要正样本集和负样本集。
正样本集:正样本集为包含“鸟类”的灰度图,一般大于等于2000张,尺寸不能太大(20*40),尺寸太大会导致训练时间过长。
负样本集:负样本集为不含“鸟类”的任何图片,一般大于等于5000张,尺寸比正样本集稍大(60*60)。
由于项目要求不高,所有的样本集都是我自己在网上找的图片,然后用python脚本对尺寸进行了调整,全部为灰度图。




左边是正样本集(40*40),右边是负样本集(100*100)。PS:由于自己做的样本集数量不大,所有尺寸稍大

二、准备文件夹
将正负样本集分别放入pos和neg文件夹,存放在路径D:\Anaconda\pkgs\opencv-3.3.0-py35_200\Library\bin(PS:个人的安装环境不同,路径有差异)。
在该路径下新建xml文件夹。


三、cmd打开dos命令窗口,进入pos路径下输入以下命令,创建pos.txt文件dir/b >pos.txt
                               

打开pos.txt,将jpg全部替换为jpg 1 0 0 40 40删除最后一行路径pos.txt保存



"1"为图片数量,“0,0”为坐标(Left,Top),“40,40”为图片尺寸(width, height)。
同理,进入neg文件夹,输入以下命令声场neg.txtdir/b >neg.txt


打开neg.txt,将图片名前面加入路径:neg/删除最后一行路径neg.txt



四、生成pos.vecdos窗口进入路径D:\Anaconda\pkgs\opencv-3.3.0-py35_200\Library\bin,及pos、neg、xml文件夹所在的路径,输入下列命令生成pos.vec文件。opencv_createsamples.exe -info pos\pos.txt -vec pos.vec -bg neg\neg.txt -num 50 -w 40 -h 40

-bg 作为背景-num 正样本数量-w
4000
正样本宽度-h 正样本高度生成成功后出现如下界面:


五、开始训练接下来输入以下命令,开始进行训练opencv_traincascade.exe -data xml -vec pos.vec -bg neg\neg.txt -numPos 50 -numNeg 100 -numStages 20 -featureType HAAR -w 40 -h 40

-data 后面跟文件夹名
-vec vec文件
-bg 作为背景的文件
-numPos 正样本数量
-numNeg 负样本数量
-numStages 级数
-featureType 特征类型,可以跟HAAR、LBP、HOG


接下来就是等待训练结果的过程。
训练完成后会在xml文件夹中出现一个***.xml文件,这就是我们需要的东西。检验过程类似人脸检测(官方教程中可以找到),只是将haarcascade_frontalface_default.xml换成了我们自己训练的***.xml文件。
在上面这些过程中可能会遇到各种问题,各个论坛的大神都给出了解答,这里就不献丑了。
补:
昨天又将样本扩大进行了训练,识别正确率有了明显提升。不过训练过程中也遇到了更多细节问题,比如因为minhirateh(最小正确测试率)和maxfalsealarm(最大错误接受率)设置得不恰当,导致训练提前结束,还有根据HAAR特征、LBP特征、HOG特征各自的特性,似乎HOG更适合做此类检测。下面给出一个链接,可以参考:
参考链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息