【【零基础保姆级】YOLOv5 v2.0 环境搭建 + 口罩检测自定义数据集训练教程(Windows CPU 版)下】

前言

上一篇教程已完成 YOLOv5 v2.0 口罩检测模型训练(mAP@.5 86.5%),彻底解决了环境兼容、版本报错、训练闪退等问题。本文聚焦 全场景口罩检测实操,一次性讲解三种核心用法 ------ 本地图片检测、本地视频检测、摄像头实时识别,全程纯 CPU 运行,无需额外配置,所有命令 / 代码可直接复制,衔接训练成果,快速完成课设、毕设全流程演示,新手零踩坑、零冗余操作。

本文适配 Windows 系统、PyCharm 环境,严格衔接上一篇训练好的口罩模型,不新增任何复杂依赖,手把手教你从 "模型训练完成" 到 "全场景检测落地",实现口罩检测项目闭环。

一、前置准备(必看,确保一次成功)

启动检测前,先确认 3 个核心条件(已完成模型训练的同学可直接跳过):

  1. 模型就绪:已训练好口罩二分类模型(戴口罩 / 未戴口罩),模型路径固定为:yolov5\runs\exp13_mask_train_exp\weights\best_mask_train_exp.pt(全程复用,无需重新训练);
  2. 环境正常:已安装 YOLOv5 所有依赖(终端运行 pip install -r requirements.txt),无 numpy、torch 版本报错,之前的 np.int 兼容问题已修复;
  3. 文件就绪:提前准备好待检测的口罩图片、视频(可选),确保电脑摄像头可用(无遮挡、未被其他软件占用)。

二、全场景检测实现(三种方式,任选其一 / 全部尝试)

方式一:本地图片检测

适合快速验证模型效果,批量检测本地口罩图片,操作最简单,无需复杂设置。

方法 1:命令行运行(无需改代码,零风险)

1.放置图片:将需要检测的口罩图片(格式不限,jpg/png 均可),放入 YOLOv5 目录下的 inference\images 文件夹(原代码默认路径,不用新建);

2.打开终端:PyCharm 底部「Terminal」,确保当前路径为 D:\software\Pycharm\yolov5(yolov5 根目录);

3.复制命令,回车运行(直接运行就行):

python 复制代码
python detect.py --weights runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt --source inference/images --device cpu --view-img --conf-thres 0.4
方法 2:修改代码,一键运行

若想后续点击 "运行" 就检测图片,可修改 detect.py 默认参数,永久生效:

  1. 打开 detect.py,拉到文件最底部,找到参数定义部分,替换以下 4 行代码:
python 复制代码
# 1. 权重路径:改为训练好的口罩模型
parser.add_argument('--weights', nargs='+', type=str, default='runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt', help='model.pt path(s)')
# 2. 检测来源:默认检测 inference/images 文件夹下的所有图片
parser.add_argument('--source', type=str, default='inference/images', help='source')
# 3. 运行设备:强制CPU,避免显卡报错
parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
# 4. 弹窗显示检测结果,方便查看
parser.add_argument('--view-img', action='store_true', help='display results')

2.保存代码(Ctrl+S),点击 PyCharm 右上角「运行」,自动检测图片并弹窗显示结果。

图片检测补充说明

• 检测结果保存:所有画好框、标好类别的图片,自动保存到 yolov5\inference\output 文件夹;

• 批量检测:只需将所有图片放入 inference\images,命令 / 代码无需修改,会自动批量处理;

• 识别效果:戴口罩标注 mask + 置信度,未戴口罩标注 no-mask + 置信度,置信度越高,识别越准确。

方式二:本地视频检测

可检测本地口罩相关视频,自动识别视频中每一帧的口罩佩戴情况,生成带检测框的视频文件,适合课设汇报演示。

方法 1:命令行运行(无需改代码)
  1. 放置视频:将待检测的视频(推荐 mp4 格式),放入 YOLOv5 根目录(与 detect.py 同级);

  2. 终端输入命令(替换 口罩视频.mp4 为你的视频文件名)

python 复制代码
python detect.py --weights runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt --source 口罩视频.mp4 --device cpu --view-img --conf-thres 0.4 --save-video
方法 2:修改代码,一键检测视频
  1. 打开 detect.py,修改底部参数(仅改 --source 和 --save-video):
