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

72dce571d2db46f696c62bf1cfd3101b

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

f787c4c84be64ca19fd106f8b7daec33

ba23137b14c246e19222deb5dcaeb1d7

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

fa5cf8085ba440f98f0be43b170d8a3d

88d86a46cdc54c71938d3f356e4eba0a

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

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

90904d51933e466cb4d82ee7236069b8

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

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

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

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

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

4、设置NMS值和IOU值

5、进行目标检测

结果如下:

b264c6b162fd4f4295e20a51b95ff668

完整代码:

d1b670878d40494b89763b329e606c9a

1548aa680280405ba6af639a934143cc

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值