用不到 30 行 Python 代码实现 YOLO

用不到 30 行 Python 代码实现 YOLOYou Only Look Once 是一个实时对象检测算法 它避免了在生成区域建议上花费太多的时间 它不能完美地定位物体 而是优先考虑速度和识别 像 faster R CNN 这样的架构是准确的 但是模型本身相当复杂

大家好,欢迎来到IT知识分享网。

“You Only Look Once”是一个实时对象检测算法,它避免了在生成区域建议上花费太多的时间。它不能完美地定位物体,而是优先考虑速度和识别。

像 faster R-CNN 这样的架构是准确的,但是模型本身相当复杂,有多个输出,每个输出都是潜在的错误来源。一旦接受训练,他们仍然没有足够的速度来实时运行。

设想一辆自动驾驶汽车看到这条街道。对于一辆自动驾驶汽车来说,能够探测到周围物体的位置是至关重要的,比如行人、汽车和交通灯。最重要的是,这种检测必须在接近实时的情况下进行,这样汽车才能安全行驶在街道上。汽车并不总是需要知道所有这些物体是什么?它只是需要需要知道,千万不要撞到这些物体,另外,它也确实需要识别红绿灯、自行车和行人,以便能够正确遵守道路规则。在下面的图中,我使用YOLO算法来定位和分类不同的对象,有一个定位每个对象的包围框和相应的类标签。

用不到 30 行 Python 代码实现 YOLO

动态的YOLO

很显然,下一个问题就是,YOLO的运行原理是什么?

假设我们有一个CNN,它被训练来识别几个类,包括交通灯、汽车、人和卡车。我们给了它两种类型的锚盒,一种高的和一种宽的,这样它就可以处理不同形状的重叠对象。一旦CNN经过训练,我们现在可以通过输入新的测试图像来检测图像中的物体。

用不到 30 行 Python 代码实现 YOLO

设定神经网络

什么是 anchor box ?YOLO可以很好地工作于多个对象,其中每个对象都与一个网格单元关联。但是在重叠的情况下,一个网格单元实际上包含两个不同对象的中心点,我们可以使用 anchor box 来允许一个网格单元检测多个对象。

用不到 30 行 Python 代码实现 YOLO

动态Anchor Boxes

什么是非极大抑制(NMS)?

YOLO使用非极大抑制(NMS) 仅保留最佳边界框。 NMS的第一步是删除检测概率小于给定NMS阈值的所有预测边界框。在下面的代码中,我们将此NMS阈值设置为0.6。这意味着将删除检测概率小于0.6的所有预测边界框。

用不到 30 行 Python 代码实现 YOLO

然后选择PC值最高的边界框,并删除与此太相似的边界框。它将重复此操作,直到每个类的所有非最大边界框都被删除为止。最终的结果将如下图所示,我们可以看到黄色已经有效地检测到了很多物体在图像中比如这样的一辆车和一个人。雷锋网雷锋网雷锋网

用不到 30 行 Python 代码实现 YOLO

YOLO物体检测

现在您已经了解了YOLO的工作原理,您可以看到为什么它是当今使用最广泛的对象检测算法之一。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/160064.html

(0)
上一篇 2024-12-02 16:00
下一篇 2024-12-02 16:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信