YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

这篇具有很好参考价值的文章主要介绍了YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

YOLOv5 github:GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

先从github下载源码到本地,用pycharm打开工程

 文章来源地址https://www.toymoban.com/news/detail-449407.html

采集数据:

本次采集数据采用的方式是录取视频,然后用python截取视频帧当做图片,这是处理代码:

import cv2
import os

video_path = "../test"
save_path = "../data/images"

img_name = 0
for video_file in os.listdir(video_path):
    cap = cv2.VideoCapture(os.path.join(video_path,video_file))

    frame_count = 0
    while cap.isOpened():
        ret, frame = cap.read()

        if (frame_count % 12) == 0 :
            print(frame_count)
            if ret:
                frame = cv2.resize(frame,(416,416))
                cv2.imwrite(os.path.join(save_path, str(img_name)+'.jpg'),frame)
                img_name += 1
            else:
                cap.release()
        frame_count += 1

 

标注数据:

可以使用labelimg工具、make sense(Make Sense)在线标注,注意数据集需要与yolo对应的格式(label文件夹下是txt文件)

这是之前写过的voc数据集转yolo格式的代码:

from xml.etree import ElementTree as ET
import os

xml_path = r"F:\traffic_signs_yolov5\Annotations"
label_path = r"F:\traffic_signs_yolov5\labels\train"
image_path = r"F:\traffic_signs_yolov5\images\train"

class_name = []

for xml_file in os.listdir(xml_path):
    xml2txt_name = os.path.splitext(xml_file)[0] + '.txt'

    tree = ET.parse(os.path.join(xml_path,xml_file))
    root = tree.getroot()
    sign_object = root.findall('object')
    img_size = root.find("size")
    img_width = int(img_size.find("width").text)
    img_height = int(img_size.find("height").text)

    if sign_object:
        for sign in sign_object:
            name = sign.find('name')
            sign_name = name.text
            if sign_name not in class_name:
                class_name.append(sign_name)

            class_id = class_name.index(sign_name)

            bndbox = sign.find('bndbox')
            xmin = float(bndbox[0].text)
            ymin = float(bndbox[1].text)
            xmax = float(bndbox[2].text)
            ymax = float(bndbox[3].text)

            width = (xmax - xmin) / img_width
            height = (ymax - ymin) / img_height
            x_center = (xmin + (xmax - xmin)/2) / img_width
            y_center = (ymin + (ymax - ymin)/2) / img_height

            with open(os.path.join(label_path,xml2txt_name), 'a') as f:
                f.write("{} {} {} {} {}\n".format(class_id, x_center, y_center, width, height))

    else:
        #with open(os.path.join(label_path,xml2txt_name),'a') as f:
        #    f.write("")
        remove_img_name = os.path.splitext(xml_file)[0] + '.jpg'
        if os.path.exists(os.path.join(image_path,remove_img_name)):
            os.remove(os.path.join(image_path,remove_img_name))
            print("remove {}".format(remove_img_name))


print("class_name:",class_name)

 

最后一个是辅助代码,因为存在一种情况,当我们需要手动删除数据图片时,还需要去找对应的label文件删除,这里写了一个代码,检查labels文件夹中多出来的txt文件并删除:

"""
删除labels文件夹中多出来的label file,labels文件夹与images文件夹需一一对应
"""
import os

images_path = r"F:\my_traffic_sign_data\my_traffic_sign_data\train\images"
labels_path = r"F:\my_traffic_sign_data\my_traffic_sign_data\train\labels"

imgs_name = []

for img_name in os.listdir(images_path):
    imgs_name.append(os.path.splitext(img_name)[0])

for label_file in os.listdir(labels_path):
    if os.path.splitext(label_file)[0] not in imgs_name:
        os.remove(os.path.join(labels_path, label_file))

print(len(os.listdir(images_path)))
print(len(os.listdir(labels_path)))

 

准备训练:

