快速精准的人头检测,代码已开源

    自江森自控(Johnson Controls Inc.)的软件工程师Aditya Vora分享了一种快速精准的人头检测(head detector)算法并开源了代码。
    看起来还是不错的!
人头检测在视频监控中非常重要,而公交车、商场或者大型场馆的拥挤人群计数则是其重要应用场景。

 

算法思想
作者称拥挤人群计数目前主要有两种实现路径:
1.使用回归的算法思路,直接根据图像回归出拥挤人群密度热图,它的缺点是只能得到场景整体的一个拥挤指数,不能获知人群个体的具体位置,而且这种方法对图像分辨率很敏感。
2.使用目标检测的方法,比如直接使用Faster RCNN检测人,检测后数目标为“人”的个数。这种方法的缺点是在人物相互遮挡的情况下往往性能较差,而人群越拥挤相互遮挡的可能性越大,导致算法使用受限。

该文作者希望设计更有针对性的精准的人头检测,实现更加精准的人群计数。
作者创新的两点,轻量级人头检测网络和anchors尺度的选择。
网络架构:

从上图可知,网络的前半部分是VGG16特征提取网络,经过一次卷积,然后分开分别使用1*1卷积进入Regression head(用于回归人头的位置信息)和Classification head(用于分类是否为人头)。

在检测网络中,anchors是很重要的概念,是一组预定义的包围框,在对象检测系统中预测尺度和位移。作者认为普通目标识别中anchors的尺度定义过大,应该根据“有效感受野”(effective receptive field)的思想,减小尺度(直观上“人头”目标比“人体”目标也要小)。

实验结果
作者在BRAINWASH数据库上做了实验,打败了三个基线算法,并取得了与最好结果算法“可比较“的性能。

提出的算法比较快,使用Quadro M1000M显卡(仅有512 CUDA核心)速度达到5fps,使用Jetson TX2(仅有256 CUDA核心)速度1.6fps。相比以往算法更加适合于嵌入式边缘计算平台。

论文地址:
https://arxiv.org/abs/1809.08766v1
代码地址:
https://github.com/aditya-vora/FCHD-Fully-Convolutional-Head-Detector

推荐文章

cilantro是一个精简快速的C ++库,用于处理点云数据,重点是3D案例。它包括各种常见操作的高效实现,提供干净的API并尝试最小化样板代码的数量。该库具有广泛的模板化,可以对任意数值类型和维度(如果适用)的点数据进行操作,并具有更复杂过程的模块化/可扩展设计,同时为最常见的方法提供方便的别名/包装器案例。cilantro可以在我们的技术报告中找到高级描述。支持的功能基本操作:一般尺寸kd树(使用捆绑的nanoflann)原点云的曲面法线和曲率估计基于通用维度网格的点云重采样主成分分析用于3D点云的基本I / O实用程序(采用PLY格式,使用捆绑的tinyply)和特征矩阵RGBD图像对与点云转换实用程序配对凸壳:从顶点或半空间交叉输入计算(使用捆绑的Qhull)的一般维度凸多面体表示,并允许在各个表示之间轻松切换通用(一般维度)空间区域的表示,作为实现集合操作的凸多面体的联合集群:一般维度k-means聚类,支持nanoflann支持的所有距离度量基于各种图拉普拉斯类型的光谱聚类(使用捆绑的光谱)平核均值漂移聚类基于连通分量的点云分段,支持任意逐点相似度函数模型估计和点集注册:RANSAC估计器模板及其实例,用于稳健的平面估计和刚性点云登记用于点对点和点对面度量(及其组合)的完全通用的迭代最近点实现,支持任意点要素空间中的任意对应搜索方法可视化:经典多维尺度(使用捆绑光谱进行特征分解)功能强大,可扩展且易于使用的3D可视化工具cilantro,一个用于几何和通用点云数据处理的开源C ++库。该库提供的功能涵盖了低级点云操作,空间推理,各种点云分割方法和通用数据聚类,灵活或局部几何对齐的灵活算法,模型拟合以及强大的可视化工具。为了适应各种工作流程,cilantro几乎完全模板化,其大多数通用算法都在任意数据维度上运行。同时,该库易于使用且具有高度表现力,促进了简洁的编码风格。cilantro经过高度优化,具有最小的外部依赖性,并支持在各种环境中快速开发高性能点云处理软件。

热门文章

