基于YOLOv5实现安全帽检测识别
2026/9/3 10:29:51 网站建设 项目流程

一、Anaconda下载

首先,我们需要获取Anaconda的安装包。官方地址Anaconda | Built to Advance Open Source AI

二、Anaconda 安装

下载完成安装包后一路傻瓜式安装

重要提示:由于Anaconda安装后占用空间较大(约3-5GB),强烈建议不要安装在C盘系统盘!

我的电脑只有一个 C 盘所以无法选择 ,建议目录:D:\Anaconda

三、环境变量配置

在"用户变量"或"系统变量"中找到"Path",选中Path变量,点击"编辑"

点击"新建",分别添加以下五个路径(按照实际安装的路径,在安装时第五个步骤时选择的路径):

D:\Anaconda\Anaconda D:\Anaconda\Anaconda\Scripts D:\Anaconda\Anaconda\Library\bin D:\Anaconda\Anaconda\Library\mingw-w64\bin

保存设置:点击"确定"按钮保存所有更改

验证配置:

  1. 关闭已打开的命令提示符窗口
  2. 重新打开命令提示符(Win+R, 输入cmd, 回车)
  3. 输入命令:conda --version
  4. 如果显示conda的版本信息,说明环境变量配置成功

四、标注工具labelimg

首先通过Anaconda安装labelimg,在Anaconda命令行窗口(Anaconda Prompt终端)中依次输入下列代码,安装labelimg依赖的第三方库。

由于官方默认的镜像源速度很慢,我们这里使用清华镜像源。

# 创建自己的虚拟环境 conda create -n mytorch python=3.12 # 进入自己创建的虚拟环境 conda activate mytorch # 安装相关的库 pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

然后在Anaconda Prompt终端输入labelimg指令进入到labelimg标注界面,labelimg的标注模式分为VOC和YOLO两种,两种模式下生成的标注文件分别为.xml文件和.txt文件,因此在进行标注前需要优先选择好标注的模式。进入labelimg标注工具的初始化界面如下图所示。

labelimg左侧菜单栏中按钮功能说明如下。

按钮功能
Open打开单个图像文件
Open Dir打开文件夹多幅图像
Change Save Dir标注后图像数据存储的路径
Next Image切换到下一张图像
Prev Image切换到上一张图像
Verify Image校验图像
Save保存图像
Create RectBox画一个标注框
Duplicate RectBox重复标注框
Delete RectBox删除标注框
Zoom In放大图像
Zoom Out缩小图像
Fit Window图像适应窗口
Fit Width图像适应宽度

标注完以后,生成一系列的.xml文件

划分训练集和验证集:运行prepare_data.py在yolov5项目文件夹下生成yolov5_train.txt和yolov5_val.txt,在VOCdevkit / VOC2007目录下可以看到生成了YOLOLabels文件夹 ;另外,在VOCdevkit目录下生成了images和labels文件夹。
注意:yolov5_train.txt和yolov5_val.txt分别给出了训练图片文件和验证图片文件的列表,含有每个图片的路径和文件名。

修改配置文件:data/voc_hat.yamlmodels/yolov5s_hat.yaml参数——训练集和验证集数据加载路径、标注的类别数、标签类别名称

注意:train和val的路径一定要填写准确,并且项目不要出现含有中文字符的目录文件或路径,否则会出现很多异常!!!!!!!!

五、开始训练

修改相应的参数,下图红色框部分所示

运行文件。训练完成,可以得到yolov5s佩戴安全帽识别的mAP指标大约mAP_0.5=0.93;而yolov5s05_416 mAP_0.5=0.87左右;yolov5s05_320 mAP_0.5=0.84左右

六、测试训练好的模型

测试文件的目录存放位置:

修改相应的参数,下图红色框部分所示:

检测结果:综合下面两幅图片可以看出,该算法能够准确检测识别到图片中的安全帽,并且检测终端能够返回相应的统计量以及结果保存路径。

七、常见问题和解决方法

(1)问题一:Anaconda安装labelimg后,标注界面闪退。主要涉及修改canvas.py和labelImg.py两个文件中的浮点数到整数的转换,通过将特定行的float函数改为int,以避免计算错误导致程序异常退出。

解决办法:看报错行,到相应行进行int转化就行,还是需要int()强转换。

(2)问题二:NumPy 2.x 是较新的大版本更新,与部分依赖 NumPy 1.x 的 Python 库(如 SciPy、OpenCV、PyTorch、TensorFlow 或一些较低版本的 C/C++ 扩展模块)不兼容,导致崩溃。

A module that was compiled using NumPy 1.x cannot be run in NumPy 2.2.6 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may need to rebuild instead e.g. with 'pybind11>=2.12'. If you are a user of the module, the easiest solution will be to downgrade to 'numpy<2' or try to upgrade the affected module. We expect that some modules will need time to support NumPy

解决办法:降级 NumPy

pip uninstall numpy -y # 先卸载当前版本 pip install "numpy<2" --upgrade # 安装稳定的 1.x 版本(如 1.26.4)

(3)问题三:在加载 YOLOv5 的.pt权重文件时,PyTorch 的torch.load()由于安全限制 (weights_only=True) 无法正确解析模型类。

解决办法:如果确认权重文件来自官方 YOLOv5(如yolov5s.pt或你自己训练的模型):
修改train.py(或你的加载代码),**显式传递weights_only=False**:

# 修改 torch.load() 调用 ckpt = torch.load(weights, map_location=device, weights_only=False)

(4)问题四: No module named的问题

  • 如果出现“No module named ***”的错误,请使用pip install *** 即可,例如出现下面的错误

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'basetrainer'

解决办法:使用pip安装:

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询