Opencv训练级联分类器的全新方法
改进级联分类器训练过程
网上提供的级联分类器训练通常基于opencv_haartraining,虽然按照步骤成功训练出了xml文件,但在识别过程中却发现识别率很低。尝试多次更改样本后,检测效果仍然一般。考虑到可能是haar特征无法有效区分目标,因此决定通过opencv_traincascade训练LBP特征。为了将这一经验记录下来,不仅有助于日后回顾,也可供他人参考。
准备样本图片
首先要准备好正负样本图片,其中正样本是包含目标的图片,而负样本则是不含目标的图片。建立相应的文件夹结构,确保清晰明了。对于正样本图片最好裁剪成相同尺寸,例如30*30,在这个尺寸下进行后续操作会更加方便。批量编辑图片可以使用工具,比如美图看看,它提供了批量编辑功能,能够轻松将图片调整到统一尺寸。
建立样本说明文件
在cmd命令行下进入正样本文件夹目录,输入以下命令:
```
dir /b > pos.txt
```
然后使用编辑软件(如editplus)打开pos.txt文件,删除最后一行,并将文件名进行归一化处理。同样的方法在负样本文件夹内创建描述文件neg.txt,同样删除最后一行。
创建.vec文件
将opencv_createsamples.exe和opencv_traincascade.exe放置在图片文件夹的上层目录,利用opencv_createsamples.exe应用程序执行以下cmd命令:
```
opencv_createsamples.exe -vec -info pos.txt -bg neg.txt -w 30 -h 30 -num 100
```
执行完该命令后,将在当前目录下生成一个文件。
使用opencv_traincascade.exe进行训练
在当前目录下新建一个dt文件夹,用于存放生成的.xml文件。使用以下cmd命令进行训练:
```
opencv_traincascade.exe -data dt -vec -bg neg/neg.txt -numPos 100 -numNeg 300 -numStages 16 -precalcValbufSize 200 -precalcdxBufSize 1000 -featureType LBP -w 30 -h 30
```
其中,-data指定输出目录,-numPos表示正样本数目,-numNeg表示负样本数目,-numStages表示训练级数。
通过以上全新的方法,希望能够提高级联分类器训练的准确性和效率,为图像识别领域的发展带来新的可能性。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。