yolov5口罩算法实战演练(PyTorch + Conda + YOLO)-- 内含不使用 Conda 方法

YOLOv5口罩检测实战
部署运行你感兴趣的模型镜像

一、 创建虚拟环境

下载口罩算法: yolov5-mask-42-master

  1. 进入项目文件夹,cmd 进入目录

  1. 输入代码,创建 py20251110 虚拟环境
conda create -n py20251110 python==3.10

在这里插入图片描述

  1. 激活虚拟环境 py20251110
conda activate py20251110

在这里插入图片描述

补充:如何找练习的项目

使用 github 进行查找 https://github.com/

  • 搜索框搜索想练习的算法,查看其收藏数选择高质量算法进行练习

在这里插入图片描述

  • issues数 决定了算法的稳定度

在这里插入图片描述

五分钟教你使用GitHub寻找优质开源项目

二、安装相关依赖

  1. 安装 pytorch

参考:手把手带你实战YOLOv8 - 从环境搭建到目标检测

  1. 安装 ultralytics
pip install -U ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/
  1. 安装依赖 requirements.txt

可使用 dir 查看文件目录

dir

在这里插入图片描述

  • requirements.txt 文件里包含了所有该项目需要下载的依赖
pip install -r requirements.txt
  • 安装过程遇到警告:某些版本过低

在这里插入图片描述

pip install --upgrade torch torchvision numpy

pip install --upgrade numpy
  1. 安装计算目标检测精度
pip install pycocotools
  1. 图形化界面依赖
conda install pyqt5

不要在一个环境里混用 conda 和 pip 装同名包

补充:用 Python 内置工具实现 Conda 功能(有些公司域控)

  • 使用 Python 自带的 venv + pip 代替 Conda 功能

Conda 的核心价值是:创建隔离环境 + 安装科学计算包。Python 自带的 venv + pip 完全可以替代

以下步骤均在 PyCharm 中执行,仍是使用 YOLO5 口罩算法

  • 步骤 1:创建虚拟环境(等效于 conda create)
# 创建名为 yolov5-env 的环境
python -m venv yolov5-env

这个命令不需要管理员权限,也不会被域控拦截(因为是 Python 标准库)

在这里插入图片描述

  • 步骤 2:激活环境(等效于 conda activate)
# Windows CMD (我用的这个)
yolov5-env\Scripts\activate

# PowerShell(如果报错,先运行:Set-ExecutionPolicy -Scope CurrentUser RemoteSigned)
yolov5-env\Scripts\Activate.ps1

在这里插入图片描述

激活后,命令行前缀会变成:

在这里插入图片描述

  • 步骤3:安装 Pytorch (等效于 conda install)

Pytorch cuda版本( GPU 版本通常在 2.4GB 左右)

# 使用 官方 + 国内镜像组合 安装 CUDA 12.1 版本
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://pypi.tuna.tsinghua.edu.cn/simple --extra-index-url https://mirror.sjtu.edu.cn/pytorch-wheels/cu121

安装后执行命令检查安装情况

python -c "import torch; print('PyTorch version:', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('CUDA version used to build PyTorch:', torch.version.cuda)"

正确显示
在这里插入图片描述

  • 步骤4:安装项目依赖 requirements.txt
pip install -r requirements.txt
  • 步骤5:运行检测代码缺什么安什么

  • 检测代码

python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt --conf 0.25
  • 安装以下内容

ultralytics

pip install -U ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple/

安装计算目标检测精度

pip install pycocotools

图形化界面依赖

pip install pyqt5
  • 步骤6:添加解释器

三、测试代码

1. Anaconda Prompt 测试

在 yolov5-mask-42-master 文件夹内 Anaconda Prompt 执行测试代码

使用到以下文件:

在这里插入图片描述

输入测试代码

python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt
  • 代码含义解读

使用的 --weights 权重文件是: pretrained / yolov5s.pt 模型
需要检测 --source 的图片是:data/images/bus.jpg

在这里插入图片描述

  • 检测结果解读

图片结果存放在:runs \ detect \ exp2 文件处

2. PyCharm 测试

PyCharm 解释器设置

  • PyCharm打开该项目,右下角设置解释器

在这里插入图片描述

  • 添加解释器

在这里插入图片描述

  • 添加 conda 会自动带出相关虚拟环境

在这里插入图片描述

  • 关联项目

在这里插入图片描述

  • 配置成功后主界面右下角显示该虚拟环境,打开终端自动进入该虚拟环境

在这里插入图片描述
在这里插入图片描述

  • 输入测试代码
python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt

在这里插入图片描述

四、数据标注

1. 安装软件

