首页 > 其他分享 >YoloV5 快速体验

YoloV5 快速体验

时间:2024-04-12 13:33:37浏览次数:22  
标签:YoloV5 -- test train 体验 images import 快速 annotations

准备工作

1. clone yolov5 的仓库
git clone https://github.com/ultralytics/yolov5.git
2. 准备数据集

我看网上好多文章都是在讲如何标注,自己制作数据集;此处提供一个从外网下载的口罩数据集,已经做好标注

https://www.alipan.com/s/bpR8veU9k48

数据集来源于墙外分享,不得商用

下载解压后,可以看到obj目录内有一系列jpg和txt, 每张图片对应于一个txt, txt的内容描述的是图片的标注信息。此数据集内的标注文件格式都是yolo的格式。

我们需要把这些文件分割成多个子集:

  • 训练集: 用于训练的数据集
  • 验证集:---验证-----
  • 测试集:---测试-----

每个数据集有image和labels两部分,需要分别存储在不同的目录,下面的脚本用于完成这些工作(请酌情修改):

import torch
# from IPython.display import Image  # for displaying images
import os 
import random
import shutil
from sklearn.model_selection import train_test_split
import xml.etree.ElementTree as ET
from xml.dom import minidom
from tqdm import tqdm
from PIL import Image, ImageDraw
import numpy as np
import matplotlib.pyplot as plt
import glob
import shutil
random.seed(108)

def make_data_set(path:str):
  # get full path
  images = glob.glob(os.path.join(path, "*.jpg"))
  annotations = glob.glob(os.path.join(path, "*.txt"))
  images.sort()
  annotations.sort()
  # 测试集0.2, 训练集0.8
  train_images, val_images, train_annotations, val_annotations = train_test_split(images, annotations, test_size = 0.2, random_state = 1)
  # 测试0.1 验证 0.1
  val_images, test_images, val_annotations, test_annotations = train_test_split(val_images, val_annotations, test_size = 0.5, random_state = 1)
  images_ = ["images/train", "images/val", "images/test"]
  annotations_ = ["labels/train", "labels/val", "labels/test"]
  for i in range(len(images_)):
    if not os.path.exists(images_[i]):
      os.makedirs(images_[i], exist_ok=True)
    if not os.path.exists(annotations_[i]):
      os.makedirs(annotations_[i],  exist_ok=True)
  for f in train_images:
    shutil.copy(f, images_[0])
  for f in val_images:
    shutil.copy(f, images_[1])
  for f in test_images:
    shutil.copy(f, images_[2])

  for f in train_annotations:
    shutil.copy(f, annotations_[0])
  for f in val_annotations:
    shutil.copy(f, annotations_[1])
  for f in test_annotations:
    shutil.copy(f, annotations_[2])

这个脚本从obj目录提取图片和标注文件,按照8:1:1的比例分割训练、验证和测试数据集,并且将其分别存储不同的目录中

准备训练所需yaml文件:
在yolov5/data下创建mask_data.yaml, 内容如下:

# 路径根据实际情况填写
train: ../images/train/ 
val:  ../images/val/
test: ../images/test/
# 2个分类
nc: 2

names: ["masked","no_mask"]

开始训练

进入yolov5目录,输入以下命令

python train.py --img 480 --cfg yolov5s.yaml  --batch 32 --epochs 100 --data mask_data.yaml --weights yolov5s.pt  --name mask_data --device 0

上面要注意的是--device 选项,对于无显卡的设备,需要改为--device cpu 进行训练,使用cpu训练非常慢

使用云平台训练(推荐)

这里用的是矩池云,该平台为每个新用户提供5元体验券,用作本文的实验性训练来说足够了
注册账号,公众号领算力豆,创建实例这些大家按照平台说明操作就好。

我这里选的算力产品是:Pytorch 2.1.1

实例创建完毕后,将数据集上传至服务器并解压,按照前述步骤clone yolov5代码以及编辑好相关配置,执行上文中的训练命令。对于本文的数据集,一般30分钟内即可搞定

使用训练好的权重数据

训练完成后,终端会输出结果保存在哪个目录,我这里是:

runs/train/mask_data7/weights/best.pt

我们可以使用这个权重数据来进行一些简单的测试

python detect.py --source FF.MP4 --weights best.pt --conf-thres 0.25 

此处有两点需注意:

  1. 如果是在windows 上跑detect, 可能会报出PosixPath问题, 需在detect.py文件头部加入:
