opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证

 

软件环境:

ubuntu 18.04

opencv 3.4.9

 

操作步骤:

将相关目录及所需文件创建到opencv自带训练软件目录下

我的opencv3安装目录为:chenlu@chenlupc:~/opencv3/bin

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第1张图片

高亮文件及文件夹为训练前需要创建好的:

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第2张图片

 

准备正样本和负样本图片,以及创建对应的描述文本:

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第3张图片opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第4张图片

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第5张图片opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第6张图片

 

创建样本图片:

此处使用根据一张真实样本图片创建大量的合成的样本图片的方法

createsamples工具及参数及默认值

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第7张图片

执行合成样本命令:opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第8张图片

成功生成100张样本图片!

 

开始训练:

工具traincascade,参数及默认值

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第9张图片

执行训练指令:级联器默认为20层

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第10张图片

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第11张图片

训练完成!

训练结果保存在xml目录下,cascade.xml为最终模型,各级训练结果及参数都有单独xml保存:

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第12张图片

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第13张图片

 

加载上述训练好的模型,使用手机拍摄的ROV视频进行实时目标检测,验证效果(可以预期效果很差,结果没有关系,这篇文章的目的是走通opencv模型训练及检测的整个流程),基于opencv自带的facedetect.cpp修改而来。

默认参数效果:

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第14张图片

通过调整detectMultiScale()的若干参数,可以在速度和精度2方面做平衡

修改参数后效果:实时性提高很多,同时误检率大大降低,但是准确率依然很低(是由于训练模型使用的样本数据实在少的可怜)

opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证_第15张图片

 

NEXT STPE?

使用大量的样本来训练一个较好的模型,期待一个90%准确率以上的检测结果。。。

 

 

 

你可能感兴趣的:(Coding)