YOLO 进行缺陷检测并保存检测结果
该文档介绍了如何基于YOLO模型实现缺陷检测的完整流程。内容包括环境准备、依赖安装、代码实现、运行步骤以及结果查看等。
·
一、环境准备
1. 安装必要的环境
确保安装以下依赖项:
- Python:建议使用 Python 3.8 以上版本。
- PyTorch:根据你的 GPU 支持安装合适的版本。
- YOLO:我们使用
ultralytics
提供的 YOLOv8。
2. 安装步骤
-
安装
PyTorch
:
根据 CUDA 版本选择适合的安装命令(以 CUDA 11.8 为例):pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
安装
ultralytics
:pip install ultralytics
-
安装 OpenCV(用于绘制结果):
pip install opencv-python
-
验证安装:
在 Python 环境中运行以下代码:import torch import cv2 from ultralytics import YOLO print("PyTorch Version:", torch.__version__) print("OpenCV Version:", cv2.__version__) print("CUDA Available:", torch.cuda.is_available())
二、实现 YOLO 缺陷检测
1. 检测逻辑说明
以下代码实现了对一个文件夹中的所有图片进行检测,并将检测到缺陷的图片保存到指定文件夹。核心功能包括:
- 加载 YOLO 模型。
- 遍历图片文件夹,对每张图片进行检测。
- 如果检测到缺陷,绘制缺陷框并保存结果。
2. 完整代码
以下是实现 YOLO 缺陷检测的代码:
import os
import sys
import cv2
import time
import torch
from ultralytics import YOLO
# 验证 PyTorch 和 OpenCV 是否正常安装
print("PyTorch Version:", torch.__version__)
print("OpenCV Version:", cv2.__version__)
print("CUDA Available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("CUDA Device Name:", torch.cuda.get_device_name(0))
# 输入和输出路径
input_folder = r'D:\BaiduNetdiskDownload\TEST' # 替换为你的输入文件夹路径
output_folder = r'D:\BaiduNetdiskDownload\TEST_RESULTS' # 替换为你的输出文件夹路径
os.makedirs(output_folder, exist_ok=True)
# 加载 YOLO 模型并设置置信度阈值
model = YOLO('yolov8n.pt') # 使用 YOLOv8 的轻量化预训练模型
model.conf = 0.25 # 设置置信度阈值
# 遍历文件夹中的图片
for filename in os.listdir(input_folder):
if filename.endswith('.jpg'): # 仅处理 .jpg 文件
input_path = os.path.join(input_folder, filename)
# 开始计时
start_time = time.time()
results = model(input_path)
end_time = time.time()
elapsed_time_ms = (end_time - start_time) * 1000
# 加载原始图片
img = cv2.imread(input_path)
if img is None:
print(f"无法加载图片: {input_path}")
continue
# 检测结果处理
has_defect = False # 是否检测到缺陷
for result in results:
if result.boxes:
has_defect = True # 标记为有缺陷
for box in result.boxes:
cls = result.names[int(box.cls)] # 缺陷类型
conf = box.conf.item() # 置信度
x1, y1, x2, y2 = map(int, box.xyxy[0])
h, w, _ = img.shape
x1, y1, x2, y2 = max(0, x1), max(0, y1), min(w, x2), min(h, y2)
# 绘制矩形框和标签
color = (0, 0, 255) # 红色
cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)
label = f"{cls} ({x1},{y1},{x2 - x1},{y2 - y1})"
cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2)
# 仅保存有缺陷的图片
if has_defect:
save_path = os.path.join(output_folder, filename)
cv2.imwrite(save_path, img)
print(f"图片: {filename} | 耗时: {elapsed_time_ms:.2f} 毫秒 | 已保存检测结果。")
else:
print(f"图片: {filename} 未检测到缺陷,跳过保存。")
print(f"检测完成!检测结果已保存到: {output_folder}")
三、运行步骤
1. 文件准备
- 输入文件夹:将待检测的图片放入
D:\BaiduNetdiskDownload\TEST
文件夹。 - 输出文件夹:检测到有缺陷的图片将保存到
D:\BaiduNetdiskDownload\TEST_RESULTS
。
2. 运行代码
确保代码中的路径正确,运行代码后,控制台会输出检测结果,例如:
图片: image1.jpg | 耗时: 350.12 毫秒 | 已保存检测结果。
图片: image2.jpg 未检测到缺陷,跳过保存。
四、结果查看
1. 检测结果
- 检测到有缺陷的图片会保存到
TEST_RESULTS
文件夹。 - 在保存的图片上可以看到:
- 红色矩形框标记缺陷区域。
- 矩形框上方显示缺陷类型及坐标信息。
2. 控制台日志
每张图片的检测时间和检测状态都会在控制台输出。
五、常见问题
1. YOLO 模型未检测到缺陷
- 确保输入图片内容清晰。
- 调整置信度阈值
model.conf
:model.conf = 0.2 # 降低阈值
2. OpenCV 显示或保存失败
- 确保
opencv-python
安装正确。 - 确保图片文件路径有效。
3. CUDA 未启用
- 如果控制台输出
CUDA Available: False
,请检查 GPU 驱动和 CUDA 工具包是否正确安装。
六、总结
通过上述流程,你可以快速实现基于 YOLO 的缺陷检测。该代码灵活易用,可根据实际需求调整检测逻辑,例如修改绘制样式或保存策略。如果有进一步需求(如扩展功能),可以随时联系我们!

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)