YOLOV5学习记录

前言:

计算机视觉

什么是目标检测?

物体分类和目标检测的区别

目标检测,物体的类别和位置

学习选题,口罩检查,人脸识别

算法原理:知乎,csdn,目前还没到这种程度

大大滴崩溃:重装吧。。

打开要下载YOLO的文件夹,其中路径不能有中文

打开官方github连接

GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite

复制HTTP项目链接

输入到git进行拉取

git clone https//....

拉取成功

使用pycharm打开项目

查询cuda版本

nvcc -V

 此处安装的为12.2的cuda

创建虚拟环境

conda create -n 环境名 python=版本号

conda create -n yolov2 python=3.8

查看是否创建成功

conda info --env

进入虚拟环境

conda activate yolov2

输入命令,下载

pip install ultralytics

直接使用这个后面会出错,最好根据下述链接来

!快速教你解决yolov8没有setup.py的问题_没有setup.py文件-CSDN博客

安装pytorch

官方链接:

PyTorch

选好配置,复制链接

安装yolo

pip install yolo

检查

新建一个est.py文件,加入以下代码并运行

import torch#查看版本
print(torch.__version__)
#查看GPU是否可用
print(torch.cuda.is_available())
#返回设备GPU个数
print(torch.cuda.device_count())
#查看对应cuda的版本号
print(torch.backends.cudnn.version())
print(torch.version.cuda)
quit()

用命令行启动模型

官方文档:

检测 -Ultralytics YOLO 文档

推理命令:

yolo predict model=yolov8n.pt source='ultralytics/assets/bus.jpg'

推理成功

根据路径找到代码

核心配置文件

文档中下载权重文件,放到根目录下

下载coco128数据集

https://ultralytics.com/assets/coco128.zip

在datasets文件夹中建立coco128文件夹,把下载好的coco128数据集放进去

coco128的格式

images:下面的子文件夹为train2017,存放所有的训练图片

labels:下面的子文件夹为labels2017,存放所有的标注标签

yaml文件

我下的coco128没有yaml,自己新建一个txt文件改名字写内容就好

自己建立数据集

将yolov8.yaml复制到datasets文件夹下

在datasets下新建一个data .yaml

安装labelme:

labelme的安装及使用_labelme安装-CSDN博客

打开labelme:

方法一:Anaconda Prompt里输入labelme

我发现我还没完全安装labelme

但是安装完后直接输入labelme还是不能打开

方法二:Anaconda Prompt里输入python -m labelme,使用python打开

进入labelme虚拟环境

conda activate labelme

 使用python打开

python -m labelme

成功打开

方法三:在pycharm里面打开

labelme的使用:

界面

  创建文件夹

wzry为自定义数据集名字,其余需一致

images是图片

labels是标签

train用于训练

test用于测试

json转txt

在yolov5-master中创建一个.py文件,代码如下

import json  # 用于解析JSON文件
import os  # 用于与操作系统交互,如文件路径操作name2id = {'face': 0}  # 标签名称,根据情况更改def convert(img_size, box):  # 将边界框的像素坐标转换为归一化坐标dw = 1. / (img_size[0])  # 输入图像的宽度和高度dh = 1. / (img_size[1])x = (box[0] + box[2]) / 2.0 - 1  # 输入边界框的坐标(x1, y1, x2, y2)y = (box[1] + box[3]) / 2.0 - 1w = box[2] - box[0]h = box[3] - box[1]x = x * dww = w * dwy = y * dhh = h * dhreturn (x, y, w, h)  # x和y是边界框中心的归一化坐标,w和h是边界框的宽度和高度的归一化值def decode_json(json_floder_path, json_name):   # json_floder_path包含JSON文件的文件夹路径txt_name = 'F:\\YOLOV5\\yolov5-master\\FaceRecognition\\datasets\\labels\\txt' + json_name[0:-5] + '.txt'  # json_name要解析的JSON文件名# 存放txt的路径,根据情况更改txt_file = open(txt_name, 'w')json_path = os.path.join(json_floder_path, json_name)data = json.load(open(json_path, 'r', encoding='utf-8'))  # 让中文标签可识别img_w = data['imageWidth']img_h = data['imageHeight']for i in data['shapes']:label_name = i['label']if (i['shape_type'] == 'rectangle'):x1 = int(i['points'][0][0])y1 = int(i['points'][0][1])x2 = int(i['points'][1][0])y2 = int(i['points'][1][1])bb = (x1, y1, x2, y2)bbox = convert((img_w, img_h), bb)txt_file.write(str(name2id[label_name]) + " " + " ".join([str(a) for a in bbox]) + '\n')if __name__ == "__main__":json_floder_path = 'F:\\YOLOV5\\yolov5-master\\FaceRecognition\\datasets\\labels\\train'# 存放json的文件夹的路径json_names = os.listdir(json_floder_path)for json_name in json_names:decode_json(json_floder_path, json_name)

