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实现目标检测的更多相关文章

  1. #Deep Learning回顾#之基于深度学习的目标检测(阅读小结)

    原文链接:https://www.52ml.net/20287.html 这篇博文主要讲了深度学习在目标检测中的发展. 博文首先介绍了传统的目标检测算法过程: 传统的目标检测一般使用滑动窗口的框架,主 ...

  2. AAAI2019 | 基于区域分解集成的目标检测 论文解读

    Object Detection based on Region Decomposition and Assembly AAAI2019 | 基于区域分解集成的目标检测 论文解读 作者 | 文永亮 学 ...

  3. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  4. TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程

    运行步骤 1.从 YOLO 官网下载 YOLOv3 权重 wget https://pjreddie.com/media/files/yolov3.weights 下载过程如图: 2.转换 Darkn ...

  5. 【目标检测】基于传统算法的目标检测方法总结概述 Viola-Jones | HOG+SVM | DPM | NMS

    "目标检测"是当前计算机视觉和机器学习领域的研究热点.从Viola-Jones Detector.DPM等冷兵器时代的智慧到当今RCNN.YOLO等深度学习土壤孕育下的GPU暴力美 ...

  6. [OpenCV实战]7 使用YOLOv3和OpenCV进行基于深度学习的目标检测

    目录 1 YOLO介绍 1.1 YOLOv3原理 1.2 为什么要将OpenCV用于YOLO? 1.3 在Darknet和OpenCV上对YOLOv3进行速度测试 2 使用YOLOv3进行对象检测(C ...

  7. 第十九节、基于传统图像处理的目标检测与识别(词袋模型BOW+SVM附代码)

    在上一节.我们已经介绍了使用HOG和SVM实现目标检测和识别,这一节我们将介绍使用词袋模型BOW和SVM实现目标检测和识别. 一 词袋介绍 词袋模型(Bag-Of-Word)的概念最初不是针对计算机视 ...

  8. 第十八节、基于传统图像处理的目标检测与识别(HOG+SVM附代码)

    其实在深度学习中我们已经介绍了目标检测和目标识别的概念.为了照顾一些没有学过深度学习的童鞋,这里我重新说明一次:目标检测是用来确定图像上某个区域是否有我们要识别的对象,目标识别是用来判断图片上这个对象 ...

  9. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  10. (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

随机推荐

  1. FusionAccess liteAD

    回车回车 fusion access完成 进入access网页 https://IP:8443进入web网页 输入用户名:admin:密码:IaaS@PORTAL-CLOUD8! 输入完账号密码后改密 ...

  2. PyCharm设置背景主题

    PyCharm修改主题的路径: File->Settings->Appearance &Behavior->Appearance 1.  Intellij:白色 2. Dar ...

  3. 如何在mysql中删除重复数据

    #分组去重法 讲重复的列进行分组 之后用min(id) #取其中最小的保留,其余的删除 -- 步骤 1: 创建临时表,保存每组最小的ID CREATE TEMPORARY TABLE tmp_keep ...

  4. gpg 密钥的导入、导出

    参考: gpg 密钥生成.导入.导出.自动输入密码 How do I delete secret subkeys correctly? 注意: 本文不对GPG的操作做详细介绍,有深入了解者自行参考:g ...

  5. rllab —— 强化学习 算法模块库 (环境配置失败!!!) (已经不进行维护更新,已被淘汰,由于一些老旧代码还有可能关联因此fork了下,复制了份原始项目)

    代码地址: https://gitee.com/devilmaycry812839668/rllab 由于官方代码地址在github上,外网偶尔会出现网络连接中断的问题因此在国内代码库中fork了一个 ...

  6. linux工具grep的使用心得笔记

    grep作为linux管理中常用的三大工具之一(grep.awk.sed),其功能十分强大,因此难以对其进行全面的使用介绍,因此本文只作为个人学习的笔记之用. grep的用处: 在文本中匹配要查询的字 ...

  7. Spring Boot Admin对Springboot服务进行监控

    1.背景 大纲 Spring Boot Admin 是一个管理和监控Spring Boot 应用程序的开源软件.每个应用都认为是一个客户端,通过HTTP或者使用 Eureka注册到admin serv ...

  8. localAI: 编译步骤说明

    懒人通道 官网提供了懒人包,使用的时候不需要关注整个打包流程,,下面是官方的cuda示例,当然官方提供可选项很多,Available: cublas, openblas, clblas, metal, ...

  9. Redis相关总结

    一.缓存雪崩.缓存穿透 现象:缓存雪崩:大量缓存同时过期.缓存中间件宕机 缓存穿透:访问不存在key.缓存过期解决:缓存雪崩:设置不同过期时间 缓存穿透:不存在key也存入缓存.使用布隆过滤器.使用分 ...

  10. win指令学习收集

    要执行多句,需要用到逻辑判断 1 & 2 1成不成功都会执行2 1 && 2 1成功才会执行2 1 || 2 1不成功才会执行2