准备好数据集后,在工程根目录下新建一个datasets文件夹,将我们的数据集放到该文件夹下,如图所示,注意数据集结构:

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

新建yaml文件

接着在yolov5-master/data路径下新建一个yaml文件,根据情况修改类别名称(name)与类别数量(nc)如:

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

修改yolov5s.yaml文件

修改yolov5-master/models路径下的yolov5s.yaml文件,只需修改类别的数量

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

 

训练模型:

在开始训练之前,需要安装环境

可以新建一个虚拟环境

conda create --name yolov5 python=3.7 conda activate yolov5

然后找到工程的根目录下的requirements.txt文件,安装所需库

pip install -r requirements.txt # 注意requirement.txt的路径

进入到根目录的train.py文件,找到parse_opt()函数,修改相应参数,cfg:配置文件,data:数据集描述文件,其他参数按需修改

运行该文件开始训练

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

 

借助colab平台训练:

由于在本地用cpu训练非常慢,这里有一个google的colab云平台(需科学上网),可以免费使用gpu训练,但是有限额,过一会就会恢复

https://colab.research.google.com/

需要上传工程,上传大文件会很慢,若需要上传数据集,可以先上传到kaggle,在自己的kaggle账号中新建datasets,虽然也是很慢,但相对快一点,当上传到kaggle完成后,点击copy API command,复制api下载命令

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

然后在自己的个人中心中Account,点击生成API Token,然后下载json文件,并将这个json文件上传到colab中

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

然后在colab中运行以下代码:

!pip install kaggle
import json
token = {"username":"ilmcxx","key":"793c1051a6c90a71e37c111bbf3b7dd5"}
#with open('/content/kaggle.json', 'w') as file:
#  json.dump(token, file)
!mkdir -p ~/.kaggle
!cp /content/kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json
!kaggle config set -n path -v /content

然后到colab中复制api下载命令,在前面加上感叹号,代表运行终端命令,运行即可将数据集下载到colab上

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

在colab也是需要先安装好环境再进行训练

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

 

应用模型:

训练完成后,会提示相关文件保存在runs/train文件夹下的exp...中

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

yolov5-master/runs/train/exp/weights文件夹下的则保存了刚刚训练的最好的模型和最后的模型

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

我们打开根目录下的detect.py文件,找到parse_opt()函数,修改相应参数(使用的模型权重文件weights、待识别的图片source、数据集描述文件data),运行该文件

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

运行完成后,结果会保存在yolov5-master/runs/detect/exp...文件夹中

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)

 

 

