yolov5-tracking-xxxsort yolov5融合六种跟踪算法(二)--目标识别

本次开源计划主要针对大学生无人机相关竞赛的视觉算法开发。
开源代码仓库链接:https://github.com/zzhmx/yolov5-tracking-xxxsort.git
先按照之前的博客配置好环境:
yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)–环境配置GPU版本
yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)–环境配置CPU版本

1.训练模型

在下载好的代码包中,如果要训练自己的检测模型,需要在程序包中的yolov5文件夹中操作,这个文件夹里面的程序其实就是yolov5的开源代码,想要训练自己模型可以看下面的流程:
这是yolov5文件夹里面的文件。
在这里插入图片描述

1)在yolov5-5.0创建一个新的文件夹,比如person_data,在此文件夹下创建
labels (存放labelimg生成的标注文件)
images (存放你采集好的用于标注的图片)
ImageSets (在此文件夹再创建一个Main文件夹)

用手机拍摄两段包含你的识别目标的视频,一段40秒左右,一段10秒左右,40秒的视频用于训练。拍摄完成上传至电脑

2)安装darklabel,https://download.csdn.net/download/weixin_45398265/88860850
在这里插入图片描述

3)
标注完所有图像之后就可以查看标记结果了,最终得到txt格式的标注数据
在这里插入图片描述

运行下面的代码生成训练集、验证集和测试集:

# coding:utf-8
import os
import random
import argparse
from os import getcwdparser = argparse.ArgumentParser()
#txt文件的地址,根据自己的数据进行修改
parser.add_argument('--xml_path', default='labels', type=str, help='input xml label path')
#数据集的划分,地址选择自己数据下的ImageSets/Main
parser.add_argument('--txt_path', default='ImageSets/Main', type=str, help='output txt label path')
opt = parser.parse_args()trainval_percent = 0.8
train_percent = 0.8
xmlfilepath = opt.xml_path
txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
if not os.path.exists(txtsavepath):os.makedirs(txtsavepath)num = len(total_xml)
list_index = range(num)
tv = int(num * trainval_percent)
tr = int(tv * train_percent)
trainval = random.sample(list_index, tv)
train = random.sample(trainval, tr)file_trainval = open(txtsavepath + '/trainval.txt', 'w')
file_test = open(txtsavepath + '/test.txt', 'w')
file_train = open(txtsavepath + '/train.txt', 'w')
file_val = open(txtsavepath + '/val.txt', 'w')for i in list_index:name = total_xml[i][:-4] + '\n'if i in trainval:file_trainval.write(name)if i in train:file_train.write(name)else:file_val.write(name)else:file_test.write(name)file_trainval.close()
file_train.close()
file_val.close()
file_test.close()sets = ['train', 'val', 'test']
abs_path = os.getcwd()
print(abs_path)
for image_set in sets:image_ids = open('//home//jcfh//Desktop//yolov5-5.0//map_gongxunsai//ImageSets//Main//%s.txt' % (image_set)).read().strip().split()# 改成你自己的Main路径list_file = open('//home//jcfh//Desktop//yolov5-5.0//map_gongxunsai//%s.txt' % (image_set), 'w')# 改成你自己的ImageSets路径for image_id in image_ids:list_file.write(abs_path + '//images//%s.jpg\n' % (image_id))list_file.close()

运行代码后,生成三个txt文件
在这里插入图片描述

3)在yolov5目录下的data文件夹下新建一个person.yaml文件(可以自定义命名)
在这里插入图片描述

按照这种格式,改上你自己的路径,nc为你训练的模型一共有几类,如果只是检测人那就是1,names是你的目标的名字,如person。

4)在yolov5-5.0目录下的model文件夹下是模型的配置文件,这边提供s、m、l、x版本,逐渐增大(随着架构的增大,训练时间也是逐渐增大),假设采用yolov5s.yaml,只用修改一个参数,把nc改成自己的类别数;
在这里插入图片描述

自定义数据集就算是创建完毕了,接下来就是训练模型了。

当然标注视频文件也可以使用基于大模型的自动标注的软件会省力一些,有兴趣的同学自己探索。数据集整理好,yaml配置文件改好,将train.py中的参数改好就可以跑起来进行训练了。

