不用手工标注训练 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 自动标注与分类微调-本文
