基于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要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
随机推荐
- LeetCode860. 柠檬水找零
题目链接:https://leetcode.cn/problems/lemonade-change/description/ 题目叙述: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元.顾客排队购买你的 ...
- mybatis源码配置文件解析之五:解析mappers标签(解析class属性)
在上篇文章中分析了mybatis解析mapper标签中的resource.url属性的过程,<mybatis源码配置文件解析之五:解析mappers标签(解析XML映射文件)>.通过分析可 ...
- ceph 002 ceph架构 ceph数据存储过程 ceph集群安装
ceph 架构 rgw:实现对象存储 (web的url和swift,s3接口) mon:集群的访问入口 (集群,同时工作,得同步信息.每个mon的ip不一样) mgr:监控 信息收集 web 界面 ( ...
- 【AI模型】PPT生成
一.天工AI https://www.tiangong.cn/ 先对话进行提纲生成,然后可以编辑提纲,再进行PPT生成 生成完毕后,可以直接点击导出下载 二.星火讯飞 讯飞智文 生成的PPT相比天工的 ...
- 【SpringSecurity】01 授权、认证、注销
[前提情要] Security学习地址: https://www.bilibili.com/video/BV1KE411i7bC 狂神的微信笔记: https://mp.weixin.qq.com/s ...
- NVIDIA人形机器人AI套件:NVIDIA Isaac Manipulator 和 NVIDIA Isaac Perceptor
IsaacManipulator 为机械臂提供了卓越的灵活性和模块化AI功能,并提供了一系列强大的基础模型和GPU加速库.它提供了高达80倍的路径规划加速,零样本感知提高了效率和吞吐量,使开发者能够实 ...
- jax中对单步操作的缓存对性能造成的影响
代码: import jax.numpy as jnp from jax import grad, jit, vmap from jax import random def selu(x, alpha ...
- 分享某Python下的mpi教程 —— A Python Introduction to Parallel Programming with MPI 1.0.2 documentation
如题: 无意中发现了一个Python下的mpi教程<A Python Introduction to Parallel Programming with MPI 1.0.2 documentat ...
- 在国产超算平台上(aarch64架构)安装pytorch-cuda失败,究其原因竟是官方未提供对应的cuda版本——pip方式和conda方式均无法获得相应cuda版本
最近在国产超算平台上安装pytorch,但是怎么弄都会报错: raise AssertionError("Torch not compiled with CUDA enabled" ...
- 在WSL Ubuntu中设置sshd自启动
参考: https://blog.csdn.net/android_cai_niao/article/details/128490566 ------------------------------- ...