用于点云数据处理的精简,多功能,高效的开源库

cilantro是一个精简快速的C ++库,用于处理点云数据,重点是3D案例。它包括各种常见操作的高效实现,提供干净的API并尝试最小化样板代码的数量。该库具有广泛的模板化,可以对任意数值类型和维度(如果适用)的点数据进行操作,并具有更复杂过程的模块化/可扩展设计,同时为最常见的方法提供方便的别名/包装器案例。cilantro可以在我们的技术报告中找到高级描述。

支持的功能

基本操作:

  • 一般尺寸kd树(使用捆绑的nanoflann

  • 原点云的曲面法线和曲率估计

  • 基于通用维度网格的点云重采样

  • 主成分分析

  • 用于3D点云的基本I / O实用程序(采用PLY格式,使用捆绑的tinyply)和特征矩阵

  • RGBD图像对与点云转换实用程序配对

凸壳:

  • 从顶点或半空间交叉输入计算(使用捆绑的Qhull)的一般维度凸多面体表示,并允许在各个表示之间轻松切换

  • 通用(一般维度)空间区域的表示,作为实现集合操作的凸多面体的联合

集群:

  • 一般维度k-means聚类,支持nanoflann支持的所有距离度量

  • 基于各种图拉普拉斯类型的光谱聚类(使用捆绑的光谱

  • 平核均值漂移聚类

  • 基于连通分量的点云分段,支持任意逐点相似度函数

模型估计和点集注册:

  • RANSAC估计器模板及其实例,用于稳健的平面估计和刚性点云登记

  • 用于点对点和点对面度量(及其组合)的完全通用的迭代最近点实现,支持任意点要素空间中的任意对应搜索方法

可视化:

  • 经典多维尺度(使用捆绑光谱进行特征分解)

  • 功能强大,可扩展且易于使用的3D可视化工具

cilantro,一个用于几何和通用点云数据处理的开源C ++库。该库提供的功能涵盖了低级点云操作,空间推理,各种点云分割方法和通用数据聚类,灵活或局部几何对齐的灵活算法,模型拟合以及强大的可视化工具。为了适应各种工作流程,cilantro几乎完全模板化,其大多数通用算法都在任意数据维度上运行。同时,该库易于使用且具有高度表现力,促进了简洁的编码风格。cilantro经过高度优化,具有最小的外部依赖性,并支持在各种环境中快速开发高性能点云处理软件。


推荐文章

来自工业界的最佳实践。车牌识别是一个老生常谈的话题,在工业界已经得到广泛应用。当深度学习在各种视觉识别任务上刷新更高精度的时候,却常常被认为计算量远大于传统方法。Intel公司俄罗斯IOTG计算机视觉组的工程师最近发布了一篇论文,揭示了自家已经商用的车牌识别算法,使用轻量级深度神经网络进行车牌识别,达到快准狠的新高度,即速度超快、精度超准、硬件利用率超狠。本文来自于论文《LPRNet: License Plate Recognition via Deep Neural Networks》。文章的的第一作者已经离开Intel,这篇论文是他们17年的工作,通过Linkedin得知,两位作者来自Intel收购的Itseez公司,也就是之前维护OpenCV的俄罗斯公司。该文提出了LPRNet – 自动车牌识别的end-to-end方法,识别之前无需进行初步的字符分割。该方法使用了深度神经网络,能够实时运算,在中国车牌识别准确度上高达95%,速度上在nVIDIA GeForce GTX 1080显卡运算每个车牌3ms,在英特尔酷睿i7-6700K上每个车牌1.3ms。LPRNet由轻量级卷积神经网络组成,因此可以端到端的方式进行训练。论文称,LPRNet是第一个不使用RNN的实时车牌识别系统。因为速度快,LPRNet算法可用于自动车牌识别的嵌入式解决方案,即使在具有挑战性的中国车牌上也具有高精度。需要说明的是,LPRNet解决的是识别的问题,文中车牌检测使用的是LBP-cascade。LPRNet特性1.实时、高精度、支持车牌字符变长、无需字符分割、对不同国家支持从零开始end-to-end的训练;2.第一个不需要使用RNN的足够轻量级的网络,可以运行在各种平台,包括嵌入式设备;3.鲁棒,LPRNet已经应用于真实的交通监控场景,事实证明它可以鲁棒地应对各种困难情况,包括透视变换、镜头畸变带来的成像失真、强光、视点变换等。车牌识别的挑战图像模糊、很差的光线条件、车牌数字的变化(比如中国和日本的车牌有一些特殊字符)、车牌变形、天气影响(比如雨雪天气)、车牌上的字符个数有变化。空间变换预处理LocNet这是对检测到的车牌形状上的校正,使用 Spatial Transformer Layer[1],这一步是可选的,但用上可以使得图像更好得被识别。LPRNet的基础构建模块LPRNet的基础网络构建模块受启发于SqueezeNet Fire Blocks[2]和Inception Blocks[3],如下图所示。特征提取骨干网架构骨干网将原始的RGB图像作为输入,计算得到空间分布的丰富特征。为了利用局部字符的上下文信息,该文使用了宽卷积(1×13 kernel)而没有使用LSTM-based RNN。骨干网络最终的输出,可以被认为是一系列字符的概率,其长度对应于输入图像像素宽度。由于解码器的输出与目标字符序列长度不同,训练的时候使用了CTC Loss[4],它可以很好的应对不需要字符分割和对齐的end-to-end训练。为了进一步提高性能,使用了论文[5]中global context嵌入。推理阶段对上述一系列字符的概率进行解码,使用beam search[6],它可以最大化输出序列的总概率。后过滤(post-filtering)阶段,使用面向任务的语言模型实现作为目标国家车牌模板的一组集合,后过滤阶段是和beam search 结合一起用的,获得通过beam search找到的前N个最可能序列,返回与预定义模板集合最匹配的第一个序列,该模板取决于特定国家的车牌规则。识别实验结果训练时,使用一个来自监控场景的中国车牌的私有库,总共有11696幅经过LBP级联检测器检测出来的车牌,并进行了数据增广(data augmentation)即随机旋转、平移、缩放,下图报告了上述各种tricks对识别精度的影响。最大的识别精度增益来自于global context(36%),其次是data augmentation(28.6%),STN-based alignment即预处理也带来了显著提高(2.8-5.2%),Beam Search联合post-filtering进一步提高了0.4-0.6%.识别速度Intel将LPRNet在CPUGPUFPGA上都进行了实现,每个车牌的识别时间如下:这里GPU用的是nVIDIA GeForce1080, CPU是Core i7-6700K SkyLake, FPGA是Intel Arria10,推断引擎IE来自Intel OpenVINO.虽然这篇文章本身没有什么新的发明,但52CV还是认为非常值得推荐给大家的,它绝不属于水文,因为Intel已经将其商用了,足以证明它的优势和价值。该文没有开源代码,论文地址:https://arxiv.org/abs/1806.10447v1在“我爱计算机视觉”公众号后台回复“lprnet”可以直接获取论文的百度网盘下载地址。参考文献[1]“Spatial Transformer Networks,”arXiv:1506.02025[2]“SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5mb model size,”arXiv:1602.07360[3]“Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning,” arXiv:1602.07261[4]Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks. ICML 2006:369-376[5]“ParseNet: Looking Wider to See Better,” arXiv:1506.04579[6]Supervised Sequence Labelling with Recurrent Neural Networks, 2012th ed. Heidelberg ; New York:Springer, Feb. 2012.转载来源:《快准狠!Intel论文揭示自家车牌识别算法:LPRNet》

热门文章

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