ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于YOLOv5实现安全帽检测识别

基于YOLOv5实现安全帽检测识别 一、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保存设置点击确定按钮保存所有更改验证配置关闭已打开的命令提示符窗口重新打开命令提示符WinR, 输入cmd, 回车输入命令conda --version如果显示conda的版本信息说明环境变量配置成功四、标注工具labelimg首先通过Anaconda安装labelimg在Anaconda命令行窗口Anaconda Prompt终端中依次输入下列代码安装labelimg依赖的第三方库。由于官方默认的镜像源速度很慢我们这里使用清华镜像源。# 创建自己的虚拟环境 conda create -n mytorch python3.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.50.93而yolov5s05_416 mAP_0.50.87左右yolov5s05_320 mAP_0.50.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 pybind112.12. If you are a user of the module, the easiest solution will be to downgrade to numpy2 or try to upgrade the affected module. We expect that some modules will need time to support NumPy解决办法降级 NumPypip uninstall numpy -y # 先卸载当前版本 pip install numpy2 --upgrade # 安装稳定的 1.x 版本如 1.26.43问题三在加载 YOLOv5 的.pt权重文件时PyTorch 的torch.load()由于安全限制 (weights_onlyTrue) 无法正确解析模型类。解决办法如果确认权重文件来自官方 YOLOv5如yolov5s.pt或你自己训练的模型修改train.py或你的加载代码**显式传递weights_onlyFalse**# 修改 torch.load() 调用 ckpt torch.load(weights, map_locationdevice, weights_onlyFalse)4问题四 No module named的问题如果出现“No module named ***”的错误请使用pip install *** 即可,例如出现下面的错误Traceback (most recent call last):File stdin, line 1, in moduleModuleNotFoundError: No module named basetrainer解决办法使用pip安装pip install basetrainer -i https://pypi.tuna.tsinghua.edu.cn/simple
返回列表