5)在跟踪那一层文件夹里面weights文件夹里面有三个预训练模型:yolov5s.pt、yolov5m.pt、yolov5l.pt,官方还有一个yolov5x.pt是最大的一个,可以自己去官方下载。s是最轻量化的,我们假设使用该模型。我们需要修改train.py程序里面的几个参数:
在这里插入图片描述

epochs:指的就是训练过程中整个数据集将被迭代多少次,也就是训练轮次。第一次可以先设成100,生成的文件在runs/train文件夹的exp文件下,每运行一次训练代码,exp的序列号就会加一,如exp1,exp2。。。。里面的weights文件夹保存的best.pt就是你训练生成的最优模型。
batch-size:一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点,尽量调到让GPU所有显存都被用满,可以在任务管理器查看gpu使用情况。
cfg:存储模型结构的配置文件
data:存储训练、测试数据的文件
img-size:输入图片宽高,显卡不行你就调小点。
rect:进行矩形训练
resume:恢复最近保存的模型开始训练
nosave:仅保存最终checkpoint
notest:仅测试最后的epoch
evolve:进化超参数
bucket:gsutil bucket
cache-images:缓存图像以加快训练速度
weights:权重文件路径
name: 重命名results.txt to results_name.txt
device:cuda device, i.e. 0 or 0,1,2,3 or cpu
adam:使用adam优化
multi-scale:多尺度训练,img-size +/- 50%
single-cls:单类别的训练集

如果有报错:ImportError: cannot import name ‘COMMON_SAFE_ASCII_CHARACTERS’ from ‘charset_normalizer.constant’
可以在你的虚拟环境中运行:

pip install chardet

6)运行detect.py程序
在这里插入图片描述

weights为你要使用的yolov5模型路径
source为你要推理的视频或者图像或者摄像头路径,摄像头的话填0即可。在这里可以放上那段10秒视频的路径。可以选中你的视频文件,右击鼠标,在属性里面看路径,但是别忘了路径要加上你的文件名,例如你的test.mp4文件在属性里看到的路径是F:\yolo_tracking-8.0但是填写的时候要写成:F:\yolo_tracking-8.0\test.mp4
data 改成你之前创建的person.yaml的路径
conf-thres 是检测的阈值,置信度超过这个数才会显示对象
view-img 是设置检测视频的时候是否实时展示结果,在view-img逗号后面可以加一个:

default=True,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【快速搞定Webpack5】处理样式资源(三)

本次内容我们将学习使用webpack如何处理css、less、sass、scss等样式资源 介绍 webpack本身是不能识别样式资源的,所以我们需要借助loader包来帮助webpack解析样式资源 我们找loader都应该去官方文档中查找对应的loader,然后学习使用。 官方文档找不到…

Linux中安装Nginx及日常配置使用

高性能的http服务器/反向代理服务器。官方测试支持5万并发,CPU、内存等消耗较低且运行稳定 使用场景 Http服务器。 Nginx可以单独提供Http服务,做为静态网页的服务器。虚拟主机。 可以在一台服务器虚拟出多个网站。反向代理与负载均衡。 Nginx做反向代理…

LaWGPT—基于中文法律知识的大模型

文章目录 LaWGPT:基于中文法律知识的大语言模型数据构建模型及训练步骤两个阶段二次训练流程指令精调步骤计算资源 项目结构模型部署及推理 LawGPT_zh:中文法律大模型(獬豸)数据构建知识问答模型推理训练步骤 LaWGPT:基…

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用,致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控,支持多维度分析攻击面。利用可视化…

《图解设计模式》笔记(一)适应设计模式

图灵社区 - 图解设计模式 - 随书下载 评论区 雨帆 2017-01-11 16:14:04 对于设计模式,我个人认为,其实代码和设计原则才是最好的老师。理解了 SOLID,如何 SOLID,自然而然地就用起来设计模式了。Github 上有一个 tdd-training&…

redis复习笔记06(小滴课堂)

分布式锁核心知识介绍和注意事项 基于Redis实现分布式锁的几种坑 综合伪代码: 运行:

HarmonyOS开发技术全面分析

系统定义 HarmonyOS 是一款 “ 面向未来 ” 、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够…

探索亚马逊自养号测评的实际效果与使用感受

