关闭

创建自己的训练分类器

648人阅读 评论(0) 收藏 举报
分类:



来源:http://hi.baidu.com/robert_lov/item/00c4d8d4af67d596260ae7b2/?qq-pf-to=pcqq.c2c


本文为进行目标检测——自己感兴趣的目标,如茶杯、手机等。现在大都是针对人脸、车辆等现有的XML,我们之间调用,那如何建立自己的XML的检测文档呢?

首先,介绍下目标检测的三个主要步骤:

1、 样本的创建
2、 训练分类器
3、 利用训练好的分类器进行目标检测。

进入主题:

1、进行样本训练需要样本,训练样本分为正样本和负样本,正样本是包含检测目标的图像,归一化到统一大小,这里我建立200个正样本,大小为18*24,负样本是背景样本,不包含目标的图像,这里也是400个样本,不用对负样本进行归一化;

 

2、建立背景描述文件--负样本,用来描述负样本,文件中每一行包含了一个负样本图片的文件名和大小信息,如,负样本放于F:\pest\negdata文件夹下,那么,创建负样本的方法使用DOS:

,然后将最后一行删除,全局替换为如下格式:

negdata/201.JPG 

negdata/202.JPG 

negdata/203.JPG …………

图片201.JPG 包含了单个目标对象实体; 

3、建立背景描述文件--正样本,用于描述正样本,文件中每一行包含了一个负样本图片的文件名和大小信息,如,正样本放于F:\pest\posdata文件夹下,那么,创建正样本的方法如上图,只需将目录切换到posdata下,即可,建立完成后将posdata.dat最后一行删除,并替换到如下格式:

posdata/1.jpg 1 0 0 18 24
posdata/2.jpg 1 0 0 18 24
posdata/3.jpg 1 0 0 18 24 …………

 

4、生成正样本文件:由OpenCV自带createsamples.exe创建,位置在安装opencv目录bin下;将包含此文件的bin文件夹及此文件拷贝到F:\pest\下,同时将正/负样本文件及正负样本图片文件也拷贝到同一目录下,如图所示;


createsamples.exe的内部信息这里了解下;


下面利用DOS创建正样本文件,过程如图所示:


切换到bin目录下按照上述步骤就可生成正样本文件a.vec.

至此正样本的创建完成。

 

5、接下来就要训练这个分类器了,训练函数也是OpenCV提供:haartraining实现,位置也在安装opencv目录bin下,现已经随bin拷贝到pest下了;


运行效果如图所示:


运行结束后会在新建文件夹data生成xml文件:data.xml至此训练器建立完成。

疑问:利用人脸的haar特征来训练其他物体,真的可行吗? 

今天验证了下,能检测出部分物体,说明还是有些特征是可以采用的,只是不希望调整窗口大小来检测,因为待检测目标大小相当,故需要改进,样本量也需要增加.

 

ps:有时候我们会遇到这样的情况:训练卡在某一层进行不下去,具体原因现在还不是很清楚,就想利用现有的分类器手动生成xml,现在方法如下:

opencv里自带转换工具:convert_cascade.exe,位置在:D:\open CV\OpenCV\samples\c\convert_cascade.exe.它需要指定正样本图像的大小,分类器的路径,和生成xml的名字

 

最终在7这个文件夹下,手动生成我们所需要的xml格式的级联分类器。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:364576次
    • 积分:8901
    • 等级:
    • 排名:第2115名
    • 原创:546篇
    • 转载:0篇
    • 译文:13篇
    • 评论:17条
    文章分类
    最新评论