YOLOv4+tensorflow2.0训练自己的数据
一、环境配置
1.1 实验源码
在YOLOv4原文给出了基于Darknet的实验源码【下载地址】(若链接不可用,请自行复制下面这个网址:https://github.com/AlexeyAB/darknet),该源码核心部分是利用**C++**写的,但是大部分学习目标检测的人都习惯使用python语言,因为python语言提供了大量的框架,更加的简便。因此,要读懂这份源码可能会有一些困难。
为了方便其他研究者,作者在上述源码下方给出了基于其他框架的代码链接,当然也包括了基于tensorflow实现的源码【下载地址】,本篇文章使用的是tensorflow框架中的第一份源码。
下载后直接解压就行,解压出来是下面这样的:
1.2 环境要求
在本文使用的源码中,作者明确指出了,改源码使用的是tensorflow2.0版本,所以在实验之前,需要保证自己电脑上装的是2.0版本的tensorflow,如果你的电脑上装的是1.0版本的,则需要提升tensorflow的版本,因为2.0版本和1.0版本在一些函数的调用上会有所不同,如果使用1.0版本的tensorflow来运行该代码,改错会改到让你怀疑人生。所以,还是乖乖的换2.0版本吧!!!
这里我使用的tensorflow版本是2.3.0,搭配的Keras版本是2.3.1
我使用的是anaconda来搭建环境,主要步骤如下:
1.2.1 安装anaconda
anaconda的安装步骤见另一篇文章:Anaconda 安装教程
1.2.2 在anaconda中创建tensorflow2.0-gpu虚拟环境
为了不影响其他搭建好的编译环境,这里选择重新创建一个虚拟环境,在anaconda中创建虚拟环境的方法见另一篇文章:anaconda中创建虚拟环境
1.2.3 安装CUDA和cudnn
由于模型比较大,需要使用GPU进行训练,使用GPU训练就需要安装CUDA和cudnn,具体的安装方法可以参考我的另一篇文章:CUDA和cudnn的安装
1.2.4 1.4 安装tensorflow GPU版
由于模型比较大,需要在gpu下运行,所以在装tensorflow的时候需要装gpu版本的,由于该源码要求使用tensorflow2.0版本,所以这里我装的是tensorflow-gpu2.3.0
第一步:打开命令提示符
第二步:激活tensorflow2.0-gpu环境(我装的虚拟环境取名为tensorflow2.0-gpu),输入命令:
activate tensorflow2.0-gpu
第三步:安装tensorflow-gpu,输入命令:
pip install tensorflow-gpu==2.3.0
然后就是等待安装完成,可能需要一定的时间。
第四步:测试tensorflow-gpu是否安装成功,接着上一步,先输入命令打开python编译环境:
python
再输入命令导入tensorflow模块,需要注意的是,虽然装的是tensorflow-gpu,但是我们在导入模块的时候仍然使用的是tensorflow:
import tensorflow as tf
若能成功导入模块,则说明安装成功,否则就需要查看在哪里出了错,重新安装了。
另外还可以输入以下命令来查看tensorflow的版本:
tf.__version__
二、环境测试
在训练自己的数据集之前,先测试一下能不能利用作者训练的好的权重进行而检测。
2.1 下载权重文件
测试之前需要准备YOLOv4权重文件,可以去百度云自行提取,提取密码:o6hd
将下载的权重文件yolov4.weights放到tensorflow-yolov4-tflite-master\data文件夹下
2.2 权重文件转换
在这一步需要将前面下载的权重文件yolov4.weights转换成在tensorflow环境下使用的文件类型,打开命令提示符,进入主目录(tensorflow-yolov4-tflite-master\):
输入下面的命令:
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4
运行结束后,将会在tensorflow-yolov4-tflite-master\checkpoints文件夹下产生一个yolov4-416文件夹