【项目】基于 YOLOv11与COCO 的目标检测项目【公开数据集 和 完整项目步骤与代码】

基于 YOLOv11与COCO 的目标检测项目【公开数据集 和 完整项目步骤与代码】

项目背景

通用目标检测是计算机视觉领域的基础任务,旨在识别图像中多种常见目标的位置和类别,广泛应用于监控、自动驾驶、图像检索等场景。本项目采用YOLOv11轻量级模型,基于COCO128小样数据集,快速搭建通用目标检测流程,适合新手入门,验证模型基本功能与训练流程的完整性,为后续复杂场景项目奠定基础。

数据集【COCO128】

选用Ultralytics官方提供的COCO128数据集,是COCO2017数据集的精简版,专门用于快速验证模型训练流程,无需复杂数据预处理,可直接适配YOLOv11。

  • 数据集名称:COCO128
  • 类别数量:80类通用目标(含人、自行车、汽车、动物、日常用品等)
  • 数据规模:128张标注图像,包含训练集96张、验证集32张
  • 标注格式:YOLO格式(txt文件,每行对应一个目标,包含类别ID、目标中心坐标、宽高归一化值)
  • 下载链接:https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip

项目配置

环境配置

需安装Python 3.8+,建议使用GPU(CUDA 11.8+)加速训练,CPU可运行但速度较慢,具体依赖安装如下:

创建虚拟环境

conda create -n yolo11 python=3.10

激活虚拟环境

conda activate yolo11

安装PyTorch

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

安装YOLOv11

pip install ultralytics

安装辅助依赖

pip install opencv-python matplotlib numpy

数据集配置(data.yaml)

在项目根目录创建data.yaml文件,配置数据集路径、类别数和类别名称,内容如下:

path**:** /root/autodl-tmp/coco128*# 数据集根目录(根据自身解压路径调整)*
train**:** images/train*# 训练集图像路径(相对根目录)*
val**:** images/val*# 验证集图像路径(相对根目录)*

nc**:** 80*# 类别数(COCO128固定为80类)*
# 80类目标名称(与COCO数据集一致,不可修改顺序)
names**:** [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light',

'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow',

'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee',

'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard',

'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple',

'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch',

'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone',

'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear',

'hair drier', 'toothbrush']

yolo11n权重文件在本地下载:https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11n.pt

数据集结构

训练图像(96张),验证图像(32张);训练标签(与训练图像一一对应),验证标签(与验证图像一一对应)

模型配置

选用YOLOv11n(nano版),轻量、速度快,适合快速验证流程;若需更高精度,可替换为yolov11s(small版)、yolov11m(medium版),无需修改其他配置,模型会自动加载预训练权重。

项目代码

项目代码分为3部分:模型训练、模型推理、结果可视化

from ultralytics import YOLO
import matplotlib.pyplot as plt
import cv2

# -------------------------- 1. 模型训练 --------------------------
# 加载YOLOv11n预训练模型(nano版,轻量快速)

model = YOLO('yolo11n.pt')

# 开始训练(参数可根据自身设备调整)

train_results = model.train(

data='data.yaml', # 数据集配置文件路径

epochs=100, # 训练轮数

imgsz=640, # 输入图像尺寸,默认640x640

batch=16, # 批次大小,GPU显存小则改为8/4,CPU改为2/1

device=0, # 训练设备:0=GPU,'cpu'=CPU

workers=4, # 数据加载线程数,根据CPU核心数调整

optimizer='Adam', # 优化器,默认Adam,可选SGD

lr0=0.001, # 初始学习率

weight_decay=0.0005, # 权重衰减,防止过拟合

save=True, # 保存训练过程中的最佳模型

project='coco128_yolov11', # 训练结果保存目录

name='train_exp' # 实验名称

)

# -------------------------- 2. 模型推理 --------------------------
# 加载训练好的最佳模型

best_model = YOLO('/root/autodl-tmp/coco128/runs/detect/coco128_yolov11/train_exp/weights/best.pt')