虚拟环境安装数据标注软件

1)进入算法文件F:\yolov\yolov5-mask-42-master cmd

在这里插入图片描述

2)进入虚拟环境

conda activate py20251110

3)下载数据标注软件

pip install labelimg

4)下载成功输入,打开软件

pip install --upgrade PyQt5==5.15.9

在这里插入图片描述
在这里插入图片描述

若软件总闪退建议直接下载 labelImg.exe

labelImg 免命令安装(Windows)

在这里插入图片描述

2. 配置软件

修改为YOLO(标注结果 YOLO:txt 格式; CreateML:json 格式;PasclVOC:xml 格式)

在这里插入图片描述

3. 使用软件

1)Open Dir 选择要导入的图片文件夹

在这里插入图片描述
在这里插入图片描述

右侧的 File List 会显示当前文件夹内所有图片文件

在这里插入图片描述

2)选择标注好要存入的文件夹

在这里插入图片描述
在这里插入图片描述

3)标注数据

注意:无论图片格式是否不同,图片名称必须不同。确保标签文件顺利生成

  • 可在 Use default labtel 处设置想要的分类,点击键盘 W 按钮对图片进行标注

在这里插入图片描述

在这里插入图片描述

LabelImg 核心快捷键
按键功能
A上一张图(Previous Image)
D下一张图(Next Image)
W创建一个新的 bounding box(Create a new bounding box)
LabelImg其他常用快捷键
按键功能
Ctrl + s保存当前标注(Save)
Del 或 Delete删除选中的 bounding box
Ctrl + u打开图像文件夹(Load Dir)
Ctrl + r更改保存路径(Change Save Dir)
↑ / ↓ / ← / →微调选中的 bounding box 位置(每次移动 1 像素)
Shift + ↑ / ↓ / ← / →快速调整 bounding box 大小(每次缩放 10 像素)

4)标注完成

标注结果:( YOLO:txt 格式; CreateML:json 格式;PasclVOC:xml 格式)

  • YOLO标注后生成的标签文件在 labels 文件里

在这里插入图片描述

  • 生成的 TXT 文件名和 images中的图片名一 一对应

在这里插入图片描述

  • 每个 TXT 内容的含义,标注了几个选框就有几行

在这里插入图片描述

五、数据集

1. 数据集的获取

可进入 飞桨AI - -开放数据集,按需求查找所需的数据集

在这里插入图片描述

注意:数据集有两种格式 VOC 和 YOLO,按需求进行转换

VOC 数据集转换为 YOLO 数据集

具体内容请查看:

从 VOC 到 YOLO:转换目标检测数据集(附完整代码)

2. 修改数据集配置文件

  • 在 data 目录下创建一个 mask_data.yaml 的文件

内容如下:

注意训练集、验证集为反斜杠 ‘/’ (Windows)

在这里插入图片描述

YOLO 训练时,train(训练集) 和 val (验证集)路径必须指向 images 文件夹

  • labels 标签路径是 自动匹配 的(要求文件名一致,目录结构对称)
格式满足:
DataSet-YOLO/
├── train/
│   ├── images/      ← 提供给 YAML 的训练集路径
│   │   └── abc.png
│   └── labels/      ← YOLO 自动去找这里
│       └── abc.txt
└── val/
    ├── images/      ← 提供给 YAML 的验证集路径
    │   └── xyz.png
    └── labels/      ← YOLO 自动去找这里
        └── xyz.txt

在这里插入图片描述
在这里插入图片描述

六、YOLOv5 项目结构详解(以 yolov5-master 为例)

yolov5/
├── data/              # 数据集配置
├── docs/              # 文档说明
├── images/            # 数据集图片
├── models/            # 模型结构定义
├── pretrained/        # 预训练权重
├── runs/              # 训练/验证结果输出
├── utils/             # 工具函数库
├── yolov5-env/        # 环境相关(可忽略)
├── data_gen.py        # 数据生成脚本
├── detect.py          # 推理检测主程序
├── export.py          # 导出模型(ONNX/TensorRT等)
├── hubconf.py         # HuggingFace Hub 支持
├── train.py           # 训练主程序
├── val.py             # 验证主程序
├── VOC_YOLO.py        # VOC格式转换工具
└── window.py          # GUI界面(Windows专用)

在这里插入图片描述

