Skip to content

cainaihui/yolov3_keras

 
 

Repository files navigation

yolo3-keras

yolo3-keras的源码,可以用于训练自己的模型yolov3以及yolov3-tiny

一、环境要求

  • Python: 3.7.4
  • Tensorflow-GPU 1.14.0
  • Keras: 2.2.4

二、快速使用:

  • 1.下载yolov3-keras代码

  • 2.下载yolov3-keras权重文件权重 并将其放入根目录下

  • 3.执行如下命令将darknet下的yolov3配置文件转换成keras适用的h5文件

    python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5

    python convert.py yolov3-tiny.cfg yolov3-tiny.weights model_data/yolov3-tiny.h5

    模型文件对应说明如下:

    模型文件 说明
    ep034-loss6.105-val_loss6.205.h5 经过训练的模型
    yolo.h5 YOLO 官方预训练模型
  • 4.运行预测图像程序

    python yolo_video.py --image

    在命令行输入图片地址img/mask.jpg,即可预测

    img

三、训练自身数据

  • 1.使用VOC格式的数据进行训练

训练前将标签文件放在VOCdevkit文件夹下的VOC2007文件夹下的Annotation中。

训练前将图片文件放在VOCdevkit文件夹下的VOC2007文件夹下的JPEGImages中。

在训练前利用voc2yolo3.py文件生成对应的txt。

VOCdevkit
   -VOC2007
   	├─ImageSets    # 存放数据集列表文件,由voc2yolo3.py文件生成
   	├─Annotations  # 存放图片标签,xml 格式
   	├─JPEGImages   # 存放数据集中图片文件
   	└─voc2yolo3.py # 用来生成数据集列表文件
  • 2.生成YOLOV3所需数据

每一行对应其图片位置及其真实框的位置

再运行根目录voc_annotation.py,运行前需要将voc_annotation文件中classes改成你自己的classes。

  • 3.在训练前可根据自身需要修改model_data里面的yolo_anchors.txttiny_yolo_anchors.txt,利用kmeans.py来生成,k=9,生成yolo_anchors;k=6,生成tiny_yolo

  • 3.在训练前需要修改model_data里面的voc_classes.txt文件,需要将classes改成你自己的classes。

  • 4.修改train.py配置,通过修改anchor_path,从而选择使用yolov3训练还是yolov3-tiny训练

  • 5.运行train.py 即可开始训练,训练好的模型存放在logs下。

四、测试

修改根目录下yolo.py文件,修改model_path,anchors_path,classes_path替换成自己的路径

  • 1.单张图片测试

python yolo_video.py --image,输入图片名称即可

  • 2.电脑摄像头实时检测

python yolo_video.py --input

此外对应的yolo.py文件174行改为vid = cv2.VideoCapture(0)

  • 3.测试本地视频

python yolo_video.py --input

此外对应的yolo.py文件174行改为vid = cv2.VideoCapture("视频路径+视频名+视频后缀名");

  • 4.测试本地视频并且保存视频效果

python yolo_video.py --output

此外对应的yolo.py文件184行改为out = cv2.VideoWriter("视频路径+视频名+视频后缀名", video_FourCC, video_fps, video_size);

五、注意:

一张图片最多只能识别20个对象的问题:

  • 1.训练时,要在yolo3文件夹下面的utils.py里,修改get_random_data()函数,有一个默认参数是max_boxes=20,改成很大的数值就行了。

  • 2.检测时,要在yolo3文件夹下面的model.py里,修改yolo_eval()函数,有一个默认参数是max_boxes=20,改成很大的数值就行了。

About

yolo3-keras的源码

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%