使用Adaboost训练检测器

本文详细介绍了如何使用Adaboost训练一个手掌检测器,包括数据集的准备,如正负样本的获取与描述文件的创建,以及训练过程中的参数设置和训练过程。在保证高检测率和低误检率的前提下,文章讨论了如何优化检测速度以适应手机端运行。最终,作者分享了训练检测器的完整步骤和关键参数选择。
摘要由CSDN通过智能技术生成

        做了一段时间的adaboost训练一个可以检测张开的手掌的检测器,最后训练出来的效果不错,在保证较高的检测率的情况下还能保持几乎没有误检的情况出现,adaboost用在物体检测上的效果让我大吃一惊。adaboost的特点是误检测少,且速度快,因为在检测的时候采用滑窗法对窗口挨个进行一个二分类(是手掌或者不是手掌),但是大多数窗口无法通过前面几个stage的分类器就直接被判断为负样本了,因此有着速度快的特点,但是限于检测过程是在手机端运行的,手机的计算能力不比电脑,所以fps还是会存在一点问题,对此我也进行了相应的方法来加速检测的过程,以提高检测速度。这篇博客分为两个部分,一部分是如何准备数据集,包括正样本和负样本,另一个部分是如何进行训练以及训练过程中一些需要注意的地方。下面开始啦~

        一、准备数据集

        数据集包括了正样本和负样本,正样本毫无疑问就是真正包括想要检测的物体。举个栗子:

         截图工具大概就是QQ截图之类的东西了。。图像的大小可以不一样,也可以都缩放为一个尺寸,最好是缩放为一个尺寸,方便后面准备info.data文件,但原则上是只要保证正样本图像中基本恰好包括了想检测的物体即可。把它们放在一个叫做pos的文件夹中。我用到的正样本个数是1400个。正样本这样截好图放在pos文件夹之后就告一段落了,接下来是负样本。关于负样本,有一点值得注意,就是负样本不需要自己去截取,可以拿任何不包括正样本图像的大图作为负样本,再举个栗子,我想检测的是手掌,那么只要一张图片中没有手掌,我就可以把这张图片拿来当做负样本的一部分。也就是说,负样本是大图而不是截图,只要这个大图不包括正样本。还是拿图举个栗子:

      

       这是拿视频存成图片来作为负样本的,图片的个数是1180张,但是图片的个数不代表负样本的个数,这点后面会解释到。把这些图片放在一个叫做neg的文件夹中,pos和neg文件夹在同一个目录下。还是上图吧:</

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值