import pathlib
pathlib.PosixPath = pathlib.WindowsPath
  1. 如果是没有NV显卡的机器,则需要使用cpu 推理,在上述命令末尾加上 --device cpu 即可,使用cpu推理可能会比较慢

推理完成后,终端会输出结果保存目录

标签:YoloV5,--,test,train,体验,images,import,快速,annotations
From: https://www.cnblogs.com/fyyy94/p/18130988

相关文章

  • v1.9.2-httpsok快速申请免费谷歌SSL证书
    ......
  • 企业快速落地IT服务管理体系的六大关键步骤
    许多企业在实施信息化战略时,一味地追求“技术高消费”而忽视了对信息技术的管理和内部业务流程的变革,侧重点仍然只是事后的技术支持和故障解决方面,随着企业对于信息技术的依赖程度的加重,以及“即时响应”、“随需而变”、“客户导向”、“高可用性”等要求的提出,企业在IT建设方面......
  • 实况窗助力美团打造鸿蒙原生外卖新体验,用户可实时掌握外卖进展
    自2023年华为宣布全新HarmonyOS NEXT蓄势待发,鸿蒙原生应用全面启动以来,已有金融、旅行、社交等多个领域的企业和开发者陆续宣布加入鸿蒙生态。其中,美团作为国内头部的科技零售企业,是首批加入鸿蒙生态的伙伴,其下的美团外卖App基于HarmonyOS SDK高效展开了鸿蒙原生应用的开发,仅用6......
  • 消息中间件RabbitMQ_RabbitMQ快速入门3
    一、入门程序需求:使用简单模式完成消息传递步骤:1.创建工程(生成者、消费者)2.分别添加依赖3.编写生产者发送消息4.编写消费者接收消息 二、小结上述的入门案例中其实使用的是如下的简单模式:在上图的模型中,有以下概念:P:生产者,也就是要发送消......
  • 26、快速画下划线
    方法一:按shift+横线按钮先画出一条横线,然后其他就复制黏贴  方法二:段落—制表位(位置输入35、勾选下划线),然后按【TAB】键就可以自动输出横线,而且横线的长度是统一长的  ......
  • 2024年腾讯云服务器代金券领取及使用教程:轻松享受优惠购云体验
    随着云计算技术的日益发展,越来越多的企业选择将业务迁移到云上,腾讯云作为国内领先的云服务提供商,不断推出优惠活动回馈用户。今天,我们就来详细讲解一下腾讯云优惠券的使用教程,特别是新春服务器代金券的特惠活动。腾讯云优惠券是腾讯云的一种优惠方式,主要包括代金券和折扣券两......
  • 鸿蒙开发人才紧缺!这些项目帮你快速上手HarmonyOS!
    去年9月,华为宣布鸿蒙原生应用全面启动,基于开源鸿蒙开发的HarmonyOSNEXT鸿蒙星河版将在今年秋天正式和消费者见面。该版本系统底座将由华为全线自研,去掉传统安卓AOSP代码。这意味着,鸿蒙星河版将不再兼容安卓应用,京东、淘宝、得物、美团、微博、小红书等上百款应用也相......
  • 元启发式算法库 MEALPY 初体验-遗传算法为例
    简介官网:MealPY官网开源许可:(GPL)V3MEALPY简介官网简介翻译MEALPY(MEta-heuristicALgorithmsinPYthon)是一个提供最新自然启发式元启发算法的Python模块,它是最大的此类Python模块之一。这些算法模仿自然界中的成功过程,包括生物系统以及物理和化学过程。mealPy的目......
  • java如何快速转Go
    话不多说,我说说如何快速转Go 因为项目需要,我不得不使用Go开发项目,不要看Go是一门新语言,其实Java转Go,还是很快的,最多一周时间。 很多人谈起Go,都会联想到云原生相关技术,比如Docker、Kubernetes,并且都会想到Go的性能比Java好,Go是静态编译语言,占用内存少,并且不需要运行在虚拟机......
  • 实况窗助力美团打造鸿蒙原生外卖新体验,用户可实时掌握外卖进展
    自2023年华为宣布全新HarmonyOSNEXT蓄势待发,鸿蒙原生应用全面启动以来,已有金融、旅行、社交等多个领域的企业和开发者陆续宣布加入鸿蒙生态。其中,美团作为国内头部的科技零售企业,是首批加入鸿蒙生态的伙伴,其下的美团外卖App基于HarmonyOSSDK高效展开了鸿蒙原生应用的开发,仅用6周......