在机器学习领域,尤其是在对象检测任务中,经常面临一个经典的权衡问题:是选择一个快速但可能不够准确的模型,还是选择一个准确但速度较慢的模型。Roboflow平台现在提供了两种不同大小的模型用于训练自定义对象检测:快速模型和准确模型。本文将深入探讨在选择这两种模型时需要考虑的因素,并提供一些基准测试结果,以帮助用户为自己的用例量化这种权衡。
首先,来讨论准确性的权衡。较小的模型几乎总是做出不太准确的预测。用来评估对象检测准确性的指标被称为平均精度均值(mean average precision),这是一种衡量预测边界框与真实边界框重叠程度的指标。为了提供Roboflow模型(截至2021年2月21日)的准确性基准,在以下Roboflow Universe数据集上进行了测试:
Valentines Chocolates
Honey Bees
Clash of Clans
Football Players
Pill Detection
这些测试的主要发现是,如果模型性能已经饱和(大于95%的平均精度均值),将不会看到太多的准确性权衡。然而,如果模型还有提高准确性的空间(40-80%的平均精度均值),应该可以看到使用Roboflow准确训练模型带来的准确性提升。要确切了解模型类型将如何影响自定义模型,应该在自己的自定义数据上运行类似的实验。
接下来,讨论推理速度的权衡。推理速度是指模型在给定图像作为输入时做出预测所需的时间。在学术论文中,推理速度意味着输入张量通过神经网络并产生输出所需的时间。在实践中,推理速度包括从应用程序发布图像到推理例程并接收格式良好的预测作为响应的所有时间,包括沿途的任何网络延迟。在本节中,使用开源实用程序库——roboflow推理服务器基准测试,对Roboflow的各种部署目的地进行了实际推理速度的基准测试。
Roboflow Hosted Inference API - Roboflow在云端托管模型。
Web Browser - iPhone XR - Roboflow在Web浏览器中运行,这里在iPhone XR上。
Enterprise CPU - Intel Xeon E - 可以在自己的CPU上运行Roboflow。这里在Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz上进行了基准测试。
NVIDIA Jetson NX - 可以在边缘Jetson上运行Roboflow。这里在NVIDIA Jetson Xavier NX, Jetpack 4.5上进行了测试。
Web Browser - Mac M1 Max - Roboflow在Web浏览器中运行,这里在Mac M1 Max, Version 98.0.4758.102 (Official Build) (arm64)上。
Enterprise GPU - NVIDIA K80 - 可以在自己的GPU上运行Roboflow。这里在AWS p2.xlarge实例上的NVIDIA K80上进行了基准测试。
Enterprise GPU - NVIDIA V100 - 这里在AWS p3.2xlarge实例上的NVIDIA V100上进行了基准测试。
上述所有估计值都是在处理单个图像帧时测量的,这是实时推理所需的。如果可以并行处理帧,可以实现更高的推理速度。例如,通过100帧的并行处理,见证了对托管推理API的300 FPS。推理速度可能会因硬件和具有不同预测行为的自定义模型(例如昂贵的NMS操作)而异。要获得自定义模型的最准确估计,应该在自己的硬件上对模型进行基准测试。可以在了解更多关于为用例实现Roboflow部署的具体信息。
最后,讨论训练时间的权衡。根据自定义数据集,Roboflow快速训练模型的训练速度应该比Roboflow准确训练模型快大约两倍。