基于Keras-YOLO实现目标检测
Keras-YOLO 3项目使用Python语言实现了YOLO v3网络模型,并且可以导入Darknet网络预先训练好的权重文件信息直接使用网络进行目标识别。
1. 下载Keras-YOLO 3项目
执行如下命令下载Keras-YOLO 3项目代码:
git clone https://github.com/qqwweee/keras-yolo3.git
2. 转换Darknet的weights文件格式为Keras支持的格式
将上一小节中从Darknet官方网站下载的权重文件yolov3.weights放到Keras-YOLO 3项目根目录下,执行如下命令将Darknet的权重文件转换为Keras-YOLO 3支持的.h5格式:
python3 convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
执行成功会输出类似如图7.19所示的信息和结果。

图7.19 输出结果
执行完成后,Keras-YOLO 3项目的目录结构如图7.20所示。

图7.20 Keras-YOLO 3项目的目录和文件结构
其中,各选项说明如下:
- yolo.py实现了主要的使用功能。
- yolo_video.py是整个项目的入口文件,调用了yolo.py文件。
- model.py实现了YOLO v3算法框架。
- utils.py封装了实现过程中需要的应用功能。
- kmeans.py用于获取数据集的全部锚点边界框(Anchor Box),通过K-Means算法将这些边界框的宽和高聚类为9类,获取9个聚类中心,面积从大到小排列,作为9个锚点边界框(Anchor Box)。
- train.py用于训练自己的数据集。
- coco_annotation.py和voc_annotation.py用于在训练COCO以及VOC数据集时生成对应的Annotation文件。
- convert.py用于将Darknet中YOLO v3的.cfg模型文件和.weights权重文件转换为Keras支持的.h5文件,并存放于model_data子目录下。
- font子目录中包含一些字体,model_data子目录中包含COCO数据集和VOC数据集的类别及相关的Anchors文件。
- yolov3.weights文件是从Darknet下载的预先训练好的权重文件。
- model_data/yolo.h5是根据yolov3.weight文件转换生成的Keras格式的权重文件。
3. 执行YOLO目标检测任务
将待检测的输入文件提前准备在Keras-YOLO 3项目根目录下,本案例中我们依然使用了上一小节使用的person.jpg输入文件,然后在Keras-Yolo 3项目根目录下执行如命令启动YOLO v3模型的目标检测任务:
python3 yolo_video.py --image
yolo_video.py更详细的使用说明如下:
usage: yolo_video.py [-h] [--model MODEL] [--anchors ANCHORS]
[--classes CLASSES] [--gpu_num GPU_NUM] [--image]
[--input] [--output]
positional arguments:
--input Video input path
--output Video output path
optional arguments:
-h, --help show this help message and exit
--model MODEL path to model weight file, default model_data/yolo.h5
--anchors ANCHORS path to anchor definitions, default
model_data/yolo_anchors.txt
--classes CLASSES path to class definitions, default
model_data/coco_classes.txt
--gpu_num GPU_NUM Number of GPU to use, default 1
--image Image detection mode, will ignore all positional arguments
输入待检测的图像文件名后,输出结果如图7.21所示。

图7.21 Keras-YOLO 3的输入和输出结果
输出结果显示已经成功检测出的目标数量、置信度、预测框的位置等信息,与Darknet网络一样,也会同时以可视化的图形方式显示检测结果,如图7.22所示。

图7.22 Keras-YOLO 3生成的检测结果
本文节选自《Python深度学习原理、算法与案例》,内容发布获得作者和出版社授权。

