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 项目的目录和文件结构
其中,各选项说明如下:
l yolo.py 实现了主要的使用功能。
l yolo_video.py 是整个项目的入口文件,调用了yolo.py 文件。
l model.py 实现了YOLO v3 算法框架。
l utils.py 封装了实现过程中需要的应用功能。
l kmeans.py 用于获取数据集的全部锚点边界框(Anchor Box ),通过K-Means 算法将这些边界框的宽和高聚类为9 类,获取9 个聚类中心,面积从大到小排列,作为9 个锚点边界框(Anchor Box )。
l train.py 用于训练自己的数据集。
l coco_annotation.py 和voc_annotation.py 用于在训练COCO 以及VOC 数据集时生成对应的Annotation 文件。
l convert.py 用于将Darknet 中YOLO v3 的.cfg 模型文件和.weights 权重文件转换为Keras 支持的.h5 文件,并存放于model_data 子目录下。
l font 子目录中包含一些字体,model_data 子目录中包含COCO 数据集和VOC 数据集的类别及相关的Anchors 文件。
l yolov3.weights 文件是从Darknet 下载的预先训练好的权重文件。
l 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 深度学习原理、算法与案例》,内容发布获得作者和出版社授权。
