计算机视觉VS人类检测物体大战孰赢?
用计算机视觉检测物体
《梦幻之旅:沃尔多在哪》是美国游戏制造商UBISOFT公司制作的一款冒险游戏,游戏故事讲述的是一个生活中不得意的青年沃尔多,意外的穿越到了另一个空间在此展开了梦幻之旅并以此作为主线,穿插出曲折的故事作为剧情。
我经常和家人朋友一起参加比赛,看看是谁能更快的找到他。不得不说,经过多次的练习,我的游戏表现已经非常好了,它并不像看起来的那么容易,在这张图中,你想要快速找到一个身穿蓝色裤子和条纹衬衫的瘦小家伙是很难的。
你试试看下面这张图,能否快速找到Waldo?你可能会发现,需要花费很长的时间才能勾找到,那么,有没有什么办法可以加速呢?
游戏的重点是速度、焦点和专注。它应该让孩子们主动思考,锻炼他们的大脑肌肉。
但是,如果我告诉你,你不需要这些东西就可以在游戏中取得成功呢!
在游戏中,我们经常听到的就是“重在参与、最重要的就是开心喽!”等内容,但从技术上讲,提出有效策略的人才会是最稳定的赢家。想要成为一个这样的人,你所要做的就是超越其他人。这实际上适用于生活中的大多数事情,在《梦幻之旅:沃尔多在哪》游戏中,其实并没有真正的规则,想要获胜,最重要的一条规则就是,你必须是第一个找到他的人,每次的成功你都可以选择一条不同的道路。
现在的孩子们已经可以接触到这样或那样的技术,也是时候将它用在刀刃上了。关键是,计算机比你要聪明,因为当它们看到一张非常复杂的图片的时候,它们可以立刻看到整件事,并在几秒钟内就找到沃尔多。
我们作为人类却不具备这种处理能力,除非你从根本上将自己的基因修改为异常聪明的天才。(这可能不那么现实了,或者说,就是另一个故事了。)那么无论如何,你的计算机的能力一定是超过了人类的能力。这是怎么发生的?
计算机视觉:可以看到的技术
普通的博客写手对于计算机视觉的想法可能类似于一台拥有超级眼睛的计算机,就像是一个网络摄像头一样在监视着你,但这种想法是错误的。
对象检测(作为计算机视觉的一个分支)实际上是当计算机能够解释数字图像或视频的内容而无需您手动输入该信息时。该技术可以分解该图像的不同部分,并找出存在的对象。这就是面部识别的动力,就像你在iPhoto中的家人和朋友一样,并将犯罪分子与安全镜头相匹配。
计算机视觉不仅能够看到正在发生的事情,而且能够理解它。
YOLO ......但这不是你的想法
YOLO,它是一个实时检测物体的系统。说实话,当我第一次得知YOLO不是“你只活一次”时(YOLO,美语新词,是You Only Live Once的首字母缩略词,意为你只能活一次,应该活在当下,大胆去做。),我很失望,但是一旦我知道真正的YOLO是什么,我保证它会变得有趣和酷炫一百万倍。
该系统不同于经典模型(例如快速R-CNN),因为您不会对图像上的相同区域进行多次预测,而是只通过全卷积神经网络(FCNN)传递数据集一次。
以下是YOLO(V3)模型的工作原理:
- 网格:图像被分为S x S网格(您可以从左侧图像中看到)。这是为了将不同的部分分解,并允许图像作为一个整体来“读取”的内容。如果对象落在网格的中心,则该网格负责检测该对象。
- 边界框:整个图像的整体特征用于确定边界框,它们基本上只是对象所在的轮廓。重要的是要注意它们覆盖图像的每个部分并重叠。它也更可能比网格本身更大。想想一下,你想要找到在床上的某个地方的手机,那么,凸起的轮廓可能就是你的边框了。
- 置信度得分:置信度得分表示模型预测您认为实际存在的程度。它基于宽度、高度以及对象中心相对于单元格边界的位置。这是当你看到床的不同凸起(边界框)的大小,然后将您的手机的大小与凸起的大小进行比较,然后根据具体情况确定您的手机实际的大小。
- 条件类概率:这些是以包含对象的网格单元为条件的概率。使用以前的YOLO模型,每个网格单元只能预测一组类概率。由此,您可以区分不同的对象(参见上图)。但是YOLO V3为每个类使用独立的逻辑分类器。这基本上允许您为同一个对象设置多个标签:计算机找到Waldo,并将其标记为“Waldo”,“人”和“男孩”。
这是一个代码片段,用于收集和解释上面提到的数据(它还说明了对象被检测的速度有多快!):
这只是代码的摘录。我使用YOLO V3编写了一个完整的物体检测模型,你可以在这里找到链接(https://github.com/nathaliejeans/yolo_v3)。
这是模型的架构 - 您可以看到不同的层
操纵数据
由于单一回归,客观性和分类的损失需要单独计算 - 但仍然在同一网络中。通过逻辑回归得到客观分数:1表示边界框和地面实况对象完全重叠(图片实际上是什么)。该模型仅预测此类型的1个边界框,但误差会受到客观性和分类损失的影响。
YOLO(V3)模型还预测了3种不同尺度的方框,以支持尺度变化。这看起来像这样:
为了测试模型,我们必须将条件类概率乘以单个框置信度预测。此方程返回类在框中的概率,以及预测框与对象的匹配程度。
下面是另一段代码摘录,它加载了预先训练过的对象名称类,以及它如何处理写入/注释数字图像的不同帧:
You Only Look Once(YOLO V3)模型的输出如下图所示。很清楚你想从模型中得到什么,以及它如何在不同的应用程序中使用,例如路线图。
现在我希望你明白为什么找Waldo会这么容易!你甚至不需要看两次......
我们为何使用它
- 它被认为是实时的,因为它速度快 - 能够每秒捕获45帧。还有一个更快的版本,更小的架构,可以捕获每秒155帧,但它精度比较低。
- 使用的FCNN可以理解并使用广义对象表示。您可以使用真实世界的图像和艺术作品来使用它并进行训练。
展望未来
这项技术已经过了初步阶段:人们在日常生活中使用计算机视觉。越来越多的技术正在该领域发展,这是令人兴奋的,因为它具有如此多样化的实际应用。
将对象检测软件与语音反馈相结合也是非常强大的。它已经在今天使用,人们只是不知道它的存在。失明的人能够得到他们对周围环境的描述,不得不减少对他们所有其他感觉的依赖,每周7天每天24小时。他们甚至可以开车!虽然,我不确定当我们有自动驾驶汽车时,这是多么重要。
另一个可能的用例是为大型零售店或杂货店的分类、确定和协助库存。医疗诊断也可以从中受益,同时处理外部伤口,骨折、淤青或损伤。但最重要的是,它的技术可以帮助我找到Waldo!
无论如何,这个领域有巨大的潜力,我迫不及待想成为未来的一部分。
让我知道你的想法!
编译出品
来源:https://towardsdatascience.com/can-you-find-waldo-faster-than-a-computer-spoiler-you-cant-ff382e601c31