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:基…

c++用户管理信息(双向链表)

c用户管理信息---双向链表 ListStu双向链表--(把前面的单链表改一下,就直接可以用)ListStu.hListStu.cpp ListStu双向链表–(把前面的单链表改一下,就直接可以用) ListStu.h #pragma once #include "…

yarn常用命令小记

安装 npm install -g yarn查看版本 yarn -v初始化项目与依赖管理 yarn init&#xff1a;与npm init一样通过交互式会话生成一个新的package.jason文件以初始化项目&#xff1b;跳过会话可使用yarn init --yes&#xff0c;简写yarn init -yyarn add <package><versi…

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

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

java 中开源的html解析库Jsoup 简单例子

下面是一个使用Jsoup库解析HTML的简单Java例子。这个例子展示了如何使用Jsoup从一个HTML字符串中提取数据。 首先&#xff0c;确保你已经将Jsoup作为依赖项添加到你的项目中。如果你使用的是Maven&#xff0c;可以在pom.xml文件中添加以下依赖&#xff1a; &…

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

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

【达梦数据库】通过系统函数来配置sqllog

环境说明&#xff1a;达梦2024年Q4季度版之后版本支持 通过系统函数进行sqllog参数配置 -- 新增模式 SLOG_CONFIG1 和 SLOG_CONFIG2&#xff1a; SP_SET_SQLLOG_INI([SLOG_CONFIG1]FILE_PATH../log;PART_STOR0;[SLOG_CONFIG2]SWITCH_MODE2;SWITCH_LIMIT128);-- 删除模式名为 S…

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

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

PDF加粗内容重复读取解决方案

文章目录 前言发现问题解决方案问题分析大致逻辑 show my code 前言 在使用pdfplumber读取PDF的过程中&#xff0c;由于加黑的内容会被莫名其妙的读取两次&#xff0c;带来了很大的困扰。这篇文章将给出解决方案。 发现问题 在在使用pdfplumber读取PDF的过程中&#xff0c;读…

LLaMA 2 - 你所需要的一切资源

摘录 关于 LLaMA 2 的全部资源&#xff0c;如何去测试、训练并部署它。 LLaMA 2 是一个由 Meta 开发的大型语言模型&#xff0c;是 LLaMA 1 的继任者。LLaMA 2 可通过 AWS、Hugging Face 等提供商获取&#xff0c;并免费用于研究和商业用途。LLaMA 2 预训练模型在 2 万亿个标记…

HarmonyOS开发技术全面分析

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

python读写文件操作的三大基本步骤

目录 基本步骤 常用函数 open()函数 close()函数 read()函数 readlines()函数 readline()函数 write()函数 writelines()函数 with语句 读写操作的应用&#xff1a; 拷贝文件 with 语句的嵌套 逐行拷贝 基本步骤 1. 打开文件&#xff1a;open(filepath, mode, en…

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

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

css中, grid-auto-rows: 怎样简写在grid:中

grid-auto-rows:100px; grid-template-columns:1fr 1fr; &#x1f446;可以写成&#x1f447; grid:auto-flow 100px / 1fr 1fr;在CSS Grid布局中&#xff0c;grid-auto-rows 属性用于指定自动生成的网格容器的行的大小。如果你想要将 grid-auto-rows 的值简写在 grid 属性中&a…

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

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

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

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

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

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

关键字查找,将匹配到的词标红

效果图&#xff1a; 候补 特别说明&#xff1a; 该文有很多新奇的用法&#xff0c;包括载入ui文件、连接信号和控件等等&#xff0c;有很多值得学习的地方 具体实现&#xff1a; 配置文件 #! [0] QT widgets uitoolsHEADERS textfinder.h SOURCES textfinder.cpp main.cpp…