深度学习下的目标检测算法——TensorFlow 2.0下的YOLOv3实践

本文介绍了在TensorFlow 2.0环境下对YOLOv3目标检测算法的实践,包括修改qqwweee/keras-yolo3项目以适配TensorFlow 2.0,解决接口不兼容问题,以及对识别结果的分析,探讨了性能优化策略。
摘要由CSDN通过智能技术生成

本文主要包含如下内容:

  • 修改qqwweee/keras-yolo3(目标检测算法YOLOv3的一个Keras版本的优秀实现),将其修改为tf.keras为主导的,并修订不兼容的接口和逻辑,使其支持TensorFlow 2.0版本
  • 实践修改后的YOLOv3算法
  • 对实践结果的简单分析

修改后的项目 GitHub:
tf2-keras-yolo3 (https://github.com/AaronJny/tf2-keras-yolo3)

转载请注明来源:https://blog.csdn.net/aaronjny/article/details/103658254


前言

说到目标检测,YOLO系列算法可以算是颇负盛名。目标检测相关的算法有不少,而YOLO因其识别速度快而出名,常被用于实时目标检测场景中。今天,我们就来实践一下YOLOv3算法。

因为YOLO原理我是清楚的,又觉得实现起来太麻烦了,所以本来想着就不自己造轮子了,直接从GitHub上找一个优秀的开源实现,拜读一下代码,然后调试跑通结束。但没想到,最后还是得动手写(或者说改?)代码……

img

因为我主要使用的深度学习框架是TensorFlow和Keras,所以直接去找了算法的Keras实现。然后就找了qqwweee/keras-yolo3,GitHub上4928 star。先来读一下它的README文件:

image.png

文档上说的很清楚,那就跟着Quick Start来,首先下载预训练好的权重文件,然后通过convert.py脚本构建模型,并将权重转成Keras版本的。到这里都没什么问题,然而当尝试执行测试脚本yolo_video.py时,问题出现了:

image.png

为了测试算法,我随便从网上下载了一个视频,然后调用脚本进行测试。根据错误提示来看,是因为我用的是TensorFlow 2.0,而TensorFlow 2.0与1.x版本的差别很大,删减、调整了很多接口,并且由于Eager execution的出现,编码习惯和逻辑也有所变更,故无法兼容。看了一下README后面的内容,能看到作者当时的测试环境如下:

image.png

这个项目是很久之前写的了,上一次更新已经是一年前了,所以与新版本的框架无法兼容也在意料之中。我使用了一个和作者相同的虚拟环境进行测试,是没有问题的,正常可用。但大家毕竟要往前走嘛,我也不能换TensorFlow 1.6进行开发,于是就萌生了修改这个项目,让它支持TensorFlow 2.0的想法,顺便也能对YOLOv3的实现有更深的理解。<

  • 31
    点赞
  • 101
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值