CreateML与计算机视觉模型训练

使用CreateML进行计算机视觉模型训练

在当今的软件开发领域,无代码平台逐渐成为趋势,它们允许开发者无需编写代码即可构建复杂的应用程序。Apple的CreateML正是这样一个平台,它允许开发者通过简单的操作来训练用于图像、声音、文本等多种数据类型的机器学习模型。CreateML与Apple生态系统紧密集成,为开发者提供了一个强大的工具,使得在应用程序中使用机器学习模型变得前所未有的简单。

计算机视觉领域,CreateML支持图像分类和目标检测两大功能。图像分类任务旨在识别图像中的主要对象,而目标检测则进一步确定图像中各个目标的具体位置。为了使用CreateML,需要准备适当的数据格式。遗憾的是,Apple使用的是专有的JSON格式,这种格式在标注工具中并不常见,因此大多数用户需要编写一些样板代码来转换他们的标注数据。

幸运的是,Roboflow作为一个通用的计算机视觉数据转换器,可以帮助实现无代码模型训练的愿景。通过将Roboflow与CreateML结合使用,可以轻松地将标注好的数据转换为CreateML所需的格式,从而简化了模型训练的流程。

要使用CreateML构建计算机视觉模型,需要经历以下步骤:收集数据、配置目标检测模型、开始训练以及评估模型性能。接下来,将详细介绍如何完成这些步骤。

要完成本教程,需要一台安装了CreateML的Apple macOS设备(CreateML随XCode免费提供,可在Mac App Store中下载)。

可以通过使用iPhone拍摄照片来收集数据。为了提高模型的泛化能力,应该从不同角度、不同背景和不同光照条件下拍摄主题的照片。照片的多样性越丰富,模型的性能通常越好。

一旦收集了大约一百张图片,就可以开始标注它们了。有多种免费工具可供选择,包括Roboflow、CVAT、VoTT、LabelMe或LabelImg等,可以使用这些工具在想要检测的对象周围创建边界框。然后,将图片和标注数据上传到Roboflow,并选择CreateML格式进行导出(可选地添加一些增强功能以增加数据集的大小)。

如果不想花时间收集和标注自己的图片,也可以从Roboflow Universe中选择一个开源数据集,并直接以CreateML JSON格式下载。

现在,来到了最有趣的部分——训练模型!启动CreateML并创建一个新的目标检测项目。首先,创建一个目标检测器,然后给项目命名并添加描述。例如,将训练一个模型来检测一个人是否戴着口罩(基于这个公开的戴口罩数据集)。接下来,添加项目名称和描述。然后,将解压从Roboflow下载的文件,并指向CreateML的训练、验证和测试数据。

// 假设已经解压了从Roboflow下载的文件,并准备好了训练、验证和测试数据 // 接下来,将使用CreateML进行模型训练 let trainingData = "path/to/trainingData"; let validationData = "path/to/validationData"; let testData = "path/to/testData"; // 创建并配置目标检测模型 let model = CreateML.ObjectDetector( trainingData: trainingData, validationData: validationData, testingData: testData ); // 开始训练模型 model.train();

训练可能需要一段时间,所以可以趁机休息一下(或者让它在夜间运行,这取决于数据集大小和选择的迭代次数)。需要注意的是,电脑在训练期间将会全力工作,所以不要指望在模型训练时还能做其他事情。

在模型训练过程中,会看到蓝色线条向右移动(希望是向下移动)。这条线衡量的是验证损失,这是衡量模型与数据集拟合程度的一个指标。数值越低越好。

训练结束时,将看到每个类别的交并比(I/U)百分比以及训练、验证和测试集的平均精度均值(MAP)。这里的数值越高越好。

从上面的截图中可以看到,模型在检测戴口罩的面部方面比未戴口罩的面部表现得更好。而且,它在训练和验证数据上的表现比测试数据上要好。这意味着模型对之前未见过的数据的泛化能力并不强。

为了解决这个问题,应该收集或生成更多的训练数据(特别是不戴口罩的人的数据)或添加增强功能,并从Roboflow重新导出新版本。

但是,数字可能难以理解。要真正了解模型性能,请点击“输出”选项卡并将测试图像放入其中,以查看模型预测的可视化效果。

在保留的测试图像上进行准确的预测。在这里,可以看到模型实际上做得很好!它检测到了两个戴口罩的人。不幸的是,在其他一些图像中,它的表现更差;例如,它错过了戴口罩的孩子和脸部被男人手臂部分遮挡的女士。

模型并不完美。

这是一个不错的开始!可以直接将这个CoreML文件放入Apple示例应用中,并在iPhone的实时摄像头上运行它。

但是,要获得足够好以至于可以用于生产的模型,需要进行实验和迭代。为了改进这个模型,会出去收集更多多样化的训练样本,将它们添加到数据集中,并训练另一个版本的模型。

然后重复识别模型最不准确的地方,添加更多数据,再次训练,直到它准备好用于生产!

模型表现如何?找到了一些提高模型性能的增强功能吗?

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