YOLOv8 自定义目标检测训练实战:预训练推理、数据集训练与部署
这篇教程根据我复现 YOLOv8 自定义目标检测训练流程时整理,重点演示如何跑通预训练模型推理、获取自定义数据集、训练模型并做在线部署。
YOLOv8 是很多目标检测项目的起点,流程直观、文档也成熟。本文适合作为自定义检测任务的快速上手模板。
本文会重点跑通以下流程:
- 安装 YOLOv8 依赖并关闭统计同步
- 运行预训练模型检测示例图
- 从数据集后台获取 YOLO 格式数据集
- 训练自定义模型并查看曲线
- 验证、推理并按自己的流程部署
如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型,建议收藏本文;配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住,可以在评论区说明具体报错。
📚 文章目录
- YOLOv8 自定义目标检测训练实战:预训练推理、数据集训练与部署
- ⚙️ 环境准备
- 🔍 预训练模型推理
- 📦 从数据集后台获取 YOLO 数据集
- 🏋️ 自定义训练
- 📏 训练结果查看
- 🧪 验证与推理
- 📤 部署说明
- ☁️ 云端推理示例
- 📌 小结
- 📚 同系列教程汇总
⚙️ 环境准备
先检查运行环境并安装依赖。建议优先使用带 NVIDIA GPU 的环境,避免推理和训练阶段显存不足。
!nvidia-smiimportos HOME=os.getcwd()print(HOME)# Pip install method (recommended)!pip install ultralytics==8.2.103-qfromIPythonimportdisplay display.clear_output()# prevent ultralytics from tracking your activity!yolo settings sync=Falseimportultralytics ultralytics.checks()fromultralyticsimportYOLOfromIPython.displayimportdisplay,Image🔍 预训练模型推理
先在示例图上跑一遍预训练模型,确认检测流程正常。
%cd{HOME}!yolo task=detect mode=predict model=yolov8n.pt conf=0.25source='https://media..com/notebooks/examples/dog.jpeg'save=True%cd{HOME}Image(filename='runs/detect/predict/dog.jpeg',height=600)model=YOLO(f'{HOME}/yolov8n.pt')results=model.predict(source='https://media..com/notebooks/examples/dog.jpeg',conf=0.25)results[0].boxes.xyxyresults[0].boxes.confresults[0].boxes.cls📦 从数据集后台获取 YOLO 数据集
从数据集后台导出 YOLO 格式数据集后,训练阶段直接引用data.yaml。
!mkdir-p{HOME}/datasets%cd{HOME}/datasets !pip install==1.1.48--quietfromtypesimportSimpleNamespace# 从数据集后台下载 YOLO 格式数据集后,修改 DATASET_DIR 指向解压目录。DATASET_DIR="/content/dataset"# 修改为数据集后台导出的数据集目录dataset=SimpleNamespace(location=DATASET_DIR)🏋️ 自定义训练
训练阶段先把数据、模型和超参数都对齐,再启动训练。
📏 训练结果查看
训练结束后先看曲线和验证结果,确认没有明显异常。
%cd{HOME}!yolo task=detect mode=train model=yolov8s.pt data={dataset.location}/data.yaml epochs=25imgsz=800plots=True%cd{HOME}Image(filename=f'{HOME}/runs/detect/train/confusion_matrix.png',width=600)%cd{HOME}Image(filename=f'{HOME}/runs/detect/train/results.png',width=600)%cd{HOME}Image(filename=f'{HOME}/runs/detect/train/val_batch0_pred.jpg',width=600)🧪 验证与推理
训练完成后,用测试集和本地推理再检查一遍。
%cd{HOME}!yolo task=detect mode=val model={HOME}/runs/detect/train/weights/best.pt data={dataset.location}/data.yaml%cd{HOME}!yolo task=detect mode=predict model={HOME}/runs/detect/train/weights/best.pt conf=0.25source={dataset.location}/test/images save=TrueimportglobfromIPython.displayimportImage,display# Define the base path where the folders are locatedbase_path='/content/runs/detect/'# List all directories that start with 'predict' in the base pathsubfolders=[os.path.join(base_path,d)fordinos.listdir(base_path)ifos.path.isdir(os.path.join(base_path,d))andd.startswith('predict')]# Find the latest folder by modification timelatest_folder=max(subfolders,key=os.path.getmtime)image_paths=glob.glob(f'{latest_folder}/*.jpg')[:3]# Display each imageforimage_pathinimage_paths:display(Image(filename=image_path,width=600))print("\n")📤 部署说明
Notebook 原流程包含在线部署。这里保留部署入口说明,便于接入你自己的发布流程。
project.version(dataset.version).deploy(model_type="yolov8",model_path=f"{HOME}/runs/detect/train/")☁️ 云端推理示例
云端推理适合部署后的快速验证,这里保留调用示例。
# Run inference on your model on a persistent, auto-scaling, cloud API# Load modelmodel=project.version(dataset.version).modelassertmodel,"Model deployment is still loading"# Choose a random test imageimportos,random test_set_loc=dataset.location+"/test/images/"random_test_image=random.choice(os.listdir(test_set_loc))print("running inference on "+random_test_image)pred=model.predict(test_set_loc+random_test_image,confidence=40,overlap=30).json()pred📌 小结
YOLOv8 的复现门槛低,但路径和数据集版本经常是问题点。建议先确认预训练推理没问题,再切训练数据。
这一类 notebook 建议按“先环境、再数据、再单样例、最后批量推理”的顺序复现。遇到报错时,优先检查 GPU、依赖版本、数据集目录和模型权重路径。
后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。
📚 同系列教程汇总
Google Gemini 3.5 Flash 零样本目标检测教程:从提示词到可视化结果
GLM-OCR 文档识别实战教程:从验证码、公式到车牌 OCR
RF-DETR + ByteTrack 多目标跟踪实战教程:从命令行到 Python 视频轨迹可视化
SAM 3 图像分割实战教程:文本、框和点提示的多种分割方式
YOLOv8 自定义目标检测训练实战:预训练推理、数据集训练与部署