python 复制代码
# 其他参数不变,仅修改以下2行
parser.add_argument('--source', type=str, default='口罩视频.mp4', help='source')  # 替换为你的视频文件名
parser.add_argument('--save-video', action='store_true', help='save video results')  # 新增,用于保存检测后的视频

保存代码,点击运行,自动启动视频检测。

视频检测补充说明

• 参数 --save-video:核心参数,用于保存检测后的视频(带口罩检测框),不添加则只弹窗显示,不保存;

• 视频保存路径:检测后的视频自动保存到 yolov5\inference\output 文件夹,文件名与原视频一致;

• 格式兼容:优先使用 mp4 格式,其他格式(如 avi、mov)可能出现无法检测的情况,可提前转换格式;

• 运行速度:CPU 运行视频检测会轻微卡顿,属于正常现象,耐心等待即可。

方式三:摄像头实时口罩识别

调用电脑本地摄像头,实时识别画面中人脸的口罩佩戴情况,弹窗显示实时画面,适合现场演示、小型场景部署,是课设 / 毕设的核心展示环节。

方法 1:命令行运行(推荐,无需改代码)

终端复制以下命令,回车直接启动摄像头,无需修改任何代码:

python 复制代码
python detect.py --weights runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt --source 0 --device cpu --view-img --conf-thres 0.4
方法 2:修改代码,一键启动摄像头
  1. 打开 detect.py,修改底部 3 个核心参数:
python 复制代码
# 1. 权重路径:训练好的口罩模型
parser.add_argument('--weights', nargs='+', type=str, default='runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt', help='model.pt path(s)')
# 2. 检测来源:0 = 本地默认摄像头(外接摄像头可改为1)
parser.add_argument('--source', type=str, default='0', help='source')  # 0 for webcam
# 3. 强制CPU,弹窗显示实时画面
parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--view-img', action='store_true', help='display results')
  1. 保存代码,点击运行,自动弹出摄像头实时窗口,开始口罩识别。
摄像头实时检测使用说明
  1. 启动后,弹窗显示摄像头画面,人脸进入画面后,自动框选并标注:

    • 戴口罩:彩色框 + mask + 置信度(如 mask 0.92,代表 92% 概率戴口罩);
    • 未戴口罩:彩色框 + no-mask + 置信度
  2. 退出方式:在摄像头窗口处于激活状态时,按键盘 q(一定要点击弹窗再按 q,否则无效)

  3. 画面卡顿解决:CPU 算力有限,轻微卡顿正常,可添加参数 --img-size 480 降低画面尺寸,提升速度(命令如下)

    python 复制代码
    python detect.py --weights runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt --source 0 --device cpu --view-img --conf-thres 0.4 --img-size 480
  4. 外接摄像头:若使用 USB 外接摄像头,将 --source 0 改为 --source 1 尝试,若仍无法识别,关闭其他占用摄像头的软件。

三、三种检测方式核心参数统一说明

参数 作用 推荐设置
--weights 指定训练好的口罩模型 固定为 runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt
--source 检测来源 图片:inference/images;视频:视频文件名;摄像头:0
--device cpu 运行设备 无独立显卡必加,避免报错
--view-img 弹窗显示检测结果 建议开启,方便实时查看效果
--conf-thres 0.4 置信度阈值 低于 40% 的检测结果会被过滤,减少误识别
--save-video 保存视频检测结果 视频检测必加,图片检测无需添加
--img-size 480 检测画面尺寸 卡顿严重时添加,降低尺寸提升速度

四、常见问题排查(新手必看,避坑指南)

1. 检测失败,提示 "模型路径错误"

  • 原因:--weights 参数路径写错,或模型文件 best_mask_train_exp.pt 不存在;
  • 解决:核对模型路径,确保路径为 runs/exp13_mask_train_exp/weights/best_mask_train_exp.pt,若路径不一致,修改命令 / 代码中的路径。

