在当今的技术领域,拥有一个可靠且易于使用的计算机视觉模型至关重要。本文将探讨如何利用Roboflow和YOLOv8实例分割的强大功能来简化工作流程并取得卓越的结果。
YOLOv8是一种最先进的目标检测算法,以其高精度和实时性能而闻名。它在实例分割方面特别有效,实例分割涉及识别和描绘图像中的单个对象。YOLOv8提供精确的边界框和准确的掩码,使其成为需要像素级分析的任务的极佳选择。
可以在下面的交互式游乐场中尝试不进行微调的YOLOv8 nano检查点。上传包含任何Microsoft COCO类别的图像(例如猫、笔记本电脑、汽车、微波炉),并在图像上查看结果:
!pip install ultralytics==8.0.28
在Colab笔记本中运行以下代码,将使用自定义的汽车零件数据集。汽车零件分割是理想的实例分割用例,因为它需要精确识别和描绘单个零件。分割提供像素级分析,实现对汽车零件的准确和详细理解。
自定义训练的YOLOv8实例分割模型可以开发各种应用,包括:自动驾驶车辆系统、汽车维修和保养、制造和质量控制。
以下是使用YOLOv8模型实现的汽车零件分割的示例图像:
现在,让深入教程,学习如何使用Roboflow在自己的自定义数据集上训练YOLOv8实例分割。
要开始,需要安装必要的软件包。打开Jupyter笔记本并执行以下命令以安装Ultralytics所需的版本:
!pip install ultralytics==8.0.28
Ultralytics YOLO软件包附带了一个命令行界面(CLI),它简化了训练、验证和推理任务。可以在不修改代码的情况下执行这些任务,使其成为理想的起点。CLI支持各种模式,如检测、分类和分割。可以根据需要指定所需的模型和其他参数。
如果想快速使用预训练的COCO模型对样本图像执行实例分割,可以使用以下CLI命令:
%cd {HOME}
!yolo task=segment mode=predict model=yolov8s-seg.pt conf=0.25 source='https://media.roboflow.com/notebooks/examples/dog.jpeg' save=true
此代码段下载了预训练的YOLOv8 COCO模型,对提供的图像应用了实例分割,并保存了带有边界框和掩码的结果图像。
创建用于训练YOLOv8实例分割模型的自定义数据集可能是一个耗时的任务。然而,Roboflow显著简化了这一过程。按照以下步骤准备自定义数据集:
1. 创建项目:首先创建一个Roboflow账户并在Roboflow仪表板中创建一个新项目。选择“实例分割”项目类型。
2. 上传图像:通过API或Web界面将数据集添加到项目中。如果有一个包含支持格式图像的目录,Roboflow在拖放目录时会自动读取图像和注释。
可以手动标记数据,或使用自动标记。使用自动标记,可以使用基础模型,如Grounding DINO和Segment Anything,自动标记数据集中的图像。有关自动标记的工作原理以及如何将其用于项目的更多信息,请参阅自动标记发布帖子。
3. 生成数据集版本:添加图像和注释后,生成数据集版本。可以选择在此阶段应用预处理和增强,以提高模型的鲁棒性。
4. 导出数据集:一旦生成了数据集版本,就以YOLO v5 PyTorch格式导出它。这种格式允许轻松地将数据集加载到Jupyter笔记本中进行训练。
!mkdir {HOME}/datasets
%cd {HOME}/datasets
!pip install roboflow --quiet
from roboflow import Roboflow
rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace("alpaco5-f3woi").project("part-autolabeld")
dataset = project.version(5).download("yolov8")
现在有了自定义数据集,可以开始训练YOLOv8实例分割模型了。执行以下代码以使用下载的数据集训练模型:
%cd {HOME}
!yolo task=segment mode=train model=yolov8s-seg.pt data={dataset.location}/data.yaml epochs=10 imgsz=640
!ls {HOME}/runs/segment/train/
训练完成后,可以通过执行以下代码来检查结果,包括混淆矩阵、预测和验证批次:
%cd {HOME}
Image(filename=f'{HOME}/runs/segment/train/confusion_matrix.png', width=600)
%cd {HOME}
Image(filename=f'{HOME}/runs/segment/train/results.png', width=600)
%cd {HOME}
Image(filename=f'{HOME}/runs/segment/train/val_batch0_pred.jpg', width=600)
一旦自定义模型训练完成,可以使用以下CLI命令在单独的数据集上验证其性能:
!yolo task=segment mode=val model={HOME}/runs/segment/train/weights/best.pt data={dataset.location}/data.yaml
要使用训练有素的模型对新图像执行实例分割,请使用以下CLI命令:
!yolo task=segment mode=predict model={HOME}/runs/segment/train/weights/best.pt conf=0.25 source={dataset.location}/test/images save=true
此代码段预测测试图像中的实例,并保存带有边界框和掩码的结果图像。
要将训练好的模型部署回Roboflow,请按照以下步骤操作:
首先,使用以下代码检索工作区和项目名称:
rf = Roboflow(api_key="API_KEY")
print(rf.workspace())
接下来,使用以下代码将训练好的模型上传回在Roboflow中所需的项目:
project = rf.workspace("roboflow-ngkro").project("car-parts-ecsse")
project.version(3).deploy("yolov8", "runs/segment/train/")
通过结合Roboflow和YOLOv8实例分割的强大功能,可以简化工程工作流程并实现准确高效的图像分析。Roboflow简化了数据集准备过程,而YOLOv8在实例分割任务中提供了出色的性能。