Keras YOLOv3源代码下载地址:https://github.com/qqwweee/keras-yolo3
YOLOv3论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf
关于darknet53网络的图像识别,请查看源文件:
keras-yolo3-master\yolo.py
keras-yolo3-master\yolo3\model.py
keras-yolo3-master\yolo3\utils.py
上一周,我们介绍了YOLOv3的目标识别原理,请参考:
这篇文章的主要内容包括:(一)目标检测的核心函数,(二)目标检测流程图,(三)源代码+中文注释。
(一)目标检测的核心函数
YOLOv3的目标检测源代码,核心的函数包括:
detect_image()
generate()
yolo_eval()
yolo_model()
yolo_boxes_and_scores()
yolo_head()
yolo_correct_boxes()
等。
其中,yolo_model()已经在前面的文章中详细介绍过,请参考:
Keras YOLO v3代码详解(一):darknet53网络结构分析+Netron工具
(二)目标检测流程
YOLOv3的目标识别的源代码流程大致如下:
(1)设置缺省值并初始化:
(2)detect_image()将图片缩放成416x416大小,调用yolo_model(),生成13x13、26x26与52x52等3个feature map的输出,对这3个feature map进行预测,调用yolo_eval()函数得到目标框、目标框得分和类别,然后使用Pillow对发现的每一类对象的每一个目标框,绘制标签、框和文字:
(3)在yolo_eval()函数中调用yolo_boxes_and_scores()得到目标框、目标框得分和类别。而在yolo_boxes_and_scores()函数中,先调用yolo_head()函数计算每一个网格的目标对象的中心点坐标box_xy和目标框的宽与高box_wh,以及目标框的置信度box_confidence和类别置信度box_class_probs;然后调用yolo_correct_boxes(),将box_xy, box_wh转换为输入图片上的真实坐标,输出boxes是框的左下、右上两个坐标(y_min, x_min, y_max, x_max):
(4)完整的代码流程图如下图所示:
(三)源代码+中文注释
(3.1)yolo.py
class YOLO(obje