# 批量图片推理(推理val目录下所有图片)

batch_results = best_model('coco128/images/val', save=True, conf=0.4)

# 摄像头实时推理(可选,需连接摄像头)
# best_model(0, show=True, conf=0.4) # 0=默认摄像头,show=True:显示实时画面

# -------------------------- 3. 结果可视化 --------------------------
# 查看训练过程中的损失曲线(训练损失、验证损失)

plt.figure(figsize=(12, 4))
# 训练损失

plt.subplot(1, 2, 1)

plt.plot(train_results.history['train/box_loss'], label='Box Loss')

plt.plot(train_results.history['train/cls_loss'], label='Class Loss')

plt.title('Training Loss')

plt.xlabel('Epochs')

plt.ylabel('Loss')

plt.legend()

# 验证损失

plt.subplot(1, 2, 2)

plt.plot(train_results.history['val/box_loss'], label='Val Box Loss')

plt.plot(train_results.history['val/cls_loss'], label='Val Class Loss')

plt.title('Validation Loss')

plt.xlabel('Epochs')

plt.ylabel('Loss')

plt.legend()

plt.savefig('train_loss_curve.png') # 保存损失曲线图片

plt.show()

# 查看推理结果图片(读取保存的推理结果)

result_img = cv2.imread('coco128_yolov11/train_exp/predictions/000000000139.jpg')

cv2.imshow('Inference Result', result_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

运行该代码

python daima.py

开始训练:

项目结果

训练结果

  • 训练时长:使用GPU(RTX 4090),50轮训练约10-15分钟;使用CPU约1-2小时。
  • 损失曲线:训练过程中,训练损失(box_loss、cls_loss)和验证损失均逐步下降,最终趋于平稳,无明显过拟合(若验证损失上升,可减少训练轮数或增加权重衰减)。

results.png:

  • 模型权重:最佳模型权重保存在/root/autodl-tmp/coco128/runs/detect/coco128_yolov11/train_exp/weights/best.pt,可用于后续推理。

推理结果

  • 推理速度:GPU单张图片推理约0.01秒(100FPS),CPU约0.1秒(10FPS)。
  • 检测效果:能准确识别图像中的80类目标,置信度普遍在0.4以上,定位准确(如识别出人物、汽车、动物等),少量小目标可能出现漏检(因数据集规模较小)。

val_batch0_labels.jpg:

val_batch0_pred.jpg:

项目总结

本项目成功跑通YOLOv11目标检测的完整流程,验证了模型的通用性和易用性。由于COCO128数据集规模较小,模型精度有限,适合新手入门;若需提升精度,可替换为完整COCO2017数据集(11.8万张图片),并增加训练轮数。

相关推荐
枫夜求索阁3 小时前
Hermes Agent 安装教程:对接企业微信 AI Bot
人工智能·企业微信
JEECG低代码平台3 小时前
给 Claude Code 装一块秒表:每轮 + 累计耗时自动反馈
人工智能
木泽八3 小时前
2026年大模型学习路线图
人工智能
weixin_509138343 小时前
ACD理论实战揭秘:配置智能体认知动力学后,医疗Agent从“可能上岗”到“必须上岗”的能力跃迁——以心衰管理智能体测评报告为例
人工智能·机器学习·智能体·认知动力学
K姐研究社3 小时前
飞书OpenClaw完整部署教程 – 3分钟组建 AI Agent 团队
人工智能·aigc·飞书
QuestLab3 小时前
【第20期】2026年4月23日 AI日报
运维·服务器·人工智能
思绪无限3 小时前
YOLOv5至YOLOv12升级:快递包裹检测系统的设计与实现(完整代码+界面+数据集项目)
人工智能·python·深度学习·目标检测·计算机视觉·快递包裹检测
学习论之费曼学习法3 小时前
AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础
人工智能·学习
花千树-0103 小时前
AI Agent 模型成本控制实战:Token 消耗优化与监控技巧
人工智能·agent·token·function call·ai agent·mcp·agent memory