重磅:TensorFlow实现YOLOv3(内含福利)

YOLO官网:YOLO: Real-Time Object Detection keras-yolo3:https://github.com/qqwweee/keras-yolo3 论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf 知乎话题:如何评价YOLOv3: An Incremental Improvement? Author:qqwweee

往期回顾

YOLOv3:你一定不能错过

OpenCV实战:人脸关键点检测(FaceMark)

PS:往下拉,文末有福利!

前戏

前些天,Amusi翻译了YOLOv3论文,大家也好评如潮。而Amusi本人对YOLOv3也很感兴趣,于是配置了Windows版的DarkNet,已经跑出了C++版本的YOLOv3,速度要比Python版的快一些。C++版本的DarkNet,利用Visual Studio打开,实在很方便,可以直接阅读算法的源码(感觉可以搞事情了)。

当然这也不能满足我,我还配置了PyTorch版的YOLOv3,最近在github上看见基于TensorFlow和Keras复现的YOLOv3,简直太帅了(给大佬们打call)。

今天就重点向大家介绍TensorFlow版本的YOLOv3安装和测试教程

环境

硬件

  • intel CORE i5
  • GTX 960m(2G显存)
  • 12G 内存

软件

  • TensorFlow 1.4
  • Keras
  • h5py
  • OpenCV3.x

注:大家不要被这配置所“吓”到,因为Amusi的十八线过气笔记本还是能打的,比如来测试跑跑。重点是TensorFlow建议升级到1.4及以上,但不推荐最新的,因为可能还要安装CUDA9.0。注意还要额外安装h5py和OpenCV3.x!

这里简单介绍一下安装h5py和OpenCV3.x的命令

1pip install h5py
2pip install opencv-contrib-python

注:其实安装OpenCV,使用pip install opencv-python即可,但Amusi超级喜欢使用pip install opencv-contrib-python,嘻嘻,多一个contrib,意义大有不同。感兴趣的童鞋,可以自行百度。

安装

1 下载 keras-yolo3库

首先,选择一个路径,打开你的cmd命令提示符(对于Windows)或者终端(Linux/Mac),并使用git命令下载keras-yolo3库:

1git clone https://github.com/qqwweee/keras-yolo3.git
2cd keras-yolo3

2 下载已训练好的权重yolov3.weights

大家可以上YOLO的官网上下载yolov3.weights,但可能受资源限制问题,下载速度会受限。由于该文件大概236.MB,所以贴心的Amusi已经将yolov3.weights上传到百度云上了。如果你需要,可以在CVer公众号后台回复:yolov3.weights即可。注意回复内容一定要准确哦,是yolov3.weights

下载好yolov3.weights,然后将此文件放在path/keras-yolo3路径下。

3 yolov3.weights格式转换

刚才下载好的yolov3.weights并不是TensorFlow/Keras所支持的权重格式,因为TensorFlow所支持格式是h5文件

所以这里需要将yolov3.weights进行格式转换,贴心的qqwweee已经在keras-yolo3中写好了转换脚本文件(convert)了,所以大家直接打开你的cmd命令提示符(对于Windows)或者终端(Linux/Mac)输入下述命令即可:

1python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

此时在path/keras-yolo3/model_data中就可以看到新生成的yolo.h5文件:

4 测试

1python yolo.py

此时你的cmd命令提示符(对于Windows)或者终端(Linux/Mac)会提示“Input image filename:”,即需要输入待检测图像的路径。由于原作者并没有提供测试图像,所以Amusi拿了YOLOv3官方提供的测试图像:dog.jpg和person.jpg来测试。

此时输入dog.jpg,按下回车:

等待不到1s,就会见证奇迹!哇塞,这检测结果,很nice...

然后可以继续输入person.jpg,按下回车:

等待不到1s,又见证了奇迹!哇塞,这检测结果,很nice...

等等,你以为这样就结束了么?!

刚才是检测图像,那我们再试一下对视频进行目标检测。

Amusi这里偷点懒,直接使用电脑的摄像头来测试了

1python yolo_video.py

原谅这帧率,啊哈哈,与电脑配置有关......但检测效果还可以,你看teddy bear

5 TODO

聪明的你应该已经注意到,上述教程还只是测试,并没有训练,因为keras-yolo3的原作者qqwweee还没有实现......

如果你已经迫不及待,那么建议你学好TensorFlow,自己来复现论文!这样会有满满的成就感!

原文发布于微信公众号 - CVer(CVerNews)

原文发表时间:2018-04-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏人工智能LeadAI

TensorFlow从0到1丨开篇:Hello TensorFlow !

我以官方文档为主线,开始对TensorFlow的学习。这期间会把我的理解进行持续的输出,作为《TensorFlow从0到1》系列。它不会止于翻译和笔记、语言和工...

44870
来自专栏算法+

pytorch 移动端框架 thnets 附c示例代码

前年年前做一个手机移动端图像识别项目的时候, 先后尝试了mxnet,thnets,caffe,tensorflow. 当时的情况是,mxnet内存管理奇差,内存...

50670
来自专栏阮一峰的网络日志

如何使用 Issue 管理软件项目?

软件开发(尤其是商业软件)离不开项目管理,Issue 是最通用的管理工具之一。 本文介绍 Issue 的基本用法。 ? 一、Issue 是什么? Issue 指...

61750
来自专栏人人都是极客

第三课:把tensorflow,模型和测试数据导入Android工程

关于Android项目的创建这里就不做赘述了,我们直接进入主题,看下如何把机器学习库和训练的模型导入一个安卓应用中。 导入 Inference Interfac...

398120
来自专栏IT笔记

Dubbo负载均衡配置

在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用。 负载均衡扩展 (1) 扩展说明: 从多个服务提者方中选择一个进行调用。 (2) 扩...

50450
来自专栏人工智能

第三课:把tensorflow,模型和测试数据导入Android工程

关于Android项目的创建这里就不做赘述了,我们直接进入主题,看下如何把机器学习库和训练的模型导入一个安卓应用中。 导入 Inference Interfac...

28580
来自专栏FreeBuf

使用Python和Tesseract来识别图形验证码

各位在企业中做Web漏洞扫描或者渗透测试的朋友,可能会经常遇到需要对图形验证码进行程序识别的需求。很多时候验证码明明很简单(对于非互联网企业,或者企业内网中的应...

82850
来自专栏人工智能头条

实战:从0搭建完整 AI 开发环境写出第一个 AI 应用

那么,作为多年的程序员,或者准备着成为新一代程序员的读者们,该如何为智能时代做好准备,成为 AI 时代的程序员呢?

52250
来自专栏desperate633

comsol快速入门教程

我自己参照官网的教程,写了个比较通俗易懂的入门教程,字多图多慎看(大三的时候写的)。

18950
来自专栏安恒信息

基于大数据分析的异常检测方法及其思路实例

1 概述 随着人类社会信息化程度的不断深入,信息系统产生的数据也在呈几何级数增长。对这些数据的深入分析可以得到很多有价值的信息。由于数据量太大以及数据属性的多样...

71560

扫码关注云+社区

领取腾讯云代金券