简单30行Python代码让你玩转YOLO目标识别检测!

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

YOLO是一种实时目标检测算法,与faster R-CNN不同的是,YOLO不是过多的注重物体定位的精度,而是着重于速度和物体种类的识别。在实际应用中,实时性是目标检测中非常重要的,例如对于一辆自动驾驶汽车来说,必须达到实时的检测红绿灯、行人和车辆等物体,这样才能安全的在街道上行驶。

学习中遇到问题有不明白的地方,推荐加小编python学习群:700341555内有视频教程 ,直播课程 ,等学习资料,期待你的加入

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!
《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

YOLO算法在CNN的基础上定义网络结构,在使用时,我们可以直接加载其与训练的权重。其网络结构如下:

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!
《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

这里再介绍两个YOLO的重要的概念,一个是anchor boxes,另一个是NMS和IOU。

当在目标检测时,一个网格单元中可能会包含多个不同物体的中心点,即物体处于重叠状态,这是anchor boxes允许一个网格检测多个对象。效果如下图所示:

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

YOLO使用非最大抑制(NMS)来保留最佳边界框。NMS的第一步是删除检测概率小于给定NMS阈值的所有预测边界框。一般我们可以自己设置NMS值。在删除具有低检测概率的所有预测边界框之后,NMS中的第二步是选择具有最高检测概率的边界框,并消除其交叉联合(IOU)值高于给定值的所有边界框。

下面我们将通过一个小例子来实现YOLOv3算法,整个过程除去可视化代码外,整个识别部分代码不超过30行。具体步骤如下:

1、导入函数库,这里我们需要opencv读取图像、matplotlib绘图、utils以及darknet等。

2、读取YOLO网络权重,这样可以避免我们再次定义和训练模型。

3、读取图像并将待标记图像放缩到合适的尺寸

4、设置NMS值和IOU值

5、进行目标检测

结果如下:

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

完整代码:

《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!
《简单30行Python代码让你玩转YOLO目标识别检测!》 简单30行Python代码让你玩转YOLO目标识别检测!

    原文作者:浪里小白龙q
    原文地址: https://www.jianshu.com/p/a7369c9d8f0d
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