安全软件亚搏在线博客
作者:
德米特里巴格

谷歌
获取博客新闻稿

交付人饲料燃烧器

关于FMEγ1月23日,二千零一十九γDmitri Bagh

计算机视觉

FME 2019可以识别图像中的物体,多亏了一套新的计算机视觉变压器。以下是如何训练FME识别大量输入光栅数据中的自定义对象,使用停车标志的可下载示例。

你在这张照片上看到了什么?你可能更困惑的是这个问题而不是图像-你在这里看到一只狗,为什么我要问这么一个小问题?

我们很容易看到图像上的物体,它们只是不同颜色像素的组合。我们的大脑能很好地理解这些组合。

教机器在图像上找到物体是一个复杂的过程,但是在过去的几十年里,在计算机视觉领域发生了大量的研究。目前,专门的软件库能够完成人类视觉系统可以完成的许多任务,比如物体识别和识别,状态检测,文本阅读,等等。

现在,使用FME 2019,你也可以尝试你的教学天赋,展示你最喜欢的程序如何识别狗,猫,或者是图像上的路标。这听起来令人兴奋吗?让我们深入研究细节。

训练目标识别的FME

在引擎盖下,FME使用OpenCV,计算机视觉和机器学习软件库。FME 2019,我们实现了目标检测功能,它被包装成RasterObjectDetector*变压器系列:

这里的机器学习的理念是为程序提供训练数据照片,在这种情况下,我们将确定我们感兴趣的对象。我们还将向FME展示那些没有我们要找的对象的照片。程序,在研究了数据之后,将学会在培训期间从未使用过的新照片上决定是否存在物体。

教机器识别物体的过程有点类似于教幼儿认识世界:“这是一只猫,这是只猫,是的,这是一只猫,也是。不,这不是猫。”

RasterObjectDetector Transformer为人脸提供了一些预定义的检测模型,身体部位,猫,还有其他一些用途,但我们自己培训这个模型,认识到一些适用于地理空间产业的东西,以便结果能够出现在地图上,这将是非常有趣的。

示例:识别停车标志

实际上,找到合适的数据集可能是最大的问题。大多数人没有他们想要检测的物体的成百上千的图像(除非是他们最喜欢的动物的图片集)。

我有500张FME-COIN号在2016年的比赛中,但是,在认识到这一宝贵的FME大事记方面没有太多的实用性。

另一个好的图像来源是视频。一次录制可以提供成百上千张图像,如果他们有什么有趣的地方,我们可以尝试提取它。一年前,当我用FME做了很多视频实验时,我开车时拍了一些录像。我还记录了这些旅程中的GPS轨迹,所以那里有一个地理空间部分,还有什么比在沿途发现停车标志更令人兴奋的呢?(嗯,事实上,很多事情会更令人兴奋,但停车标志是出现在地图上的合乎逻辑的候选标志。)

我发现了一个很好的停车标志训练数据集在这里.它包括100张带有停车标志(正面)的道路场景照片,以及100张类似的没有路标的道路照片(底片)。有了我场景中所有必要的组件,我可以教FME识别新物体。

制备

第一步:绘制指示对象的矩形

最初的部分是,说实话,无聊乏味。我必须浏览100张图片,在每个停车标志周围画一个矩形。FME 2019附带一个名为opencv_annotation.exe(opencv库的一部分)的实用程序,它从命令行运行,并提供一个简单的图形用户界面,用于指定照片上一个符号(或多个符号)的位置。实用程序位于FME 2019安装的plugins\opencv\folder中。

这个工具非常易怒,要想做出正确的命令行需要注意。下面是一个工作命令行的示例:

c:\apps\fme2019\plugins\opencv\opencv\u annotation.exe--annotations=“c:\temp\stopsigndataset\annotations.txt”-images=“c:\temp\stopsigndataset\positive\”--maxwindowheight=1000

“annotations”参数指示输出文件的位置。“图像”指定带有正面照片的文件夹。最后一个参数表示显示图像的最大高度,这对高分辨率照片很有用。

这项工作的结果是一个注释文件,其中包含图像的名称(请注意,指向图像的路径必须相对于注释文件–您可能需要在第二步之前编辑该文件)以及它们上符号的像素坐标:

