1.下载(keras)yolov3:
https://github.com/qqwweee/keras-yolo3
2.搭建yolov3运行需要的环境:
(注意:可用Anaconda的命令行创建虚拟环境conda create -n py35 python=3.5,或者用Anaconda Navigator界面创建虚拟环境,以及下载安装其它依赖程序,当自己网速慢时很有可能下载不下来,本文提供了自行下载地址,可以移步下载)
- Python 3.5.2
- Keras 2.1.5(https://download.csdn.net/download/qq_40155090/11709423)
- tensorflow 1.6.0(GPU版本)(https://download.csdn.net/download/qq_40155090/11709466)
3.准备自己的数据集:
(注意:数据集为.jpg后缀)
4.用LabelImg标注:
https://download.csdn.net/download/qq_40155090/11709643
(标注之后为.xml文件)
5.在yolov3文件夹下建立文件夹VOCdevkit,并在VOCdevkit下建立VOC2007,在VOC2007下建立三个文件夹,分别为Annotation、ImageSets、JPEGImages,在ImageSets中创建Main文件夹:
将原图片放在JPEGImages中,将xml标注放在Annotation中
6.下载权重:将下载后的文件放在yolov3(主)文件夹中:
https://pjreddie.com/media/files/yolov3.weights
7.修改voc_annotation.py分类,classes对应修改为自己的类别:
python voc_annotation.py
8.修改主文件夹yolov3.cfg中的网络,将yolo层的classes改成自己的类别数,将yolo上一层的conv层的filter改成3*(类别数+5):
9.运行如下create_ImageSets.py文件,在ImageSets的Main中生成4个文件:
import os
import random
trainval_percent = 0.2
train_percent = 0.8
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')
for i in list:
name = total_xml[i][:-4] + '\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftest.write(name)
else:
fval.write(name)
else:
ftrain.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
将上图4个txt文件移入model_data文件夹中,并在model_data文件夹中新建my_classes.txt文件,并在文件中写入自己的类别,每一类别占一行
10.重新生成h5文件:
python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
11.修改train.py文件:
12.运行train.py:
python train.py
开始运行:
13.修改yolo.py:
14运行yolo_video.py --image检测单张图片:
在出现Input image filename:后填入待检测图片的位置,等待检测结果
参考连接:
https://blog.csdn.net/mingqi1996/article/details/83343289
https://blog.csdn.net/u012746060/article/details/81183006