Closed. This question needs to be more focused. It is not currently accepting answers. Learn more
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
想问一下是否有任何适合视频的人脸检测方案需要最少的训练时间理想情况下是几天而不是像维奥拉·琼斯那样的几周。我读过关于LBP的文章,但它也需要大量的训练样本,但不知道需要多长时间一个LBP的训练消耗的时间是不是和中提琴-琼斯的方法一样多?。我将在一个运行在linux操作系统上的微处理器上实现这一点,比如raspberry pi将要实现它在C的速度,因为我希望它能够检测图像在一个10帧/秒-20帧/秒的视频流。

最佳答案

opencv附带了一个名为traincascade的工具,用于训练lbp、haar和hog。特别是对于人脸检测,他们甚至以traincascade所需的格式发布了3000个24x24像素的人脸图像数据集。
以我的经验,在三种类型的TrainCascade支持中,LBP培训所需时间最少,haar的培训时间是几小时,而不是几天。
对其训练过程的一个快速概述是,对于给定数量的阶段(一个体面的选择是20个),它试图找到拒绝尽可能多的非人脸而不拒绝人脸的特征拒绝非人脸和保留人脸的平衡由最小命中率(opencv选择99.5%)和虚警率(opencv选择50%)控制。用于创建OpenCV自己的LBP级联的特定元算法是温和的AdaBoost(GAB)。
OpenCV中实现的LBP变体如下所述:
盛彩寥、向欣竹、甄磊、伦张和Stan Z. Li。学习多尺度块局部二值模式进行人脸识别。生物测定学国际会议,2007年,第828-837页。
在OpenCV中使用默认参数实际上等于:
OpenCV LBP Cascade运行时概述
探测器检查图像中的24x24个窗口,寻找人脸。从层叠分类器的阶段1到阶段20,如果它可以显示当前的24x24窗口可能不是一个面,它将拒绝它并在窗口上移动一个或两个像素到下一个位置;否则它将进入下一个阶段。
在每个阶段,检查3-10个左右的lbp特征。每个LBP特性在窗口内都有一个偏移量和一个大小,它覆盖的区域完全包含在当前窗口内在给定位置评估lbp特征可能会导致通过或失败。根据lbp特性是成功还是失败,特定于该特性的正权重或负权重将添加到累加器中。
一旦评估了一个阶段的所有LBP特性,就将累加器的值与阶段阈值进行比较如果累加器低于阈值,则阶段失败;如果累加器高于阈值,则阶段通过。同样,如果一个阶段失败,则退出级联,窗口移动到下一个位置。
LBP特征评估相对简单在窗口内该功能的偏移量处,九个矩形以3x3配置布局对于特定的lbp特性,这9个矩形的大小都是相同的,从1x1到8x8不等。
计算九个矩形中所有像素的和,也就是它们的积分然后,将中心矩形的积分与其八个相邻矩形的积分进行比较。这8个比较的结果是8位(1或0),它们组合在8位lbp中。
此8位矢量用作2^8==256位lut的索引,由训练过程计算,并特定于每个lbp特征,该lut确定lbp特征是通过还是失败。
这就是它的全部。

关于algorithm - 训练时间最短的人脸检测算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20085833/

10-11 04:07