阳性\1.JPG 1 217 2 114 110阳性\10.JPG 1 288 352 552 546阳性\11.JPG 1 330 60 404 418阳性\38.JPG 2 511 64 58 70 849 199 146 147

第二步:准备培训数据集

下一步,我们为培训准备数据。RasterObjectDestectorSamplePreparer使用带和不带标志的照片,以及用于创建两个实际将参与培训的新文件的注释文件——准备好的阳性文件和背景描述文件。

第三步:培训

培训的最后一步包括将这些文件发送到RasterObjectDetectionModelTrainer,并设置培训模型类型(HAAR或LBP)的参数。阶段数,并行性和其他一些参数。“阶段数”参数增加了处理数据集所需的时间。其值设置为20,我们的数据集培训几乎是即时的,鉴于24岁,大约花了30分钟。将值设置为更高的数字会导致非常长的处理时间,但没有太大的改进。

输出是一个XML文件,这是一个经过训练的模型,它足够智能地检测照片上的停车标志。

分析

最令人兴奋的部分是分析本身。现在我们可以把我们的照片给FME,看看它能处理得多好。

把一段视频分解成帧,我使用系统调用者,哪个运行ffmpeg程序(查看有关使用FME处理视频的博客文章)对于jpeg图像,将图像质量设置为高质量(qscale:v 2参数)很重要,使用有损压缩算法。

“ffmpeg.exe”-i“c:\temp\video\drive.mp4”-qscale:v 2-vf fps=1“c:\temp\images\img_5d.jpg”

图像可以直接进入RasterObjectDetector,它将尝试查找对象。

如果找到一个物体,变压器在其周围放置一个矩形,这就是变压器的输出。

提高产量

主要目标是:FME识别出大多数照片上的停车标志。我选择的时间不是收集数据的最佳时间,因为在日落时拍摄的照片没有给标志提供清晰的对比图片,因此,在中午左右或阴天下开车应该会有更好的结果。没有假阳性,有时会发生。在这种情况下,将“minimum number of neighbors”参数设置为更高的值将减少错误的数量(也可能返回更少的正确结果)。

为了从这个过程中获得一些真正的价值,很高兴知道所有这些识别标志的位置。为此,我用我的GPS航迹.有关工作流的详细信息,亚搏在线检查关于视频的博客文章,但主要的想法是基于视频制作的时间,我们可以计算每帧拍摄的时间,并将其与两个最近的GPS航路点(前后)匹配。然后插入位置。当多次检测到一个标志时,我们可以通过测量检测到的多边形的面积来选择最接近其实际位置的图像——最大的多边形比较小的多边形更接近标志位置。

过程的最后一步是在网络地图.我谈到了如何用FME和SpealtJS库创建简单的网络地图。在Web浏览器中可视化地理空间数据的工具“网络研讨会。简而言之,每个功能都为自己编写代码片段,然后用Aggregator和AtttributeCreator,FME创建完整的HTML文件。这是整个过程的结果。

自己试试

工作空间,训练识别停车标志的模型,GPS轨道,从视频中提取的图像可用于下载在FME集线器上。请注意,培训模板(stopsignmodeltrainer.fmwt)包含在主模板stopsigndetector.fmwt中。

FME社区的作用亚搏国际在线官网

快速有效部署这项技术的主要障碍之一是需要大量的阳性数据集,理想地,同样看起来是阴性的,培训FME。不再需要教FME停止标志是什么样子的-我的培训模型对每个人都可用-下载,试试看,让我知道结果(或者重复整个过程,通过建立一个比我的模型更可靠的模型,也许能成为更好的老师)。但有,当然,FME用户希望在他们的图像中找到更多的对象。

一起,FME社区可以通亚搏国际在线官网过培训FME来识别更多的路标,从而扩大其对世界的了解,屋顶,极点,船舶,或者卡通人物。所以如果你有一个好的数据集,可以训练FME来检测新的物体,把你的模型和世界上的每一个FMER分享怎么样?创建一个包含培训模型的FME工作区模板(*.fmwt),并上载到FME集线器.

我认为目标检测在FME 2019中是非常好的新功能。不像其他变压器,这个新的变压器系列需要一些手工准备,但这种解决方案在许多领域的有效性是巨大的。你对FME应该能够检测到什么有什么想法吗?你想用你自己的数据集来训练FME吗?让我们知道你想做什么样的侦查工作!