自养号在亚马逊测评中的应用给了我们一种全新的体验。通过使用亚马逊自养号,我们发现了许多令人满意的优势,这些优势不仅提升了我们的测评效率,还增加了我们的信誉度。 首先,自养号的质量可控性给了我们极大的信心。我们可以自行…

基于CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 CNN(卷积神经网络)部分 4.2 GRU(门控循环单元)部分 4.3 Attention机制部分 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版…

【Vue渗透】Vue站点渗透思路

原文地址 极核GetShell 前言 本文经验适用于前端用Webpack打包的Vue站点,阅读完本文,可以识别出Webpack打包的Vue站点,同时可以发现该Vue站点的路由。 成果而言:可能可以发现未授权访问。 识别Vue 识别出Webpack打包的Vue站…

FFmpeg的HEVC解码器源代码学习笔记-1

一直想写一个HEVC的码流解析工具,看了雷神264码流解析工具,本来想尝试模仿写一个相似的265码流分析工具,但是发现265的解码过程和结构体和264的不太一样,很多结构体并没有完全暴露出来,没有想到很好的方法获得量化参数…

自增a++和自减a--详细解析

1.自增、自减运算符是什么,有什么作用,需要注意什么? 、–;对当前变量值1、-1只能操作变量,不能操作字面量 2.自增、自减运算符放在变量前后有区别吗? 如果单独使用放前放后是没有区别的非单独使用:在变量前,先进行变量自增/…

unity学习(36)——角色选取界面(自制美工)

1.添加一个背景图片,记不住可以查之前的资料(4) 图片拖入asset,属性设成sprite;把图片拖到source image中;colour白色(透明,点一下右边的笔即可);material为…

SpringCloud-Gateway网关的使用

本文介绍如何再 SpringCloud 项目中引入 Gateway 网关并完成网关服务的调用。Gateway 网关是一个在微服务架构中起到入口和路由控制的关键组件。它负责处理客户端请求,进行路由决策,并将请求转发到相应的微服务。Gateway 网关还可以实现负载均衡、安全认…

vue大文件读取部分内容,避免重复加载大文件,造成流量浪费

使用场景:项目点云地图是pcd文件,但是文件可能上百兆,我需要获取到文件中的版本信息,跟本地的缓存文件做比较,如果不一致,才会加载整个文件。从而节省流量。 避免重复加载整个“.pcd文件,以最大…

【PX4学习笔记】04.QGC地面站的使用

目录 文章目录 目录PX4代码烧入PX4固件代码的烧入方式1PX4固件代码的烧入方式2 QGC地面站的基础使用连接地面站的方式查看关键的硬件信息 QGC地面站的Application Settings模块Application Settings模块-常规界面单位其他设置数据持久化飞机中的数传日志飞行视图计划视图自动连…

观察者模式, 发布-订阅模式, 监听器模式

观察者模式, 发布-订阅模式, 监听器模式 观察者模式 观察者模式是一种行为型设计模式, 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新 角色模型和结构图 在观察者模式中,只有两种…

HarmonyOS Stage模型基本概念讲解

本文 我们来说harmonyos中的一种应用模型 Stage模型 官方提供了两种模型 一种是早期的 FA模型 另一种就是就是 harmonyos 3.1才开始的新增的一种模型 Stage模型 目前来讲 Stage 会成为现在乃至将来 长期推进的一种模型 也就是 无论是 现在的harmonyos 4.0 乃至 之后要发布的 …

IP地理位置查询定位:技术原理与实际应用

在互联网时代,IP地址是连接世界的桥梁,而了解IP地址的地理位置对于网络管理、个性化服务以及安全监控都至关重要。IP数据云将深入探讨IP地理位置查询定位的技术原理、实际应用场景以及相关的隐私保护问题,旨在为读者提供全面了解和应用该技术…

印刷机械故障诊断:虹科MSR165助力Müller Martini AG成功案例

在为杂志装订机开发新产品的过程中,作为印刷后处理机械领域的全球领导者,Mller Martini AG公司发现了传感器故障的问题。通过使用虹科MSR 微型加速度数据记录仪,成功地确定了故障的原因。 新杂志装订机中的三刀修整装置的故障部件是边缘传感器…