基于Keras-YOLO实现目标检测的更多相关文章
- #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)
原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...
- AAAI2019 | 基于区域分解集成的目标检测 论文解读
Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程
运行步骤 1.从 YOLO 官网下载 YOLOv3 权重 wget https://pjreddie.com/media/files/yolov3.weights 下载过程如图: 2.转换 Darkn ...
- 【目标检测】基于传统算法的目标检测方法总结概述 Viola-Jones | HOG+SVM | DPM | NMS
"目标检测"是当前计算机视觉和机器学习领域的研究热点.从Viola-Jones Detector.DPM等冷兵器时代的智慧到当今RCNN.YOLO等深度学习土壤孕育下的GPU暴力美 ...
- [OpenCV实战]7 使用YOLOv3和OpenCV进行基于深度学习的目标检测
目录 1 YOLO介绍 1.1 YOLOv3原理 1.2 为什么要将OpenCV用于YOLO? 1.3 在Darknet和OpenCV上对YOLOv3进行速度测试 2 使用YOLOv3进行对象检测(C ...
- 第十九节、基于传统图像处理的目标检测与识别(词袋模型BOW+SVM附代码)
在上一节.我们已经介绍了使用HOG和SVM实现目标检测和识别,这一节我们将介绍使用词袋模型BOW和SVM实现目标检测和识别. 一 词袋介绍 词袋模型(Bag-Of-Word)的概念最初不是针对计算机视 ...
- 第十八节、基于传统图像处理的目标检测与识别(HOG+SVM附代码)
其实在深度学习中我们已经介绍了目标检测和目标识别的概念.为了照顾一些没有学过深度学习的童鞋,这里我重新说明一次:目标检测是用来确定图像上某个区域是否有我们要识别的对象,目标识别是用来判断图片上这个对象 ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
随机推荐
- nginx灰度发布、网站限速和防盗链
一.灰度发布(金丝雀发布) 灰度发布时使用比较平稳的过渡方式升级或者替换产品项目的方法统称 主要作用 及时发现项目问题 尽早获取用户反馈的信息,以改进产品 如果项目产生问题,可以将问题影响控制到最小范 ...
- emojiCTF2024
emojiCTF2024 WEB http 题目: 思路: 修改 UA 头为 EMOJI_CTF_User_Agent_v1.0:User-Agent: EMOJI_CTF_User_Agent_ ...
- tar命令备份压缩7天生产日志
[root@localhost logs]# cat tar_7day.sh #!/bin/bash #压缩日期[当天的前一天] todayStamp_1=`date -d "-1 day& ...
- 【C3】05 层叠与继承
本文旨在让你理解CSS的一些最基本的概念 --层叠.优先级和继承-- 这些概念决定着如何将CSS应用到HTML中,以及如何解决冲突. 尽管与课程的其他部分相比,完成这节课可能看起来没有那么直接的相关性 ...
- 【Git】05 分支管理
查看所有分支: git branch Git将列出所有分支,如果是当前使用的分支,前面会加一个星号表示 创建一个新的分支: git branch 分支名称 创建一个分支并且指向该分支: git che ...
- 国产计算框架mindspore在gpu环境下1.3.0版本的分布式计算组件安装 ——(openmpi 和 nccl 的安装,配置,示例代码的运行)
前文已经给出1.3.0gpu版本的编译及安装,本文在此基础上进行分布式组件的安装,前文信息参看: 国产计算框架mindspore在gpu环境下编译分支r1.3,使用suod权限成功编译并安装,成功运行 ...
- H5页面\PC端实现QQ客服功能
1.背景 很多应用都有在线客服,最简单是实现就是利用人们常用的QQ 2.实现 步骤一:授权QQ通讯组件(普通QQ都是可以的) 授权链接:https://shang.qq.com/v3/widget.h ...
- 神经网络之卷积篇:详解边缘检测示例(Edge detection example)
详解边缘检测示例 卷积运算是卷积神经网络最基本的组成部分,使用边缘检测作为入门样例.在这个博客中,会看到卷积是如何进行运算的. 在之前的博客中,说过神经网络的前几层是如何检测边缘的,然后,后面的层有可 ...
- 利用 Amazon EMR Serverless、Amazon Athena、Apache Dolphinscheduler 以及本地 TiDB 和 HDFS 在混合部署环境中构建无服务器数据仓库(一)云上云下数据同步方案设计
引言 在数据驱动的世界中,企业正在寻求可靠且高性能的解决方案来管理其不断增长的数据需求.本系列博客从一个重视数据安全和合规性的 B2C 金融科技客户的角度来讨论云上云下混合部署的情况下如何利用亚马逊云 ...
- 旧笔记本安装Win8.1实录
昨天发现一台尘封已久的Lenovo ideapad Y550,给它装上了Windows 10 然后第二天系统挂掉了 挂的原因是半夜万恶之源Windows更新开始造孽了 刚好没电 文件全坏了 真 解除封 ...