Yolov4训练自己的数据集

  1. 代码运行环境Ubuntu18.04+python3.6+显卡1080Ti+CUDA10.0+cudnn7.5.1+OpenCV3.4.6+Cmake3.12.2,详细环境配置安装步骤就不讲解拉,网上教程一大堆。
  2. 从github克隆下载源码,链接地址:https://github.com/AlexeyAB/darknet
  3. 训练肯定需要使用GPU加速,那么得打开项目里面的makefile文件修改一些参数的值,1-4、7改为1
    makefile前面几行:打开GPU 加速,打开opencv,打开libdarknet.so生成开关
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
ZED_CAMERA=0 # ZED SDK 3.0 and above
ZED_CAMERA_v2_8=0 # ZED SDK 2.X
  1. 编译
    在darknet-master目录下运行:cmake.&make -j48

    下载与训练权重放在主目录下https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights

    百度网盘: 链接:https://pan.baidu.com/s/16wOHbaa2mG7cTZ_RcGjRnw
    提取码:99bl

    用下面的命令测试一下预训练权重
    ./darknet

    如果编译成功则会出现以下信息
    usage: ./darknet

    现在可以测试初始预训练权重效果了
    ./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jp

成功则在主目录下出现predictions.jpg 图片为预测后的图片,打开 OPENCV=1的可以直接显示出图片。说明我们的环境配置好了,否则先去配置环境。

5. 训练自己的数据集
–5.1 在主目录下创建yolo-obj.cfg 配置文件。将 yolov4-custom.cfg 中的内容复制到 yolo-obj.cfg里面,并做以下修改。
  --5.1.1修改batch=64,修改subdivisions=16(如果显卡是2080TI的,可以把batch设置为96,如果报内存不足,将batch改回64将,或者subdivisions设置为32)
  --5.1.2修改max_batches=classes*2000 例如有2个类别人和车 ,那么就设置为4000,N个类就设置为N乘以2000,
  --5.1.3修改steps为80% 到 90% 的max_batches值 比如max_batches=4000,则steps=3200,3600
  --5.1.4修改classes,先用ctrl+F搜索 [yolo] 可以搜到3次,每次搜到的内容中 修改classes=你自己的类别 比如classes=2
  --5.1.5修改filters,一样先搜索 [yolo] ,每次搜的yolo上一个[convolution] 中 filters=(classes + 5)x3 比如filters=21
  --5.1.6(可以跳过)如果要用[Gaussian_yolo] ,则搜索[Gaussian_yolo] 将[filters=57] 的filter 修改为 filters=(classes + 9)x3 (这里我没用到,但是还是修改了)
–5.2制作obj.names,在主目录下创建obj.names文件。内容为你的类别 比如人和车 那么obj.names 为如下,多个类别依次往下写

person
car

–5.3 制作obj.data,在主目录下创建obj.data文件。内容如下

  classes= 2train  = ./scripts/2007_train.txt#valid  = ./scripts/2007_test.txt #(做测试用的测试txt)valid  = ./scripts/2007_val.txtnames = darknet-master/obj.name #(找不到的话,可以修改为自己的绝对路径)backup = backup/ # 权重保存的位置

–5.4 数据集制作
在scripts文件夹下按如下目录创建VOCdevkit 文件夹,放自己的训练数据。

VOCdevkit
--VOC2007
----Annotations  #(放XML标签文件)
----ImageSets
------Main
----JPEGImages   # (放原始图片)
把自己的原始未标注图片和标签信息放入相应文件夹下。

–5.5 scripts文件夹下有voc_label.py,打开后修改自己的类别信息,

sets=[ (‘2007’, ‘train’), (‘2007’, ‘val’), (‘2007’, ‘test’)]
classes = [“person”,“car” ] 按自己的类别修改,但是顺序要和obj.name 保持一致,
-5.6 在主目录下创建make_data.py 文件,把如下代码方进去。运行此文件在scripts 文件下生成 3个相应的txt文件,在Main 下生成四个txt文件。

import os
import random
import sys
root_path = './scripts/VOCdevkit/VOC2007'
xmlfilepath = root_path + '/Annotations'
txtsavepath = root_path + '/ImageSets/Main'
if not os.path.exists(root_path):print("cannot find such directory: " + root_path)exit()
if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)
trainval_percent = 0.9
train_percent = 0.8
total_xml = os.listdir(xmlfilepath)
num = len(total_xml)
list = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list, tv)
train = random.sample(trainval, tr)
print("train and val size:", tv)
print("train size:", tr)
ftrainval = open(txtsavepath + '/trainval.txt', 'w')
ftest = open(txtsavepath + '/test.txt', 'w')
ftrain = open(txtsavepath + '/train.txt', 'w')
fval = open(txtsavepath + '/val.txt', 'w')
for i in list:name = total_xml[i][:-4] + '\n'if i in trainval:ftrainval.write(name)if i in train:ftrain.write(name)else:fval.write(name)else:ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest.close()
  • 5.7运行voc_labels.py文件,在VOC2007文件下生成labels文件,文件夹里包含相应的txt.(现在voc2007文件里多出一个labels 文件夹)

-5.8 开始训练
首先下载预训练权重yolov4.conv.137,放入主目录下。

链接:https://pan.baidu.com/s/1yhB8pRcGH84gyRWeNictBA
提取码:gi4d