目录功能作用补充
data/ 目录数据集配置中心存放数据集的配置文件(.yaml)
docs/ 目录官方文档提供使用说明、API文档、示例、常见问题解答建议阅读:README.md 和 docs/ 下的 index.html 是入门必看
images/ 目录数据集图片存放用于演示的测试图片及数据集
models/ 目录模型结构定义定义网络架构(YOLOv5s/yolov5m/yolov5l/yolov5x)告诉模型“怎么搭建”——卷积层、瓶颈块、SPP、检测头等
pretrained/ 目录预训练权重存放官方预训练模型权重(.pt 文件)训练时通常从这些权重开始微调(fine-tune)
runs/ 目录输出结果存储区存放训练、验证、检测的结果
utils/ 目录工具函数库封装各种通用功能很多评估指标(如 mAP)就在这个目录里实现。
detect.py推理主程序运行模型进行图像/视频检测AI 测试的核心入口之一
export.py模型导出工具将 PyTorch 模型导出为其他格式
train.py训练主程序训练阶段核心脚本
val.py验证主程序评估模型性能(计算 mAP)

七、模型训练

1. 模型的基本训练

  • 修改 models 的 mask_yolov5s.yaml 的模型配置文件,uc = 2(数据集分类数):

在这里插入图片描述

  • 训练前请确保代码目录下有以下文件:

在这里插入图片描述

  • 执行 train.py 中代码运行程序即可:
python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epochs 100 --batch-size 2 

在这里插入图片描述

(-- batch-size 一般为16,按显卡来)执行该代码后先扫描数据集,扫描完成进行训练

  • 可通过 nvidia-smi 查看显存大小
  • 我的显卡:Memory-Usage: 1366MiB / 4096MiB 仅有4 GB ,最大 batch-size 得设为 2
代码代码解析
python train.py启动 YOLOv5 训练脚本
–data mask_data.yaml使用自定义口罩数据集配置(含类别:如 with_mask, without_mask)
–cfg mask_yolov5s.yaml使用定制的 YOLOv5s 模型结构(适配口罩检测)
–weights pretrained/yolov5s.pt加载官方预训练权重,进行迁移学习(需提前下载并放在 pretrained/ 目录下)
–epochs 100训练 100 轮(默认 300 轮)
–batch-size 2每次输入 2 张图像(适合显存较小的 GPU)

常用训练参数表

参数默认值说明
–data-数据集配置文件(YAML),指定训练/验证路径和类别名
–cfg-模型结构文件(YAML),定义网络层数、通道等
–weights‘yolov5s.pt’预训练权重路径,可加速收敛或迁移学习
–epochs300训练总轮数,1 epoch = 遍历全部训练数据一次
–batch-size16每卡批次大小,越大显存占用越高,训练越稳定
  • 根据数据集的大小和设备的性能,经过漫长的等待之后模型就训练完了,输出如下:

在这里插入图片描述

2. 训练结果查看

  • 在 train / runs / exp 的目录下可以找到训练得到的模型和日志文件

weights(保留两个文件一个best,一个last。表现最好和最后)

在这里插入图片描述

3. 模型评估

  • 训练完成后,通常会输出三张图,分别展示模型在验证集上的 Precision、Recall 和 mAP

目标检测模型的性能通常用 均值平均密度mAP(mean Average Precision) 评估。mAP 介于 0 到 1 之间,越接近 1 表示模型越好

  • mAP 基于 精度(Precision) 和 召回率(Recall) 计算

在这里插入图片描述

以PR-curve为例,可以看到我们的模型在验证集上的均值平均密度为0.194

  • 如果你的目录下没有这样的曲线,可能是因为你的模型训练一半就停止了,没有执行验证的过程,你可以通过下面的命令来生成这些图片:
python val.py --data data/mask_data.yaml --weights runs/train/exp_yolov5s/weights/best.pt --img 640

实际应用评估指标

场景应关注哪个指标?
模型整体性能对比mAP@0.5:0.95(COCO 官方标准)
是否能准确定位AP@IoU=0.75(IoU 越高,预测框越准)
是否会漏检小目标APsmall 和 ARsmall
多目标场景表现ARmax=10 或 ARmax=100

4. 模型使用

模型的使用全部集成在了detect.py目录下,按照下面的指令执行要检测的内容即可
在这里插入图片描述

 # 检测摄像头
 python detect.py  --weights runs/train/exp_yolov5s/weights/best.pt --source 0  # webcam
 # 检测图片文件
  python detect.py  --weights runs/train/exp_yolov5s/weights/best.pt --source file.jpg  # image 
 # 检测视频文件
   python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source file.mp4  # video
 # 检测一个目录下的文件
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt path/  # directory
 # 检测网络视频
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'https://youtu.be/NUsoVlDFqZg'  # YouTube video
 # 检测流媒体
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream                            

您可能感兴趣的与本文相关的镜像

PyTorch 2.5

PyTorch 2.5

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值