简单讲:互联网数据标注员是借助电脑或者移动设备对一些原始的数据进行处理,生产出满足AI公司机器学习需要数据的一群人。按照数据处理对象的不同,工作内容也会有差别,标注员的工作内容可以分为:分类;框选;注释;标记。按照所处公司的不同,标注员的工作方式也会有差别:有的人工智能公司处于对数据安全性考虑会自建标注团队,在这些公司工作的标注员可以保证自己工作内容不会出现太大变动;但一些服务于人工智能公司非专业外包公司标注员的工作则是项目制的,一个项目忙完紧接着做另一个项目,这样工作内容连续性较差,对一种类型的项目经验也不会积累的太多。就目前来说,人工智能还处于人工增长阶段,机器依然需要大量的数据进行训练,测试。标注员在当下也会一直存在,而且从业群体会越来越多,所以暂时不用担心这份职业会不会短期消失。就标注员从业来说,建议选择人工智能公司和专业的数据公司,这样可以保证自己在一个方向上了解的足够深入。就职场晋升来说,以牛牛数据为例:标注员——项目经理——项目总监——数据运营总监。首先谈谈什么是数据标注。数据标注有许多类型,如分类、画框、注释、标记等等,我们会在下面详谈。要理解数据标注,得先理解AI其实是部分替代人的认知功能。回想一下我们是如何学习的,例如我们学习认识苹果,那么就需要有人拿着一个苹果到你面前告诉你,这是一个苹果。然后以后你遇到了苹果,你才知道这玩意儿叫做“苹果”。类比机器学习,我们要教他认识一个苹果,你直接给它一张苹果的图片,它是完全不知道这是个啥玩意的。我们得先有苹果的图片,上面标注着“苹果”两个字,然后机器通过学习了大量的图片中的特征,这时候再给机器任意一张苹果的图片,它就能认出来了。这边可以顺带提一下训练集和测试集的概念。训练集和测试集都是标注过的数据,还是以苹果为例子,假设我们有1000张标注着“苹果”的图片,那么我们可以拿900涨作为训练集,100张作为测试集。机器从900张苹果的图片中学习得到一个模型,然后我们将剩下的100张机器没有见过的图片去给它识别,然后我们就能够得到这个模型的准确率了。想想我们上学的时候,考试的内容总是不会和我们平时的作业一样,也只有这样才能测试出学习的真正效果,这样就不难理解为什么要划分一个测试集了。我们知道机器学习分为有监督学习和无监督学习。无监督学习的效果是不可控的,常常是被用来做探索性的实验。而在实际产品应用中,通常使用的是有监督学习。有监督的机器学习就需要有标注的数据来作为先验经验。在进行数据标注之前,我们首先要对数据进行清洗,得到符合我们要求的数据。数据的清洗包括去除无效的数据、整理成规整的格式等等。具体的数据要求可以和算法人员确认。二、常见的几种数据标注类型1.分类标注:分类标注,就是我们常见的打标签。一般是从既定的标签中选择数据对应的标签,是封闭集合。如下图,一张图就可以有很多分类/标签:成人、女、黄种人、长发等。对于文字,可以标注主语、谓语、宾语,名词动词等。<img src="https://pic2.zhimg.com/50/v2-df93dc0a7e8a5fe387dc3774748b5f05_hd.jpg" data-caption="" data-size="normal" data-rawwidth="700" data-rawheight="400" class="origin_image zh-lightbox-thumb" width="700" data-original="https://pic2.zhimg.com/v2-df93dc0a7e8a5fe387dc3774748b5f05_r.jpg">适用:文本、图像、语音、视频应用:脸龄识别,情绪识别,性别识别2.标框标注:机器视觉中的标框标注,很容易理解,就是框选要检测的对象。如人脸识别,首先要先把人脸的位置确定下来。行人识别,如下图。<img src="https://pic2.zhimg.com/50/v2-7824903d6d840e2bb08d96b5c2fa5874_hd.jpg" data-caption="" data-size="normal" data-rawwidth="591" data-rawheight="398" class="origin_image zh-lightbox-thumb" width="591" data-original="https://pic2.zhimg.com/v2-7824903d6d840e2bb08d96b5c2fa5874_r.jpg">适用:图像应用:人脸识别,物品识别3.区域标注:相比于标框标注,区域标注要求更加精确。边缘可以是柔性的。如自动驾驶中的道路识别。<img src="https://pic3.zhimg.com/50/v2-4bc1dd2278182acf94fc426d7e6f2dc1_hd.jpg" data-caption="" data-size="normal" data-rawwidth="601" data-rawheight="377" class="origin_image zh-lightbox-thumb" width="601" data-original="https://pic3.zhimg.com/v2-4bc1dd2278182acf94fc426d7e6f2dc1_r.jpg">适用:图像应用:自动驾驶4.描点标注:一些对于特征要求细致的应用中常常需要描点标注。人脸识别、骨骼识别等。<img src="https://pic4.zhimg.com/50/v2-5e24f394516c75e45942c37ba0da85c0_hd.jpg" data-caption="" data-size="normal" data-rawwidth="583" data-rawheight="387" class="origin_image zh-lightbox-thumb" width="583" data-original="https://pic4.zhimg.com/v2-5e24f394516c75e45942c37ba0da85c0_r.jpg">适用:图像应用:人脸识别、骨骼识别5.其他标注:标注的类型除了上面几种常见,还有很多个性化的。根据不同的需求则需要不同的标注。如自动摘要,就需要标注文章的主要观点,这时候的标注严格上就不属于上面的任何一种了。(或则你把它归为分类也是可以的,只是标注主要观点就没有这么客观的标准,如果是标注苹果估计大多数人标注的结果都差不多。)三、有什么发展前途?数据标注员可以说是AI消灭了一部分工作又创造出来的一种工作。在未来AI发展良好的前提下,数据的缺口一定是巨大的。可以预见3-5年内数据标注员的需求会一直存在。至于发展,其实所谓一些熟能生巧的工作,都是有被替代掉的风险的。深度学习解决的一件事情就是熟能生巧。在这个岗位上,其实你的一些想法就代表了AI的想法,AI会根据你标注的数据进行学习,想想还是有点成就感的。数据标注可以说是AI的入门级岗位,未来可转向其他AI岗位。如项目实施顾问等,这就要求更多的工作技能,需要再工作中积累。作者:跹尘链接:https://www.zhihu.com/question/30654399/answer/264828926来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。