修改配置文件

coco128.yaml->wzry_parameter.yaml

在yolov5/data/coco128.yaml中先复制一份,粘贴到wzry中,改名为wzry_parameter.yaml(意义为wzry的参数配置)

wzry_parameter.yaml文件需要修改的参数是nc与names。nc是标签名个数,names就是标签的名字

yolov5x.yaml->wzry_model.yaml

在yolov5/models先复制一份yolov5x.yaml至wzry,更名为wzry_model.yaml(意为模型),只将如下的nc修改为训练集种类即可

开始训练train

调参

参数解释:

手把手带你调参YOLOv5 (v5.0-v7.0)(推理)_yolov5调参-CSDN博客

"--weights" # 修改处 初始权重
"--cfg" # 修改处 模型训练文件 default=ROOT / 'wzry/wzry_model.yaml'
"--data" # 修改处 数据集参数文件  default=ROOT / "wzry/wzry_parameter.yaml"
"--hyp" # 超参数设置,是人为设定的参数。包括学习率啥的等等,可不改
"--epochs"# 修改处 训练轮数 default=300 
# 决定了训练时间与训练效果。如果选择训练模型是yolov5x.yaml,
# 那么大约200轮数值就稳定下来了
"--batch-size"# 修改处 batch size default=32 
# 这个要设置地小一些,
# 否则会out of memory。这个决定了我们训练的速度
"--imgsz" # 修改处 图片大小 default=384 ,
# 虽然我们训练集的图片是已经固定下来了,
# 但是传入神经网络时可以resize大小,太大了训练时间会很长,
# 且有可能报错,这个根据自己情况调小一些
"--resume" # 断续训练 如果说在训练过程中意外地中断,
# 那么下一次可以在这里填True,会接着上一次runs/exp继续训练
"--device" # 修改处 选择 填0是电脑默认的CUDA,前提是电脑已经安装了CUDA才能GPU加速训练
"--workers"# 修改处 越大读取数据越快,但是太大了也会报错,因此也要根据自己状况填小

问题一

Dataset not found , missing paths ['D:\\YOLOV5\\yolov5-master\\wzry\\datasets\\images\\train']

脚本无法找到名为 D:\\YOLOV5\\yolov5-master\\wzry\\datasets\\images\\train 的文件夹。

要把新建的文件夹建在'D:\\YOLOV5\\yolov5-master\下面

问题二

Downloading https://ultralytics.com/assets/Arial.Unicode.ttf to C:\Users\shata\AppData\Roaming\Ultralytics\Arial.Unicode.ttf...

urllib.error.HTTPError: HTTP Error 301: The HTTP server returned a redirect error that would lead to an infinite loop.

Arial.ttf下载超时

 脚本尝试从 https://ultralytics.com/assets/Arial.Unicode.ttf 下载字体文件,但在这个过程中遇到了一个 HTTP 错误 301,这是一个永久重定向的错误。这通常意味着服务器返回了一个重定向响应,但脚本没有正确处理这个重定向,导致它进入了无限循环。

将Arial.ttf下好,手动放到yolov5根目录下,改名为Arial.Unicode.ttf 

链接:​​​​​​Arial.ttf_免费高速下载|百度网盘-分享无限制 (baidu.com)
提取码:oznt

问题三

Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x.pt to yolov5x.pt...

无法顺利下载权重文件yolov5x.pt

yolov5x.pt下好,手动放到yolov5根目录下

链接:yolov5weights.zip_免费高速下载|百度网盘-分享无限制 (baidu.com)
提取码:t845

问题四

OSError: [WinError 1455] 页面文件太小,无法完成操作。

多种方法彻底解决pycharm中: OSError: [WinError 1455] 页面文件太小,无法完成操作 的问题_pycharm里面运行中显示页面文件太小-CSDN博客

一般是因为没分配虚拟内存 

问题五

train: No labels found in F:\YOLOV5\yolov5-master\FaceRecognition\datasets\labels\train.cache, can not start training. 

这意味着在指定的路径F:\YOLOV5\yolov5-master\FaceRecognition\datasets\labels\train.cache下没有找到任何标签(labels),因此无法开始训练过程

将转换好的txt文件们放到错误提示的文件夹里面

问题六

