一、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保存设置:点击"确定"按钮保存所有更改
验证配置:
- 关闭已打开的命令提示符窗口
- 重新打开命令提示符(Win+R, 输入cmd, 回车)
- 输入命令:
conda --version - 如果显示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.yaml和models/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