到了这里,关于YOLOv5训练自己的数据集(含数据采集、数据标注、数据预处理、借助colab训练)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • yolov5训练自己的数据集问题排除

    D:ProgramDataAnaconda3envsyolov5python.exe D:/yxt/yolov5-master/train.py Traceback (most recent call last):   File \\\"D:ProgramDataAnaconda3envsyolov5libsite-packagesgit__init__.py\\\", line 140, in module     refresh()   File \\\"D:ProgramDataAnaconda3envsyolov5libsite-packagesgit__init__.py\\\", line 127, in refresh     if not Git.refresh(p

    2024年04月11日
    浏览(34)
  • 【YOLO】yolov5训练自己的数据集

    【YOLO】yolov5训练自己的数据集

    【Python】朴实无华的yolov5环境配置(一)   上面前期教程中,大致介绍了yolov5开发环境的配置方法和yolov5项目的基本结构,下一步就是基于yolov5预训练模型来训练自己的数据集,这对于只是想要使用yolov5这个工具的人,还是想要深入研究yolov5类似的目标识别算法的人,都是

    2024年02月11日
    浏览(31)
  • YOLOv5训练自己的数据集实现视频的识别

    YOLOv5训练自己的数据集实现视频的识别

    写在前面 我本来是使用这个模型进行手写签名的定位,但是因为比赛的主办方原因,数据不允许公开,所以我使用动物世界的一段开头视屏来制作我的数据集。这整个模型跑通的过程中,我参考了很多不错的博客,写这篇博客的原因是记录一下我的所见所感。我的模型是在

    2024年02月02日
    浏览(27)
  • YOLOv5-第Y2周:训练自己的数据集

    YOLOv5-第Y2周:训练自己的数据集

    🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍖 原作者:K同学啊 电脑系统:Windows 10 语言环境:Python 3.8.5 编译器:colab在线编译 深度学习环境:PyTorch 文件夹目录结构: 🍦主目录: paper_ data (创建个文件夹,将数据放到这里) Annotations (放置我们的.xm文件) images (放置图

    2024年01月20日
    浏览(33)
  • yolov5-7.0训练自己的VOC数据集

    yolov5-7.0训练自己的VOC数据集

    这个笔记可能只适用于7.0版本的,写这个笔记主要是给工作室伙伴参考的,大佬请绕行 有错误之处欢迎指出 yolov5的GitHub仓库地址:Release v7.0 - YOLOv5 SOTA Realtime Instance Segmentation · ultralytics/yolov5 (github.com) 需要下载源码和预训练模型 将源码解压,在其文件夹里面新建一个weights文

    2024年02月12日
    浏览(32)
  • YOLOv5如何训练自己的数据集(生活垃圾数据集为例)

    YOLOv5如何训练自己的数据集(生活垃圾数据集为例)

    本文主要介绍如何利用YOLOv5训练自己的数据集 以生活垃圾数据集为例子 生活垃圾数据集(YOLO版) 点击这里直接下载本文生活垃圾数据集 生活垃圾数据集组成: YOLO数据有三个要点 images,存放图片 labes,对应Images图片的标签 data_txt, 划分images图片的数据集,形成三个txt 文件

    2024年02月07日
    浏览(28)
  • 通过AutoDL使用yolov5.7训练自己的数据集

    通过AutoDL使用yolov5.7训练自己的数据集

    AutoDL 选择基础镜像 创建之后 点击 开机 ,也可在更多里面选择无卡模式开机(此模式不能训练,但是可以上传文件且更便宜)。开机之后,上传代码可通过xshell工具或者可以通过快捷工具JupyterLab。我两种方法都来演示一遍。yolov5代码 复制登录指令 回车后会要求输入密码,

    2024年02月05日
    浏览(31)
  • AI学习笔记四:yolov5训练自己的数据集

    AI学习笔记四:yolov5训练自己的数据集

    若该文为原创文章,转载请注明原文出处。 一般情况下,大部分人的电脑都是没有cpu的,cpu也是可以训练的,但花费的时间太长,实际200张图片,使用CPU训练300轮花了3天,本章记录使用云服务器来训练自己的数据集。 使用的云服务器是AutoDL,一直在使用,性价比还是比较高的

    2024年02月15日
    浏览(26)
  • Yolov5 + Deepsort 重新训练自己的数据(保姆级超详细)

    Yolov5 + Deepsort 重新训练自己的数据(保姆级超详细)

    从下面github库中拿代码: https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch https://github.com/mikel-brostrom/Yolov5_DeepSort_Pytorch GitHub - Sharpiless/Yolov5-Deepsort: 最新版本yolov5+deepsort目标检测和追踪,能够显示目标类别,支持5.0版本可训练自己数据集 最新版本yolov5+deepsort目标检测和追踪,能够

    2024年01月19日
    浏览(32)
  • 【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制

    【Yolov5+Deepsort】训练自己的数据集(1)| 目标检测&追踪 | 轨迹绘制

    📢前言: 本篇是关于 如何使用YoloV5+Deepsort训练自己的数据集 ,从而实现目标检测与目标追踪,并绘制出物体的运动轨迹。本章讲解的为第一个内容:简单介绍YoloV5+Deepsort中所用到的 目标检测,追踪及sortDeppsort算法。 本文中用到的数据集均为自采,实验动物为斑马鱼。 文尾

    2024年02月14日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包