基于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要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
随机推荐
- CF1934B Yet Another Coin Problem 题解
CF1934B Yet Another Coin Problem 题解 题意 目前有 \(5\) 种硬币,面值分别为 \(1,3,6,10,15\).给你一个数字 \(n\),求出可以凑出 \(n\) ...
- Cloudflare教程:如何注册账户、购买域名、开启免费CDN服务?
Cloudflare介绍 什么是Cloudflare Cloudflare是一家总部位于旧金山的美国跨国科技企业,以向客户提供基于反向代理的内容分发网络(CDN)及分布式域名解析服务为主要业务. 目前 ...
- python adb 安卓app性能测试
主要是进行cpu.内存.冷启动.热启动.流量.电量的监测 可获取到相关数据,同竞类产品对比,或者同版本对比 cpustatus adb命令:adb shell "dumpsys cpuinf ...
- SQL提高查询性能的几种方式
创建索引,提高性能 索引可以极大地提高查询性能,其背后的原理: 索引是的数据库引擎能够快速的找到表中的数据,它们类似于书籍的目录,使得你不需要逐页查找所需要的信息 索引能够帮助数据库引擎直接定位到所需 ...
- 对比python学julia(第三章:游戏编程)--(第四节)捕鱼达人(5)
4.3. 编程实现 (续上) 3. 实现射击捕鱼 在第 3 个阶段,将按照"编程思路"中介绍的射击捕鱼的算法进行编程,实现让玩家操控大炮射击捕鱼.在"bydr&qu ...
- ArcGIS for Android入门(Java):初体验
准备工作 开发工具:Android Studio 环境:jdk 11 (首次接触安卓开发,可能有的地方不太对,还请给位大佬多多指点) 项目搭建 打开Android Studio,点击New Proje ...
- mybatis-plus系统化学习之查询专题
1.背景 查询在实际生产中用得最多,也最灵活. 2.查询案例 表结构: CREATE TABLE `sys_user` ( `id` int(32) NOT NULL AUTO_INCREMENT C ...
- python学习之---迭代器与生成器
什么是迭代器 可迭代对象: 可以通过for循环来实现遍历,例如list.string.dict 迭代器: 不仅可以使用for循环,还可以使用next()方法.__iter__() next():获取容 ...
- 新版的Django Docker部署方案,多阶段构建、自动处理前端依赖
前言 前几天的文章中,我们已经把使用 pdm 的项目用 docker 搞定了,那么下一步就是把完整的 DjangoStarter v3 版本用 docker 部署. 现在不像之前那么简单直接一把梭了, ...
- 2023上海理工大学校内选拔赛A-D题
前言 不要在意标题,既然是随记,就随性点() 今天参加了2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛)_ACM/NOI/CSP/CCPC/ICPC算法编程 ...