在机器学习领域,模型的性能往往取决于输入数据的质量。然而,当可用数据量不足时,如何提升模型的性能呢?这时,数据增强技术就显得尤为重要。特别是使用现实数据生成器进行数据增强,可以在不改变模型架构的情况下,显著提升模型的表现。
本文将深入探讨Kopikat.co这一数据增强工具。Kopikat由OpenCV.ai开发,旨在提升实际规模数据集的质量。在生产环境中,人们通常使用不超过5,000张图片——与大型研究数据集相比,后者的规模要大一个数量级。本文将展示Kopikat如何在不改变模型架构的情况下,提升小规模数据集的性能。
将以自定义的“Hard Hat Workers”数据集为例,该数据集来自Roboflow Universe。这是一个理想的日常工程实践数据示例,代表了一项重要的现实任务,但其规模有限(训练子集仅约5,000张图片),这是常见的情况。
使用了数据的v5版本,并排除了“person”类别。以下是数据集中的一些示例图片。红色边界框对应于“helmet”类别,而蓝色边界框则指代“head”。
首先,需要安装UltralyticsYOLOv8包及其所有必要的依赖项。
!pip3 install ultralytics==8.0.20
接下来,将使用带有COCO格式注释的数据集。可以手动下载,或者使用以下代码片段通过Roboflow API下载:
!pip install roboflow
from roboflow import Roboflow
rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace("opencvai").project("hard-hat-sample-with-kopikat")
dataset = project.version(1).download("yolov8")
在实验中,使用了YOLOv8-nano,这是YOLOv8家族中最轻量级的变体。要开始训练,首先需要准备一个数据集配置:
from ultralytics import YOLO
# 加载模型
model = YOLO('yolov8n.yaml') # 从YAML构建新模型
# model = YOLO('yolov8n.pth') # 从预训练权重初始化
# 训练模型
model.train(data='./Hard-Hat-Sample-With-Kopikat-1/data.yaml', # './Hard-Hat-Sample-With-Kopikat-2/data.yaml'
batch=128,
device=0,
project="roboflow",
name="baseline", # kopikat
verbose=True,
imgsz=416)
从头开始训练模型。
要评估模型,启动以下命令:
from ultralytics import YOLO
model = YOLO('path/to/best.pt') # 加载最后一个检查点
# 验证模型
metrics = model.val() # 不需要参数,记住数据集和设置
评估完成后,获得了以下结果:mAP50指标为95.4,对于轻量级模型来说已经相当不错。然而,可以使用Kopikat.co来增强数据,进一步推动指标。
要将训练好的模型上传到Roboflow,可以使用以下代码片段:
from roboflow import Roboflow
rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace("opencvai").project("hard-hat-sample-with-kopikat")
version = project.version(1) # 使用2上传Kopikat训练的模型
version.deploy("yolov8", model_path="./roboflow/baseline/") # ./roboflow/kopikat
上传完成后,指标将显示出来,可以尝试使用Deploy页面上的模型:
Kopikat的核心思想是在保留原始数据注释的同时生成原始图像的新副本。已经使用Kopikat多次扩展了Hard Hat Workers数据集。下面,展示了原始图像(左侧)及其增强副本(右侧):
Kopikat保留了对象的位置和类别,因此可以应用原始数据集的注释,并在训练中使用增强的数据。
有了增强的数据副本后,启动了几次实验:真实数据+每张图像的两个增强副本。总计:14,654张图片。从上面的图像中,可以看到每张图像的两个副本有助于推动指标,并实现96 mAP(+0.6)。
在模型上传到Roboflow后,可以在那里检查指标:
需要注意的是,结果可能会因具体数据集而异。但关键的收获是,生成式AI和Kopikat增强可以帮助在不改变模型架构和学习过程的超参数的情况下,提高机器学习模型的结果。
本文探讨了如何使用Kopikat这一生成式AI数据增强工具来提升机器学习模型的性能。文章使用自定义的Hard Hat Workers数据集和YOLOv8-nano模型进行训练,实现了mAP指标的64.4。在使用Kopikat增强数据后,mAP指标提高到了65.5,每张图像有两个副本。