2. 图片 / 视频无法检测,提示 "no images/video found"

  • 原因:图片 / 视频放置路径错误,或文件名包含中文、特殊字符;
  • 解决:图片放入 inference/images,视频放入 yolov5 根目录,文件名改为英文(如 mask_video.mp4),避免空格、中文。

3. 摄像头黑屏 / 打不开

  • 原因 1:摄像头被微信、浏览器、钉钉等软件占用;
  • 解决 1:关闭所有占用摄像头的软件,重新运行命令 / 代码;
  • 原因 2:电脑未允许应用访问摄像头;
  • 解决 2:Windows 设置 → 隐私和安全性 → 摄像头 → 开启 "允许应用访问你的摄像头",并允许 PyCharm 访问。

4. 误识别严重(将其他物体识别为口罩)

  • 原因:置信度阈值太低,或训练数据集有限;
  • 解决:将 --conf-thres 0.4 改为 0.5,过滤低概率误识别结果;若仍有问题,可补充口罩训练数据,重新训练模型。

5. 运行报错 "no module named xxx"

  • 原因:依赖库未安装完整,或环境冲突;
  • 解决:终端运行 pip install -r requirements.txt,重新安装所有依赖,确保 Python 版本为 3.9(兼容性最佳)。

五、项目完整闭环总结

到本文为止,我们的 YOLOv5 口罩检测项目已实现全流程闭环,从基础准备到全场景落地,全程纯 CPU 运行,新手可 1:1 复刻:

  1. 前期准备:数据集制作(口罩图片 + 标签)→ YOLOv5 v2.0 环境搭建 → 模型训练(mAP@.5 86.5%);
  2. 全场景检测:本地图片检测 → 本地视频检测 → 摄像头实时识别;
  3. 核心优势:操作简单、无需独立显卡、所有命令 / 代码可直接复制、报错可快速排查,完美适配课程设计、毕业设计、小型场景演示。

六、拓展建议

  1. 录制实时检测视频:摄像头检测时,添加 --save-video 参数,可录制实时检测画面,保存到 inference/output,方便汇报演示;
  2. 批量处理图片 / 视频:图片检测时,将所有图片放入 inference/images;视频检测时,可批量修改 --source 参数,一次性处理多个视频;
  3. 提升检测速度:若有独立显卡,删除命令 / 代码中的 --device cpu,自动调用 GPU 运行,检测速度提升 5-10 倍;
  4. 优化识别精度:补充更多不同场景的口罩图片(如不同光线、不同角度),重新训练模型,进一步提升识别准确率。

结尾

本文详细讲解了 YOLOv5 口罩检测的三种核心场景,衔接上一篇模型训练教程,实现从 "训练" 到 "落地" 的完整闭环。所有操作均经过实操验证,新手跟着步骤走,无需复杂调试,就能快速完成全场景口罩检测。若遇到其他报错或疑问,可在评论区留言,及时排查解决,助力大家顺利完成课设、毕设!

相关推荐
Westward-sun.12 小时前
YOLOv5 最新版从零配置环境到训练自己的数据集
人工智能·pytorch·深度学习·yolo
wwwasw13 小时前
基于YOLO26目标检测在商品包装照片上的条码识别实践
人工智能·yolo·目标检测·计算机视觉
动物园猫13 小时前
高压电线电力巡检六类图像识别数据集分享(适用于YOLO系列深度学习分类检测任务)
深度学习·yolo·分类
Daydream.V13 小时前
YOLO系列学习——YOLOv4
yolo·yolov4学习·yolov4原理·yolov4改进
极智视界13 小时前
分类数据集 - 动物分类数据集下载
人工智能·yolo·数据集·图像分类·动物分类·算法训练
mahtengdbb113 小时前
三阶段压缩瓶颈改进YOLOv26特征提取效率与通道自适应能力提升
人工智能·yolo·目标跟踪
探物 AI1 天前
【感知·医学分割】当 YOLOv11 杀入医学赛道:先检测后分割的级联架构
算法·yolo·计算机视觉·架构
Westward-sun.1 天前
YOLOv1:从“单阶段检测”理解目标检测的起点
人工智能·yolo·目标检测
mahtengdbb11 天前
SimAM无参数注意力机制改进YOLOv26神经科学启发的自适应特征增强突破
人工智能·yolo·目标跟踪