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

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

这是小编准备的python学习资料,需要的加群:696541369即可获取!

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

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

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

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

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

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

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

简单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目标识别检测!

猜你喜欢

转载自blog.csdn.net/weixin_44138053/article/details/88638110
今日推荐