1、代码下载:下载yolov3代码:https://github.com/qqwweee/keras-yolo3 ,并解压缩之后用pycharm打开。
2、下载权重:https://pjreddie.com/media/files/yolov3.weights
3、生成模型:将darknet下的yolov3配置文件转换成keras适用的h5文件:
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
4、运行预测单张图像程序
python yolo_video.py --image
5、训练VOC2007,可以将自己的数据集制作成VOC2007格式:
放置:D:\demo\keras-yolo3-master\VOCdevkit\VOC2007\四个标准的文件夹
6、在voc_annotation.py需改你的数据集的类别:修改成自己的类
python voc_annotation.py
生成3个文件:三个新的不同的txt文件:2007_train.txt; 2007_test.txt; 2007_val.txt
7、运行Kmeans.py生成新的锚文件yolo_anchors.txt,并将其复制到model_data文件夹下
8、修改yolo3.cfg文件:
filter:3*(5+len(classes))我这里只有一个类,所以filter=18
classes:你要训练的类别数(我这里是训练1类)
random:原来是1,显存小改为0
重新运行 python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
9、修改model_data下的voc_classes.txt,coco_classes.txt 为自己训练的类别
10、 修改train.py代码(用下面代码直接替换原来的代码)
epoch=500,然后loss=14左右
代码参考:https://blog.csdn.net/u012746060/article/details/81183006
10、logs/000/目录生成trained_weights.h5
11、测试单张图片:python yolo_video.py --image
model_path修改为model_data/trained_weights.h5,我是将其训练好的模型复制到该文件夹下。
12、测试结果:
第一张单个鱼图的置信度低,有一张是在网纱下面的病鱼没有检测到;还有一张是随便一张人像图,就能检测到,其实不是鱼,是额头。
13、再次增加epoch,再次增加数据集,负样本数据集????
补充说明:
1、在台式机电脑上的ssd版本(4444ssd.pytorch-master - 副本),是0.4.1版本,其中train.py可以使用,但是eval.py和test.py无法使用。
2、keras的python版本:
1、数据放置:
当前文件夹的VOCdevkit文件夹下放置:
运行VOC2007文件夹下的yxfyxftxt.py文件,生成4个有用的txt文件。训练集80%,测试集20%。
2、运行voc_annotation.py,生成:三个新的不同的txt文件:2007_train.txt; 2007_test.txt; 2007_val.txt
3、运行Kmeans.py生成新的锚文件yolo_anchors.txt,并将其复制到model_data文件夹下
4、运行 python convert.py -w yolov3.cfg yolov3.weights model_data/yolo_weights.h5
5、修改model_data下的voc_classes.txt,coco_classes.txt 为自己训练的类别
6、运行traintrain.py, 设置epoch=10000,
生成的模型文件在logs/000文件夹下,把他复制到model_data文件夹下,然后就可以了
修改模型名字:model.save_weights(log_dir + 'yxftrained_weights.h5')
7、测试单张图片:python yolo_video.py --image
修改yolo.py中的相关参数
model_path修改:model_data/trained_weights.h5
将图片放置在当前文件夹中 识别
8、当epoch=10000时,运行结果好很多了。
主要参考:
https://blog.csdn.net/u012746060/article/details/81183006
https://blog.csdn.net/u012746060/article/details/81183006