极简YOLOv5训练以及检测流程(ubuntu)

本文是针对非计算机专业的YOLO目标检测教程,介绍了从环境配置、数据集准备(包括视频截图、批量重命名、打标签和格式转换)、模型训练到开始目标检测的完整流程。作者强调了数据集整理的重要性,并提供了Python脚本辅助处理。
摘要由CSDN通过智能技术生成

写在前面:本文仅就csdn中yolo系列的大部分教程踩坑记录最终得出的一个最简洁最流畅的流程,本人非计算机专业,水平有限,仅适合想要快速入门YOLO训练自己的数据集以及如何使用模型进行目标检测的同学,个人记录的同时希望可以帮到大家。

环境配置

solution 1: 淘宝花几十块找专人帮你配置,对环境配置不是很熟悉的话这个很方便,因为自己配置的话总是会有各种各样的报错,较快。

solution 2:其他教程讲的很详细了不再赘述

🌟🌟数据集准备

拍想要检测物体的视频

手机拍即可,建议时长2min以上,后期截取数据集就比较多了,训练的准确度自然有所提升

截取视频流截图

如果宁用的也是🍎手机的话会很方便直接使用快捷指令,设置如下图,可以根据自身需求修改一些参数:(注意此时图片名字比较乱没关系)

新建快捷指令

如果宁用的不是的话可以百度找其它视频转图片的应用,后期注意命名。

数据集文件结构

新建如下目录结构,建在哪无所谓:
目录结构

将截取好的照片先全部放入images下的train文件夹下以便于批量重命名。

批量重命名(重要‼️)

一定要将图片名字改的整齐划一之后再进行打标,打标是个废事的操作,如果前期没有重命名后面会前功尽弃。
这里我是用的python进行批量重命名为images+数字,代码如下:
【要使用的话要将路径改为自己的图片所放文件夹的绝对路径,命名方式也可进行修改】

import os
def myrename(path):
    file_list=os.listdir(path)
    for i,fi in enumerate(file_list):
        old_dir=os.path.join(path,fi)
        filename="images"+str(i+1)+"."+str(fi.split(".")[-1])
        new_dir=os.path.join(path,filename)
        try:
            os.rename(old_dir,new_dir)
        except Exception as e:
            print(e)
            print("Failed!")
        else:
            print("SUcess!")

if __name__=="__main__":
    path="/home/jiabei/wetest/data/images/train"
    myrename(path)

在全部命名好后,随意挑选一部分照片放到val文件夹中作为验证集,数量无需太多。很多教程里会采用自动分类列表这样的,我在此处浪费了很多时间,其实完全没必要,自己随便选一些就可以我们放到对应的文件夹中也不会乱。

打标签

下载labelImg放到合适的位置

参考只用看1.2步能打开对应界面即可

打开界面后设置打开目录的位置(images下的train和val要分别打标签)和存放目录的位置(对应的xml文件夹下的train或者val,和images文件夹下保持对应),自动保存即可开始漫长的打标签啦!

打标签就是创建区块后命名类别,多个目标就多个区块即可,这里需要提醒的是一定要用快捷键,能省不少事:
a上一张图d下一张图w创建区块
在这里插入图片描述

voc格式(xml文件)转yolo归一txt文件(重要❗️)

在打完标签操作后xml文件夹中的train和val都应该有对应的.xml文件了,但是yolo不能识别xml文件我们需要将其转化为txt文件放入对应的labels文件夹中。

转化格式的代码如下:【后面加有备注的五处地方根据自己的实际情况进行修改】

import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join

classes = [ 'redcone','bluecone','jiabei','ikun-Jack']#5


def convert(size, box):
    dw = 1./(size[0])
    dh = 1./(size[1])
    x = (box[0] + box[1])/2.0 - 1
    y = (box[2] + box[3])/2.0 - 1
    w = box[1] - box[0]
    h = box[3] - box[2]
    x = x*dw
    w = w*dw
    y = y*dh
    h = h*dh
    return (x,y,w,h)

def convert_annotation(rootpath,xmlname):
    xmlpath = rootpath + '/xml2/val' #1
    xmlfile = os.path.join(xmlpath,xmlname)
    with open(xmlfile, "r", encoding='UTF-8') as in_file:
      txtname = xmlname[:-4]+'.txt'
      print(txtname)
      txtpath = rootpath + '/labels/val' #2
      if not os.path.exists(txtpath):
        os.makedirs(txtpath)
      txtfile = os.path.join(txtpath,txtname)
      with open(txtfile, "w+" ,encoding='UTF-8') as out_file:
        tree=ET.parse(in_file)
        root = tree.getroot()
        size = root.find('size')
        w = int(size.find('width').text)
        h = int(size.find('height').text)
        out_file.truncate()
        for obj in root.iter('object'):
            difficult = obj.find('difficult').text
            cls = obj.find('name').text
            if cls not in classes or int(difficult)==1:
                continue
            cls_id = classes.index(cls)
            xmlbox = obj.find('bndbox')
            b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))
            bb = convert((w,h), b)
            out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')


if __name__ == "__main__":
    rootpath='/home/jiabei/realcone/data' #3
    xmlpath=rootpath+'/xml2/val' #4
    list=os.listdir(xmlpath)
    for i in range(0,len(list)) :
        path = os.path.join(xmlpath,list[i])
        if ('.xml' in path)or('.XML' in path):
            convert_annotation(rootpath,list[i])
            print('done', i)
        else:
            print('not xml file',i)

分别将xml文件夹中的train和Val转化到labels下的对应的文件夹中。
该步骤后laels文件夹中应有对应的txt文件。

🌟配置各种文件

参数文件配置

主要修改path,train,val,nc,names:⚠️train和val文件夹位置要对应到train和val(图中有误)
在这里插入图片描述

模型文件配置

主要修改nc数
在这里插入图片描述

开始训练

主要修改train.py
在这里插入图片描述

主要是两个配置文件位置的修改,迭代次数两百到三百一般足够了
训练成功标识:结果在runs下的train文件夹下
在这里插入图片描述

开始目标检测

主要修改detect.py:1.权重文件路径,在训练好的runs下面有2.检测对象路径3.参数配置文件路径
在这里插入图片描述

YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而性能高,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。 本课程的YOLOv5使用ultralytics/yolov5,在Ubuntu系统上做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型和性能统计。 希望学习在Windows系统上演示的学员,请前往《YOLOv5(PyTorch)实战:训练自己的数据集(Windows)》课程链接:https://edu.csdn.net/course/detail/30923本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测实战:训练自己的数据集》Ubuntu系统 https://edu.csdn.net/course/detail/30793Windows系统 https://edu.csdn.net/course/detail/30923《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值