YOLOv3、YOLOv4训练自己数据集
1.darknet下载及编译
2.数据集标注
3.配置文件修改
4.开始训练
###================================
1.darknet下载及编译
①darknet-master的下载链接如下: darknet-master.
②下载之后在ubuntu中编译,直接进入darknet-master,在终端输入make即可
③如果要用GPU模式,则需要修改makefile文件
GPU=1 #使用 CUDA 构建以使用 GPU 加速
CUDNN=1 #使用 cuDNN 构建以使用 GPU 加速训练
OPENCV=1 # 使用 OpenCV 4.x/3.x/2.4.x 构建 - 允许检测来自网络摄像机或网络摄像头的视频文件和视频流
但是使用GPU之前要下载相对应得CUDA和CUDNN,还有opencv
④若下载好cuda在make的时候出现nvcc not found错误
就在makefile中指定可执行文件NVCC的路径,如:
NVCC=/usr/local/cuda-10.2/bin/nvcc
具体要看自己安装cuda的版本和路径
2.数据集标注
数据集标注具体可以参考我之前的博客: labelimg标注数据集.
将得到的txt文件保存即可。
3.配置文件修改
①在cfg/coco.data中修改即可
classes= 24 #识别对象总数量
train = data/train.txt #训练集路径
valid = data/test.txt #测试集路径
names = data/coco.names #识别对象类名
backup = backup/ #训练结果保存路径
②在data新建train.txt文本,train.txt文本主要写所有训练图片的路径
test.txt也同理
这里我是在data下创建了gesture_traindata文件夹,然后将训练图片和用labelimg标注得到的txt都存在这个文件夹
③在data中找到coco.names并修改为你所要的类名
④yolov3.cfg文件的修改(yolov4使用yolov4-custom.cfg,修改也同理)
-batch=16
-subdivisions=16
每次计算的图片数目 = batch/subdivisions,然后把结果合起来也就是一个batch更新模型一次
如果电脑性能不是很好,就把batch=8,subdivisions=8;如果还是不行就都调为1。
-max_batches=24*2000
max_batches更改为(classesx2000),但不少于训练图像的数量且不少于6000。
将行步数更改为 max_batches的80%和90%,如max_batches=6000,则steps=4800,5400;
-classes=24
classes是类别数,这个根据自己类别数来修改,所以设置为24,文件里一共有3处需要修改classes(三个yolo层中各有一处),一般是文件的第610、689、776行
-filters=87
filters的计算公式为(classes + 5)x3,我们这里有24类,所以是(24+5)*3=87,文件里一共有3处需要修改(三个yolo层的上一层的filters),
这里需要注意:文件里有多处filter,但我们只需要修改[yolo]层之前的[convolutional]层下面的filters,位置一般是文件的第603、696、783行
4.开始训练
①yolov3训练指令如下
sudo ./darknet detector train cfg/coco.data cfg/yolov3.cfg darknet53.conv.74
darknet53.conv.74下载链接: darknet53.conv.74.
②yolov4训练指令如下
sudo ./darknet detector train cfg/coco.data cfg/yolov4-custom.cfg yolov4.conv.137
yolov4.conv.137下载链接: yolov4.conv.137.
文章评论