Traceback (most recent call last): File "F:\YOLOV5\yolov5-master\utils\dataloaders.py", line 29, in <module> from utils.augmentations import ( ModuleNotFoundError: No module named 'utils'

这个错误消息表明在尝试导入一个名为utils的模块时发生了问题。具体来说,错误ModuleNotFoundError: No module named 'utils'表示Python解释器在当前的工作目录或已安装的模块中找不到名为utils的模块。

No module named ‘utils‘,untils库的安装,不是pip和conda指令,特别可以的教程,还有为什么不能的原因,绝对良心。_no module named 'utils-CSDN博客

 下面创建了名为xxx的虚拟环境,指定虚拟环境的 Python 版本为3.6:

conda create -n xxx python=3.6

进入名为xxx的虚拟环境:

source activate xxx
# or
conda activate xxx

退出当前虚拟环境:

conda deactivate

删除名为xxx的虚拟环境

conda remove -n xxx --all


查看本地已有哪些虚拟环境:

conda info --env

打开终端Anaconda Prompt输入pip install utils

无效,试一下装这个

pip install python-utils

问题七

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 234: illegal multibyte sequence

【Python】解决UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x9A in position xxx: illegal multibyte_unicodedecodeerror: 'gbk' codec can't decode byte -CSDN博客

把 parameter.yaml 里面的注释全删了

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

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

相关文章

Java文件管理

文件管理 Java中的对文件的管理&#xff0c;通过java.io包中的File类实现。Java中文件的管理&#xff0c;主要是针对文件或是目录路径名的管理&#xff0c;包括文件的属性信息&#xff0c;文件的检查&#xff0c;文件的删除等&#xff0c;但不包括文件的访问 file类 Java中的…

人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程17-模型的量化与部署之剪枝技巧与代码详解。模型剪枝是深度学习领域中一项关键的技术&#xff0c;旨在减少神经网络中的冗余权重&#xff0c;从而降低计算成本和内存占用&#xff0c;同…

Linux--实现线程池(万字详解)

目录 1.概念 2.封装原生线程方便使用 3.线程池工作日志 4.线程池需要处理的任务 5.进程池的实现 6.线程池运行测试 7.优化线程池&#xff08;单例模式 &#xff09; 单例模式概念 优化后的代码 8.测试单例模式 1.概念 线程池:* 一种线程使用模式。线程过多会带来调度…

FastAPI(六十五)实战开发《在线课程学习系统》基础架构的搭建

在之前三篇&#xff0c;我们分享的就是需求的分析&#xff0c;基本接口的整理&#xff0c;数据库链接的配置。这次我们分享项目的基本框架&#xff0c;目录结构大致如下&#xff1a; common目录&#xff1a; 通用目录&#xff0c;放一些通用的处理 models目录&#xf…

【基础】模拟题 角色授权类

3413. DHCP服务器 题目 提交记录 讨论 题解 视频讲解 动态主机配置协议&#xff08;Dynamic Host Configuration Protocol, DHCP&#xff09;是一种自动为网络客户端分配 IP 地址的网络协议。 当支持该协议的计算机刚刚接入网络时&#xff0c;它可以启动一个 DHCP 客户…

【Git远程操作】克隆远程仓库 https协议 | ssh协议

目录 前言 克隆远程仓库https协议 克隆远程仓库ssh协议 前言 这四个都是Git给我们提供的数据传输的协议&#xff0c;最常使用的还是https和ssh协议。本篇主要介绍还是这两种协议。 ssh协议&#xff1a;使用的公钥加密和公钥登录的机制&#xff08;体现的是实用性和安全性&am…

Nginx的HA高可用的搭建

1. 什么是高可用 高可用&#xff08;High Availability, HA&#xff09;是一种系统设计策略&#xff0c;旨在确保服务或应用在面对硬件故障、软件缺陷或任何其他异常情况时&#xff0c;仍能持续稳定地运行。它通过实现冗余性、故障转移、负载均衡、数据一致性、监控自动化、预防…

Java并发04之线程同步机制

文章目录 1 线程安全1.1 线程安全的变量1.2 Spring Bean1.3 如果保证线程安全 2 synchronized关键字2.1 Java对象头2.1.1 对象组成部分2.1.2 锁类型2.1.3 锁对象 2.2 synchronized底层实现2.2.1 无锁状态2.2.2 偏向锁状态2.2.3 轻量级锁状态2.2.4 重量级锁2.2.5 锁类型总结2.2.…

C++11 容器emplace方法刨析

如果是直接插入对象 push_back()和emplace_back()没有区别但如果直接传入构造函数所需参数&#xff0c;emplace_back()会直接在容器底层构造对象&#xff0c;省去了调用拷贝构造或者移动构造的过程 class Test { public:Test(int a){cout<<"Test(int)"<<…

链表(4) ----跳表

跳表&#xff08;Skip List&#xff09;是一种随机化的数据结构&#xff0c;用于替代平衡树&#xff08;如 AVL 树或红黑树&#xff09;。它是基于多层链表的&#xff0c;每一层都是上一层的子集。跳表可以提供与平衡树相似的搜索性能&#xff0c;即在最坏情况下&#xff0c;搜…

zlgcan,周立功Can设备,Qt中间件,QtCanBus插件,即插即用

新增zlgcan插件&#xff0c;需要请看下方视频回复联系&#xff01; 视频链接地址&#xff1a; Qt,canbus manager,周立功,zlgcan插件演示,需要请留言_哔哩哔哩_bilibili

反爬虫策略中的IP地址轮换如何实现?挑战与对策

当今互联网时代&#xff0c;各类网站、网络平台背后隐藏着大量数据&#xff0c;广告数据收集、市场数据收集都需要依托爬虫技术&#xff0c;但很多网站通过反爬虫技术限制或屏蔽爬虫的访问&#xff0c;这给数据收集带来不小的挑战。 为了规避这些反爬虫策略&#xff0c;开发人…

千万罚单,稠州商业银行屡教不改?

撰稿|芋圆 来源|贝多财经 今年&#xff0c;浙江稠州商业银行&#xff08;以下简称“稠州商行”&#xff09;似乎进入了多事之秋&#xff0c;刚刚兼并两家经营不善的村镇银行就紧接着收到大额罚单。 该行在2023年的经营业绩不算难看。据2023年年报&#xff0c;稠州商行的业绩从…

L2TP(Client-initiated模式)over IPSEC远程拨号实验

一、实验目的及拓扑 实验目的&#xff1a;通过L2TP客户端与LNS服务端建立L2TP隧道并承载在IPSEC网络上。其中L2TPoverIPsec客户端采用windows软终端模式&#xff08;Cloud3&#xff09;&#xff0c;AR1上将内网LNS&#xff08;FW1&#xff09;服务器采用NAT方式向外网进行映射…

【机器学习】使用Python的dlib库实现人脸识别技术

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、传统人脸识别技术1. 基于几何特征的方法2. 基于模板匹配的方法3. 基于统计学习的方法 三、深度学习在脸识别中的应用1. 卷积神经网络&#xff08;CNN&#xff09;2. FaceNet和ArcFace 四、使用Python和dlib库实…

Spring1(开发工具安装及配置 初始Spring 解耦实现 SpringIOC SpringDI Spring常见面试题)

目录 一 、开发工具安装及配置 IDEA简介 安装 配置 常⽤快捷键 部署maven 1.配置环境​编辑 2.创建一个maven项目​编辑 选择maven​编辑​编辑 二、初始Spring Spring历史由来 Spring体系结构 Spring生态系统 三、解耦实现 jdbc 三层思想​编辑 四…

可视化剪辑,账号矩阵,视频分发,聚合私信一体化营销工具 源----代码开发部署方案

可视化剪辑&#xff1a; 为了实现可视化剪辑功能&#xff0c;可以使用流行的视频编辑软件或者开发自己的视频编辑工具。其中&#xff0c;通过设计用户友好的界面&#xff0c;用户可以简单地拖拽和放大缩小视频片段&#xff0c;剪辑出满足需求的视频。在开发过程中&#xff0c;可…

多源字段聚合重塑算法

要求如下 [[{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",},{"oone": "评估是否聘请第三方机构","otwo": null,"othree": "test",}],[{"oon…

python爬虫获取网易云音乐评论歌词以及歌曲地址

python爬虫获取网易云音乐评论歌词以及歌曲地址 一.寻找数据接口二.对负载分析三.寻找参数加密过程1.首先找到评论的请求包并找到发起程序2.寻找js加密的代码 四.扣取js的加密源码1.加密函数参数分析①.JSON.stringify(i0x)②bse6Y(["流泪", "强"])③bse6Y…

探索元宇宙:开启数字世界的奇妙之旅【小学生也能读懂】

元宇宙&#xff1a;数字新纪元的曙光 随着技术的飞速发展&#xff0c;我们正站在一个全新的数字时代的门槛上。元宇宙&#xff08;Metaverse&#xff09;&#xff0c;这个听起来充满未来感的词汇&#xff0c;已经成为科技界的热门话题。它不仅仅是一个概念&#xff0c;更是一个…