YOLOv3训练自己的数据详细步骤

本文详细介绍了如何在CentOS7系统上使用YOLOv3的darknet框架,训练自己的目标检测数据集。从环境配置、数据标注、配置文件修改到模型训练和测试,每个步骤都有清晰的说明和操作指导。
摘要由CSDN通过智能技术生成

前言

本篇文章记录了在centos7(Linux)上使用YOLOv3训练自己数据的操作步骤,YOLOv3使用AlexeyAB大神改进的darknet(Github地址),内容也主要参考自其中,使用其它系统或框架的同学可以酌情参考或直接阅读Github。

题外话:第一次写博客,可能存在诸多问题和遗漏,欢迎大家指出更正。

编译安装

1. 环境要求

由于环境的准备工作不是本篇文章的重点,这里只做简单叙述。
根据Github上的要求:

  • CMake >= 3.8
  • CUDA 10.0
  • cuDNN >= 7.0 for CUDA 10.0 (注意要和CUDA版本对应)
  • OpenCV >= 2.4
  • GPU with CC >= 3.0
  • GCC

2. 下载及编译

darknet源码下载地址:https://github.com/AlexeyAB/darknet

下载解压后进入darknet根目录,根据机器情况修改Makefile文件:

GPU=1			# 是否使用GPU
CUDNN=1			# 是否使用CUDNN
CUDNN_HALF=1	# 是否为Tensor核心加速,
				  Titan V / Tesla V100 / DGX-2及更高版本显卡可以使用
OPENCV=1		# 是否使用OPENCV
OPENMP=0		# 是否使用OPENMP 

修改后进行编译,在darknet根目录执行:

make

训练

1. 准备数据

1.1 使用yolo_mark对图片进行标注

yolo_mark下载地址:https://github.com/AlexeyAB/Yolo_mark

对于每个图片,yolo_mark输出一个txt文件,每一行代表一个bounding box,格式如下:

<类别>  <x_center>  <y_center>  <width>  <height>

设该bounding box中心的绝对坐标为(<absolute_x>,<absolute_y>)
该bounding box在绝对坐标下宽高为(<absolute_width>,<absolute_height>)
图片的宽高为(<image_width>,<image_height>)
则每个参数的含义如下:

参数 含义
<类别> 该bounding box内物体的类别,为[0, class-1]之间整数
<x_center> <absolute_x> / <image_width>,为[0,1]之间浮点数
<y_center> <absolute_y> / <image_height>,为[0, 1]之间浮点数
<width> <absolute_width> / <image_width>,为[0, 1]之间浮点数
<height> <absolute_height> / <image_height>,为[0, 1]之间浮点数

例:1 0.609766 0.660417 0.388281 0.215278

1.2 将图片保存到data目录

图片的存放位置可以自行决定,但建议存放在darknet根目录下的data目录下,方便管理。
进入data目录,创建用于存放数据的文件夹,命名为obj (目录名可以根据自己需求更改):

cd data
mkdir obj

将图片文件和对应的txt标注文件一起存放进data/obj/目录下。
注意:图片文件和对应的txt标注文件的文件名要保持一致。

2. 修改配置文件

2.1 train文件

作用:训练数据集路径。

在data目录下创建train文件train.txt (文件名可以自行更改,但要保持前后一致),文件内容为用作训练数据的图片路径。如:
我要使用data/obj/目录下的如下文件进行

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值