YOLOv3、YOLOv4训练自己数据集

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.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值