opencv机器学习——首次尝试,从单张目标真实样本图像生成多张合成样本图像,并检测验证
2020-06-07 05:29
337 查看
软件环境:
ubuntu 18.04
opencv 3.4.9
操作步骤:
将相关目录及所需文件创建到opencv自带训练软件目录下
我的opencv3安装目录为:chenlu@chenlupc:~/opencv3/bin
高亮文件及文件夹为训练前需要创建好的:
准备正样本和负样本图片,以及创建对应的描述文本:
创建样本图片:
此处使用根据一张真实样本图片创建大量的合成的样本图片的方法
createsamples工具及参数及默认值
执行合成样本命令:
成功生成100张样本图片!
开始训练:
工具traincascade,参数及默认值
执行训练指令:级联器默认为20层
训练完成!
训练结果保存在xml目录下,cascade.xml为最终模型,各级训练结果及参数都有单独xml保存:
加载上述训练好的模型,使用手机拍摄的ROV视频进行实时目标检测,验证效果(可以预期效果很差,结果没有关系,这篇文章的目的是走通opencv模型训练及检测的整个流程),基于opencv自带的facedetect.cpp修改而来。
默认参数效果:
通过调整detectMultiScale()的若干参数,可以在速度和精度2方面做平衡
修改参数后效果:实时性提高很多,同时误检率大大降低,但是准确率依然很低(是由于训练模型使用的样本数据实在少的可怜)
NEXT STPE?
使用大量的样本来训练一个较好的模型,期待一个90%准确率以上的检测结果。。。
相关文章推荐
- 利用OpenCV的Haar特征目标检测方法进行人脸识别的尝试(一)
- 目标检测的图像特征提取之(四)OpenCV中BLOB特征提取与几何形状分类
- 直接可以用的Python和OpenCV检测及分割图像的目标区域例子
- 基于Boost方法的人脸检测(2):样本生成(切割图像、resize图像、灰度化图像、保存图片)
- 【图像处理基础知识(python+openCV)】——目标检测
- 深入学习OpenCV检测及分割图像的目标区域
- Python和OpenCV检测及分割图像的目标区域
- 在opencv3中利用SVM进行图像目标检测和分类
- opencv结构分析与形状识别-轮廓检测和填充(连通区域-边缘与整个图像的目标)
- 在opencv3中利用SVM进行图像目标检测和分类
- me检测的目标投影到相机坐标系下,进而展示在图像中
- 【笔记】OpenCV3 图像分割-用grabCut做前景检测
- 【计算机视觉】基于样本一致性的背景减除运动目标检测算法(SACON)
- AdaBoost 人脸检测介绍(6) : 使用OpenCV自带的 AdaBoost程序训练并检测目标
- OpenCV特征点检测匹配图像-----添加包围盒
- 图像目标检测C#
- 目标检测的图像特征提取之(一)HOG特征
- 基于样本一致性的背景减除运动目标检测算法(SACON)
- Opencv 使用Stitcher类图像拼接生成全景图像
- 【图像处理】Haar Adaboost 检测自定义目标(视频车辆检测算法代码)