本文共 2556 字,大约阅读时间需要 8 分钟。
路面坑洞是道路安全的重要隐患,直接威胁车辆行驶安全。如何快速、准确地检测路面坑洞,是解决这一问题的关键。YOLOv8(You Only Look Once version 8)作为一款高效的图像分割模型,凭借其强大的实时检测能力,被广泛应用于路面坑洞检测任务中。本文将详细介绍YOLOv8在路面坑洞检测中的应用流程,包括数据准备、模型训练和推理等关键步骤。
本教程使用Pothole图像分割数据集,该数据集包含大量真实场景下的路面坑洞图像。数据集可通过Kaggle获取,下载完成后,需要从压缩包中提取文件夹。
首先安装Ultralytics库:
pip install ultralytics
然后导入必要的库:
import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimport seaborn as snsimport osimport warningsfrom ultralytics import YOLOimport cv2from PIL import Imageimport yamlimport random
将数据路径设置为自己的路径:
dataDir = '/content/Pothole_Segmentation_YOLOv8/'
设置训练图像路径:
trainImagePath = os.path.join(dataDir, 'train', 'images')
列出图像文件:
imageFiles = [f for f in os.listdir(trainImagePath) if f.endswith('.jpg')] 选择随机图像:
randomImages = random.sample(imageFiles, 15)
绘制图像:
plt.figure(figsize=(10, 10))for i, image_file in enumerate(randomImages): image_path = os.path.join(trainImagePath, image_file) image = Image.open(image_path) plt.subplot(3, 5, i + 1) plt.imshow(image) plt.axis('off')plt.suptitle('Random Selection of Dataset Images', fontsize=24)plt.tight_layout()plt.show() 加载预训练权重:
model = YOLO('yolov8n-seg.pt') 训练模型:
yamlFilePath = os.path.join(dataDir, 'data.yaml')results = model.train( data= yamlFilePath, epochs= 30, imgsz= 640, batch= 32, optimizationr= 'auto', lr0= 0.0001, lrf= 0.01, dropout= 0.25, device= 0, seed= 42)
加载最佳模型:
bestModelpath = '/content/runs/segment/train/weights/best.pt'bestModel = YOLO(bestModelpath)
设置验证图像路径:
validImagePath = os.path.join(dataDir, 'valid', 'images')
列出验证图像文件:
imageFiles = [f for f in os.listdir(validImagePath) if f.endswith('.jpg')] 选择随机图像:
numImages = len(imageFiles)selectedImage = [imageFiles[i] for i in range(0, numImages, numImages // 9)]
绘制推断图像:
fig, axes = plt.subplots(3, 3, figsize=(10, 10))fig.suptitle('Validation Set Inferences')for i, ax in enumerate(axes.flatten()): imagePath = os.path.join(validImagePath, selectedImage[i]) results = bestModel.predict(source= imagePath, imgsz=640) annotatedImage = results[0].plot() annotatedImageRGB = cv2.cvtColor(annotatedImage, cv2.COLOR_BGR2RGB) ax.imshow(annotatedImageRGB) ax.axis('off')plt.tight_layout()plt.show() import shutilvideoPath = '/content/Pothole_Segmentation_YOLOv8/sample_video.mp4'bestModel.predict(source=videoPath, save=True)
通过本文的详细介绍,我们可以看到YOLOv8图像分割技术在路面坑洞检测中的巨大潜力。从数据准备到模型训练,再到推理验证,全流程的实现展示了YOLOv8在实际应用中的强大能力。
转载地址:http://krsfk.baihongyu.com/