【YOLOv3从头训练 数据篇】

本文详细介绍了从头开始训练YOLOv3时的数据准备工作,包括COCO数据集的下载、数据可视化、标签转换以及训练路径文件的生成。作者强调了数据预处理中需要注意的类别ID连续性问题,并提供了相关资源链接和代码示例。
摘要由CSDN通过智能技术生成

前言

最近在忙着怎么从头实现YOLOv3,从网上找了很多教程,也在GitHub上面找到了挺多的代码的,有些能看懂有些看不懂,看不懂的原因有两个,一个是自己太菜了,对pytorch的使用不熟悉;另一个是自己太菜了,YOLO系列的论文只读个大概,读过之后又忘记了,一些实现细节自己也不会。
看网上的代码以及视频,大多是从YOLOv3的代码和结构开始,很少有讲到关于使用的数据集和标签是怎么得来的。一开始看B站上面的大佬敲代码的时候,就觉得好牛逼,中途一看到数据处理部分,顿时一愣,虽然知道它用的是上面数据集,但是不知道怎么来的,这可不行,没有数据代码怎么跑的起来。没办法,出来混总是要还的,以前没有用过COCO数据集,现在就得补上,好了,废话就到这里,下面开始正题吧。

数据下载

先放上COCO数据集的官方下载地址:
COCO数据集官方下载地址
官网里面的数据集有好几个,自己向用哪个就下载哪个好了,官网对于COCO 数据集的介绍也是挺详细的。自己多花点时间看就行了,本人是在服务器上运行代码,因为同学正好有COCO 2017的数据集,所以就不用下载到本地再上传到服务器了。
在GitHub上面找代码的时候,发现有一个工程里面有下载数据集的脚本,通过用wget的方式直接下载到服务器上面,因为我也没有用过,不知道效果怎么样,这里提供一下脚本的连接,用过wget的应该都能看懂:
wget方式直接下载到服务器
本人用的数据集为2017 Train images2017 Val images对应的标签文件为2017Train/Val annotations。两个images压缩包解压缩之后得到的是图片,而annotations解压缩之后得到的是6个后缀为.json的文件,这些标签的对应什么内容官网也有很详细的解释,因为YOLOv3用于目标检测,所以对应的文件为instances_train2017.jsoninstances_val2017.json。附上官网的解释:
COCO数据集官方解释
网上也有人详细的整理了一下,附上知乎的文章:
COCO数据集标注详解

数据可视化

得到数据之后,看看图片长什么样,看看标签和图片结合之后长什么样,因此就有了这一部分。本来是没有打算弄这一部分的,因为在GitHub上面找代码的时候发现找到的代码用标签的方式和官网介绍的有点不对,于是就想看一下效果,如果在数据处理这里出错了后面造成更大的错误就很难找了。
先上代码

import json
import cv2
import os

# COCO2017 各个类别的id
COCO_LABELS = {
   1: 'person', 2: 'bicycle', 3: 'car', 4: 'motorcycle', 5: 'airplane', 6: 'bus', 7: 'train', 8: 'truck',
               9: 'boat', 10: 'traffic light', 11: 'fire hydrant', 13: 'stop sign', 14: 'parking meter', 15: 'bench', 
               16: 'bird', 17: 'cat', 18: 'dog', 19: 'horse', 20: 'sheep', 21: 'cow', 22: 'elephant', 23: 'bear',
               24: 'zebra', 25: 'giraffe', 27: 'backpack', 28: 'umbrella', 31: 'handbag', 32: 'tie', 33: 'suitcase', 
               34: 'frisbee', 35: 'skis', 36: 'snowboard', 37: 'sports ball', 38: 'kite', 39: 'baseball bat', 
YOLOv8(You Only Look Once version 8)是一种实时物体检测算法,它在YOLO系列中属于较新的版本。训练自己的数据集主要是为了让你的模型能够识别特定场景下的物体。以下是训练YOLOv8自定义数据集的一般步骤: 1. 数据准备:收集或创建包含目标类别及其标注的图像数据集。每个图片应该有对应的目标框位置信息和类别标签。 2. 数据预处理:使用YOLOv8提供的工具,如darknet的数据转换脚本(data_generator.py),将图片和标签转换成Darknet所需的文件格式,通常为`.txt`和`.cfg`配置文件。 3. 定制配置文件:修改`yolov8.cfg`配置文件,更改网络结构、锚点和其他超参数以适应你的数据集特性。 4. 准备Darknet库:确保安装了正确的版本,并设置环境变量指向darknet源码目录。 5. 搭建训练环境:如果你是在GPU环境下,可以使用CUDA和cuDNN加速训练过程。如果使用CPU,则需调整batch size以适应计算资源。 6. 开始训练:运行命令行工具,例如`./darknet train data/your_dataset cfg/yolov8.cfg yolov8.weights`,这里`your_dataset`是你的数据集路径,`yolov8.weights`是初始权重文件(可以选择预训练模型或从头开始训练)。 7. 监控和调整:训练过程中会生成日志,观察损失函数和mAP等指标,根据需要调整学习率、批次大小等参数。 8. 评估和验证:定期保存训练进度,使用验证集测试模型性能并优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值