用下面的命令开始训练:
./darknet detector train obj.data yolo-obj.cfg yolov4.conv.137 -map

#训练2000此后在之前训练的基础上继续训练(适合中途停止后继续训练)
./darknet detector train obj.data yolo-obj.cfg backup/yolo-obj_2000.weights -map

大家可以看到收敛效果还是很明显的,效果扛扛的。不愧是吊打一切的目标检测算法。

-5.9测试
修改obj.data,
valid = ./scripts/2007_test.txt
#valid = ./scripts/2007_val.txt

测试:
./darknet detector map obj.data yolo-obj.cfg backup/yolo-obj_final.weights

好了,你竟然认真的看完了,记得点赞收藏,下次观看不迷路,有任何问题欢迎流言私信我。

Yolov4训练自己的数据集相关推荐

  1. 一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu)

    一文多图搞定制作自己的VOC数据集+使用yolov4训练自己的数据集+封装video测试脚本(基于ubuntu) 制作VOC数据集 标注自己的数据集 整理数据集路径格式 训练数据集 环境 在Linux ...

  2. (Pytorch) YOLOV4 : 训练自己的数据集【左侧有码】

    项目地址:https://github.com/argusswift/YOLOv4-pytorch 这份代码实现的逻辑非常清楚,主要一些数据集处理的代码需要相应的改动: 这里的数据集label格式: ...

  3. yolov4训练自己的数据集实现安全帽佩戴检测

    昨儿立下来的flag,今天还是要含泪完成的,抓紧时间赶呀!!! 本次用yolov4来实现人佩戴安全帽检测,若未佩戴安全帽则将人脸框出来,若佩戴安全帽,则将安全帽以及人脸框出来,多说无益,直接看效果吧! ...

  4. YoloV4训练自己的数据集(二)

    本文主要介绍使用GPU测试网络,请先看前文然后再看本文.上文中我没有使用Opencv以及GPU,因此测试时间较长,本文介绍使用Opencv以及GPU. 1.安装OpenCV 首先去Opencv官网下载 ...

  5. 视频教程-Windows版YOLOv4目标检测实战:训练自己的数据集-计算机视觉

    Windows版YOLOv4目标检测实战:训练自己的数据集 大学教授,美国归国博士.博士生导师:人工智能公司专家顾问:长期从事人工智能.物联网.大数据研究:已发表学术论文100多篇,授权发明专利10多 ...

  6. ubuntu18.04下YOLOV4测试和训练自己的数据集

    安装配置好yolov4的环境,测试下 用yolov4检测图片: ./darknet detector test cfg/coco.data cfg/yolov4-custom.cfg yolov4.w ...

  7. YOLOv4实战尝鲜 --- 教你从零开始训练自己的数据集(安全头盔佩戴识别检测)

    目录 数据准备 划分数据集 xml2yolo 生成train/valid.txt YOLOv4配置 cfg文件修改 data文件修改 names文件修改 模型训练 模型测试 本文代码基于:https: ...

  8. yolov4训练已标柱的数据集

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 1.下载数据集 https://github.com/ncs-niva/traffic-cone-image-data ...

  9. yolov4用Google Colab训练自己的数据集

    yolov4训练数据 简介 运用google Colab训练自己的Yolov4数据集 google colab的使用 项目使用流程 1.设置GPU可用 2.clone项目构建Darknet git c ...

最新文章

  1. 为何苹果为何苹果甘愿冒险自主研发芯片?
  2. 医学研究——造福全人类
  3. 新增功能!Trello个人应用程序登陆 Microsoft Teams
  4. 一份好的工作总结才能帮你升职加薪
  5. 使用Maven将文件上传和下载到S3
  6. python流程自动化_基于Python的SAP流程自动化
  7. smarty内建函数
  8. PyCharm 的初始设置
  9. 进击的UI------------UIToolBar(bottom导航条)
  10. 计算机表格斜杠怎么打,『excle表格怎么做斜杠线』excel怎么打斜杠
  11. 【POJ2318】TOYS(点在凸多边形内判定---模版暴力/二分)
  12. 华为鸿蒙p9刷机包,华为P9原版rom系统刷机包_华为P9最新版升级包更新下载
  13. idea一顿切换分之后编译项目提示找不到其他分支类的解决办法~
  14. [导入]GIS的下个十年(Cary Mann, vice president, Bentley)
  15. springboot+vue房屋租赁系统-求租合同系统java
  16. 地铁三号线 - 95后的财务自由
  17. 如何使用Delphi 10 Seattle的Android应用做Intent的发送和接收
  18. 四门轿跑 标致发布Exalt概念车设计图
  19. 【读过的书】《杠杆阅读术》
  20. Blob 文件下载 ,使用file-saver,判断数据是否为blob

热门文章

  1. Mysql闪回工具之binlog2sql的原理及其使用
  2. 分布式数据库中间件使用经验分享
  3. 类似索引Model套Model之 iOS模型闲聊二
  4. js:插入节点appendChild insertBefore使用方法
  5. CentOS7安装Python3.4 ,让Python2和3共存
  6. windows 如何在Windows命令行下配置IP地址
  7. svn管理工具_主流代码管理工具深度评测
  8. python3.12答案_编程常见问题
  9. 19.常量-final
  10. Node.js 异步编程之 Callback介绍