不用手工标注训练 YOLOv8 分类模型:CLIP 自动标注与分类微调

不用手工标注训练 YOLOv8 分类模型:CLIP 自动标注与分类微调

不用手工标注训练 YOLOv8 分类模型:CLIP 自动标注与分类微调


这篇教程根据我复现自动标注分类训练流程时整理,重点演示用 CLIP 生成伪标签,再训练 YOLOv8 分类模型并查看评估结果。

本文整理自我的学习和项目复现过程,尽量按实操顺序保留 notebook 的关键步骤,同时把数据集获取方式调整为适合中文教程发布的写法。

本文会重点跑通以下流程:

  • 安装 Autodistill、CLIP 和 YOLOv8 依赖
  • 从数据集后台获取未标注或弱标注图片
  • 设计分类 prompt 并检查单图预测
  • 自动生成分类数据集
  • 训练 YOLOv8 分类模型并查看评估结果

如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型,建议收藏本文;配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住,可以在评论区说明具体报错。

📚 文章目录

  • 不用手工标注训练 YOLOv8 分类模型:CLIP 自动标注与分类微调
    • ⚙️ 安装依赖
    • 📚 导入依赖
    • 📦 从数据集后台获取图片
    • 🏷️ 设计 Prompt 并测试
    • 🧾 自动生成分类数据集
    • 🏋️ 训练 YOLOv8 分类模型
    • 📊 评估模型
    • 📤 部署说明
    • 📌 小结
    • 📚 同系列教程汇总

⚙️ 安装依赖

安装 Autodistill、CLIP、YOLOv8 和可视化依赖。

!pip install autodistill autodistill-clip autodistill-yolov8 supervision-q

📚 导入依赖

导入自动标注、分类训练和可视化模块。

fromautodistill_clipimportCLIPfromautodistill.detectionimportCaptionOntologyfromautodistill_yolov8importYOLOv8importsupervisionassvimportcv2importos HOME=os.getcwd()

📦 从数据集后台获取图片

准备待自动标注的图片目录。

# 从数据集后台下载待自动标注图片后,修改 DATASET_DIR 指向解压目录。DATASET_DIR="/content/images"TRAIN_IMAGE_DIR=f"{DATASET_DIR}/train"print("train image dir:",TRAIN_IMAGE_DIR)

🏷️ 设计 Prompt 并测试

先用一张图测试 prompt 是否能区分类别,再批量标注。

base_model=CLIP(ontology=CaptionOntology({"damaged sign":"damaged sign","sign":"sign"}))image="./Damaged-Signs-Multi-label-3/train/0aad64567664f31b63fe4a5041fd9b89-graffiti-pictures-science_jpg.rf.9049d7164fbf942e158d503e2c607511.jpg"pred=base_model.predict(image)sv.plot_image(cv2.imread(image),size=(4,4))classes=base_model.ontology.classes()print(classes[pred.class_id[0]])

🧾 自动生成分类数据集

使用 CLIP 基座模型为训练图片生成分类标签。

base_model.label(input_folder="TRAIN_IMAGE_DIR",output_folder="./dataset")

🏋️ 训练 YOLOv8 分类模型

使用自动标注结果训练 YOLOv8 分类模型。

fromautodistill_yolov8importYOLOv8 target_model=YOLOv8("yolov8n-cls.pt")target_model.train(f"{HOME}/dataset/",epochs=100)

📊 评估模型

查看混淆矩阵并随机抽样推理。

fromIPython.displayimportImageimportrandom Image(filename=f'{HOME}/runs/classify/train/confusion_matrix.png',width=600)random_image=random.choice(os.listdir(f"{HOME}/dataset/valid/damaged sign"))results=target_model.predict(os.path.join(f"{HOME}/dataset/valid/damaged sign",random_image))print(results[0].names)print(results[0].probs)

📤 部署说明

这一段改为本地占位说明,实际部署可接入自己的模型服务。

# 可选:将训练好的模型接入自己的部署流程。MODEL_DIR=f"{HOME}/runs/classify/train"print("trained model dir:",MODEL_DIR)

📌 小结

这篇教程完整整理了YOLOv8 无手工标注分类训练的核心复现流程。实际操作时,建议先确认 GPU、依赖版本、数据集路径和模型权重路径,再逐段运行 notebook。

后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。

📚 同系列教程汇总

  • Google Gemini 3.5 Flash 零样本目标检测教程:从提示词到可视化结果

  • GLM-OCR 文档识别实战教程:从验证码、公式到车牌 OCR

  • RF-DETR + ByteTrack 多目标跟踪实战教程:从命令行到 Python 视频轨迹可视化

  • SAM 3 图像分割实战教程:文本、框和点提示的多种分割方式

  • SAM 3 视频分割实战教程:用文本提示分割并跟踪视频中的目标

  • 不用手工标注训练 YOLOv8 分类模型:CLIP 自动标注与分类微调-本文