inspection
识别类别数量及类目
模型来检测太阳能
电池板上的缺陷或状态。该模型可以识别七个类别:
- bird_drop
- bird_feather
- cracked
- dust_partical
- healthy
- leaf
- snow
- 这里是这些词的翻译:
- **bird_drop**: 鸟粪
- **bird_feather**: 鸟羽毛
- **cracked**: 裂开的
- **dust_particle**: 尘埃颗粒
- **healthy**: 健康的
- **leaf**: 叶子
- **snow**: 雪
本项目包括inspection:
- 用于训练、验证和测试的数据集(托管在HuggingFace)。
- 训练脚本及重复或自定义训练过程的说明。
- 推理脚本(基于图像和通过网络摄像头进行实时推理)。
- 适用于边缘设备(如树莓派)的轻量级模型。
目录
- 特性
- 项目结构
- 安装与要求
- 数据集
- 模型训练
- 测试与评估
- 运行推理
- 性能结果
- 未来工作
- 致谢
特性
- 七类检测,涵盖各种太阳能电池板状态。
- 轻量级模型(YOLOv11n),大约有2.59M参数,适用于边缘设备的实时推理。
- 通过网络摄像头进行实时检测(webcam.py)。
- 可以使用提供的数据或自定义数据集进行训练。
- 支持导出为ONNX和TorchScript,便于广泛部署。
项目结构
your_project/
├── assets/
│ └── solarpanel.gif <-- 本README中引用的GIF
├── weights/
│ └── yolo_nano_solar_panel.pt <-- YOLOv11n预训练权重
├── dataset/
│ └── data.yaml <-- 示例数据集YAML(根据需要修改)
├── training.py <-- 用于训练模型的脚本
├── image_test.py <-- 用于单张图像推理的脚本
├── webcam.py <-- 用于实时摄像头检测的脚本
├── requirements.txt <-- 项目依赖
└── README.md <-- 本文件
注意:根据需要调整文件和文件夹的名称,以匹配您的实际设置。
在这里插入图片描述
安装与要求
-
克隆该仓库或下载文件。
-
安装所需的包:
pip install -r requirements.txt
包括:
- torch
- ultralytics
- opencv-python
- numpy
(以及您可能需要的任何其他包)
-
检查GPU支持(可选,但推荐):
- 如果计划加速训练或进行高强度推理,请确保您的设备有CUDA兼容的GPU。
- 如果仅使用CPU或低功耗设备,YOLOv11n仍然适用,但训练可能会较慢。
数据集
我们使用Louisnguyen的Solar_Panels_Condition数据集。该数据集包含7个类别的边界框注释。
- 训练集:约11,209个边界框。
- 验证集:约2,899个边界框。
- 一些图像有分割标签,但这里只使用边界框。如果您想适应分割任务,需要相应地调整数据。
下载数据集并将其放置在dataset/文件夹中(或更新data.yaml文件以指向数据存放的位置)。
模型训练
- 配置dataset/文件夹中的data.yaml(或您选择的路径),使其匹配您的数据集结构。
- 将YOLOv11n权重(如果有的话)放入./weights/yolo_nano_solar_panel.pt。
- 如果从头开始训练,需要一个基线模型检查点。
- 运行:
该脚本会:python training.py
- 加载YOLOv11n模型。
- 训练100个epoch,批量大小为16。
- 将结果(损失、mAP、混淆矩阵等)记录在./runs/train/文件夹中。
- 导出最终权重和可选的ONNX/TorchScript模型。
测试与评估
要评估模型在验证集上的表现,可以运行:
python image_test.py
在脚本中,您将看到:
- model.val():对数据集进行快速评估。
- results = model(image_path):对样本图像进行推理。
- 输出指标(mAP、框损失、分类损失等)。
您可以修改image_test.py,指向不同的图像或使用图像文件夹。
运行推理
-
单图像推理:
- 将image_path设置为您想要测试的图像。
- 运行:
python image_test.py
- 脚本将打印指标并显示图像上的检测结果。
-
实时摄像头推理:
- 连接摄像头或使用笔记本的内置摄像头。
- 运行:
python webcam.py
- 您将看到实时视频流,检测到的物体会显示边界框和类别标签。
- 按‘q’退出,按‘s’保存截图。
性能结果
在100个epoch的训练后,最终模型的表现为:
- mAP50: ~0.64
- mAP50-95: ~0.36
- 精度(P):~0.67
- 召回率(R):~0.647
每个类别的性能(mAP50约):
- bird_feather: ~0.995(非常高)
- dust_partical: ~0.75
- leaf: ~0.76
- ……而cracked和healthy等类别的表现约在0.43-0.48范围内。
观察:
- bird_feather的检测接近完美。
- cracked和healthy的召回率较低,可能表示混淆或数据不足。
- 在实时测试中,模型可以在4070 GPU上达到约120 FPS(在高端硬件上更快,在边缘设备上更慢)。
未来工作
- 数据增强:探索更先进的增强方法(Mosaic、MixUp、RandAugment)以处理类别不平衡。
- 超参数调整:调整学习率、动量、权重衰减,以获得最佳结果。
- 更大的模型变种:如果硬件支持,可以测试YOLOv11s或YOLOv11m以提高精度。
- 错误分析:通过添加更多的针对性数据样本或使用专门的增强方法,改善低性能类别的检测。