下载代码
进入链接下载解压代码仓库。



解压出来应该是下面这样的:



配置环境
anaconda的安装步骤见另一篇文章:【分享】Windows10下安装深度学习常用软件教程分享

CUDA和cudnn的安装步骤见另一篇文章:【分享】Windows10下安装Nvidia显卡驱动及cuda和cudnn

这里我使用的版本是:CUDA11.1、cudnn8.2.0

使用anaconda创建虚拟环境,详细命令使用可参考另一篇文章:【分享】anaconda中创建虚拟环境常用指令

conda create -n yolov4-tflite python=3.8

conda activate yolov4-tflite


输入命令开始安装:

conda install -c esri tensorflow-gpu

conda install opencv

conda install -c conda-forge easydict

conda install -c conda-forge pillow

conda install -c anaconda keras

图略

测试环境
下载权重文件

测试之前需要准备YOLOv4权重文件

下载链接:https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT



将下载的权重文件yolov4.weights放到tensorflow-yolov4-tflite-master\data文件夹下

输入下面的命令:

python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4

运行结束后,将会在tensorflow-yolov4-tflite-master\checkpoints文件夹下产生一个yolov4-416文件夹。

打开yolov4-416文件夹,里面会有一个saved_model.pb文件,这个就是我们进行测试需要使用的权重文件了。



输入以下命令:

python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/kite.jpg --output ./data/kite_d.jpg

就能得到如下测试结果,并且保存在tensorflow-yolov4-tflite-master\data文件夹下命名为kite_d.jpg文件,也就是我们保存的带有检测结果的图片。



输入以下命令:

python detectvideo.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --video ./data/road.mp4 --output ./data/road_d.mp4

测试结果如下:



并且在tensorflow-yolov4-tflite-master\data文件夹下将产生一个road_d.mp4文件,也就是我们保存的带有检测结果的视频。

下载VOC数据集
进入VOC官网下载数据集。

选择下载训练验证数据集和标签数据。




解压两个压缩文件得到如下图文件夹的内容。



在data/dataset文件夹下生成数据的描述文件

训练准备

根据作者在github上的声明,该程序在训练时还需要两个对图片信息的描述文件voc_train.txt和voc_test.txt,格式如下



作者给出了生成这两个文件的代码scripts\voc_annotation.py。需要做部分的修改:

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    # 将相关路径中default的路径修改为自己的路径,最好是写绝对路径,不然后面容易出错
    parser.add_argument("--data_path", default="D:/datasets/voc2007/VOC2007/")
    # 将default的路径更改为自己的voc_train.txt存放的位置
    parser.add_argument("--train_annotation", default="../data/dataset/voc_train.txt")
     # 将default的路径更改为自己的voc_test.txt存放的位置
    parser.add_argument("--test_annotation",  default="../data/dataset/voc_test.txt")
    flags = parser.parse_args()

    if os.path.exists(flags.train_annotation):os.remove(flags.train_annotation)
    if os.path.exists(flags.test_annotation):os.remove(flags.test_annotation)

    num1 = convert_voc_annotation(os.path.join(flags.data_path, 'VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007'), 'trainval', flags.train_annotation, False)
    # num2 = convert_voc_annotation(os.path.join(flags.data_path, 'train/VOCdevkit/VOC2012'), 'trainval', flags.train_annotation, False)
    num3 = convert_voc_annotation(os.path.join(flags.data_path, 'VOCtest_06-Nov-2007/VOCdevkit/VOC2007'),  'test', flags.test_annotation, False)
    print('=> The number of image for train is: %d\tThe number of image for test is:%d' %(num1, num3))

做了以上更改后直接运行该文件即可。

python scripts/voc_annotation.py

最终显示如下信息即表示生成成功。



这时候data\dataset文件加下将多出两个文件:


修改配置文件

打开tensorflow-yolov4-tflite-master\core文件夹下的config.py文件

主要就是修改里面的几个文件的路径,如果是按照我上面步骤得到的那几个文件,那么将不需要修改,如果你是将上面几个文件放在了其他路径下,则需要做相应的修改。

(1)将第14行的“__C.YOLO.CLASSES”修改为自己的voc.names所在位置

__C.YOLO.CLASSES              = "./data/classes/voc.names"

(2)将第29行“__C.TRAIN.ANNOT_PATH”修改为自己的voc_train.txt所在位置

__C.TRAIN.ANNOT_PATH          = "./data/dataset/voc_train.txt"

(3)将第45行“__C.TEST.ANNOT_PATH”修改为自己的voc_test.txt所在位置

__C.TEST.ANNOT_PATH           = "./data/dataset/voc_test.txt"

(4)第30行和第46行的“C.TRAIN.BATCH_SIZE”和“C.TEST.BATCH_SIZE”根据自己电脑的性能修改,性能好就调大点,性能差就调小点,没有明确的要求。
config.py文件中的其他参数也是一样的,可以根据需要自行调节,都没有明确的要求。

输入命令:

python train.py

或者从yolov4.weight进行迁移学习训练

输入命令:

python train.py --weights ./data/yolov4.weights