无监督图像分类模型训练指南

在当今的技术领域,无监督学习是一种强大的机器学习方法,它允许模型在没有人工标签的情况下学习数据的内在结构。这种方法特别适用于图像分类任务,其中大量的图像数据需要被自动识别和分类。通过使用先进的视觉模型,如CLIP、BLIP、DINOv2和ALBEF,可以训练出更小、更易于在边缘设备上运行的模型。

使用CLIP自动标记图像

CLIP是一个由OpenAI开发的多模态视觉模型,它能够根据提供的文本提示自动为图像分配标签。在本指南中,将使用CLIP作为基础模型,通过文本提示来标记图像,然后使用这些标记的图像来训练一个YOLOv8分类模型。将使用Roboflow Universe上的“损坏标志多标签数据集”,但在这个指南中,将构建一个单类分类模型。

from autodistill_clip import CLIP from autodistill.detection import CaptionOntology from autodistill_yolov8 import YOLOv8 # 设置本体,将文本提示映射到标签 base_model = CLIP(ontology=CaptionOntology({"损坏标志": "损坏标志", "标志": "标志"}))

要对图像进行推理,可以使用Autodistill提供的predict()方法:

pred = base_model.predict("./dataset/valid/your-image.jpg", confidence=0.5) classes = base_model.classes print(classes[pred.class_id])

标记图像的过程可能需要一些时间,这取决于数据集中的图像数量以及运行Autodistill的硬件。如果使用GPU对一百张图像进行推理,例如,推理会很快;如果在同一批图像上使用CPU进行推理,推理会慢一些。标记的图像将被保存到名为“dataset”的文件夹中,可以使用这些图像来训练分类模型。

训练分类模型

现在已经为项目标记了图像,可以开始训练分类模型了。将使用YOLOv8,这是一个流行的模型架构,来训练分类模型。在本节中,将:

from autodistill_yolov8 import YOLOv8 target_model = YOLOv8("yolov8n-cls.pt") target_model.train("./dataset/data.yaml", epochs=100)

以上三行代码是训练模型所需的全部。将使用“n”YOLOv8分类检查点(最小的权重)对模型进行100个周期的训练。运行上述代码后,模型将进行训练,权重将保存到本地计算机。训练模型所需的时间再次取决于正在处理的图像数量以及运行Autodistill的硬件。

测试模型

使用之前介绍的predict()方法,但这次用于目标模型,可以测试模型的性能:

results = target_model.predict("/content/dataset/valid/damaged sign/image.jpg") print(results[0].names) print(results[0].probs)

以下图像被成功识别为“损坏标志”:

部署模型

可以将YOLOv8分类模型的权重上传到Roboflow进行部署。通过将权重部署到Roboflow,可以使用无限可扩展API和SDK将模型集成到各种设备和环境中的项目中。例如,可以使用roboflow.js在Web浏览器中部署模型,或者使用Python SDK在Python环境中部署。

rf = Roboflow(api_key="API_KEY") project = rf.workspace().project("PROJECT_ID") project.version(DATASET_VERSION).deploy(model_type="yolov8-cls", model_path=f"./runs/detect/train/")

需要用适当的API密钥、项目ID和数据集版本替换上述代码中的值。在Roboflow文档中概述了如何找到这些值:

除了使用Roboflow托管的API进行部署外,还可以使用Roboflow Inference,这是一个开源的推理解决方案,已经在生产环境中支持了数百万次API调用。Inference支持CPU和GPU,为提供了从NVIDIA Jetson到与TRT兼容的设备再到ARM CPU设备的广泛设备访问权限。

有了Roboflow Inference,可以在设备上自托管并部署YOLOv8分类模型。可以使用Inference Docker容器或pip包部署应用程序。在本指南中,将使用Inference Docker部署解决方案。首先,在设备上安装Docker。然后,查看Inference文档以找到适合设备的Docker容器。

docker pull roboflow/roboflow-inference-server-gpu

此命令将下载Docker容器并启动推理服务器。该服务器可在以下网址访问:

http://localhost:9001

要运行推理,可以使用以下Python代码:

import requests workspace_id = "" model_id = "" image_url = "" confidence = 0.75 api_key = "" infer_payload = { "image": { "type": "url", "value": image_url, }, "confidence": confidence, "iou_threshold": iou_thresh, "api_key": api_key, } res = requests.post( f"http://localhost:9001/{workspace_id}/{model_id}", json=infer_payload, ) predictions = res.json()

在上面的代码中,设置Roboflow工作区ID、模型ID和API密钥。要使用YOLOv5模型进行商业推理,需要一个Roboflow企业许可证,通过该许可证,将获得使用YOLOv5的传递许可证。企业许可证还为提供了高级设备管理、多模型容器、自动批推理等功能。要了解更多关于使用Roboflow Inference部署商业应用程序的信息,请联系Roboflow销售团队。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485