在挑选模型时,了解其在特定数据上的表现至关重要,但往往难以获得。像mAP(平均精度均值)这样的指标可以帮助了解模型在数据集上的表现,但它们只能给出模型在数据集图像上表现的一个大致概念。
本指南将介绍如何使用基准数据集和监督工具来比较Roboflow Universe上的两个人脸检测模型的性能。
假设想要检测人脸,并希望模型能在各种场景下表现良好。为此,可以在Universe中搜索一个训练有素的目标检测模型,并拥有大量图像。为了评估模型在多种设置下的表现,最好使用一个大型、通用、多样化的数据集,如COCO。在这个例子中,将使用一个仅限于人脸的COCO子集的Universe数据集。
可选:创建自己的评估数据集。如果想评估模型在自己的使用案例中的表现,可以尝试创建自己的数据集,而不是训练它,看看是否有现成的模型可以为工作。例如,可以从想要部署模型的地方捕获大约一百张图像或视频,然后将图像上传到Roboflow。可以快速标注它们,甚至可以让Autodistill为标注图像。一旦图像被标注,可以添加和修改预处理和增强,然后生成一个版本。创建版本后,可以继续按照本指南进行,但将评估数据集下载细节替换为自己的项目以下载项目。
一旦有了模型和评估数据集,就可以测试模型并使用监督工具的mAP基准测试功能为两个模型产生mAP。
首先,将导入roboflow和supervision包。
!pip install supervision roboflow
下载评估数据集。现在,将下载评估数据集,并使用DetectionDataset.from_coco()方法将其导入监督。
from roboflow import Roboflow
rf = Roboflow(api_key="**YOUR API KEY HERE**")
project = rf.workspace("shreks-swamp").project("coco-dataset-limited--person-only")
dataset = project.version(1).download("coco")
要在自己的数据集上进行此操作,请点击Universe上任何目标检测数据集上的“下载此数据集”按钮,并以COCO格式导出。
现在可以相互测试模型。首先,将测试Universe上人脸检测模型的顶级结果。
api_key = "YOUR API KEY HERE"
project_id = "people-detection-o4rdr"
rf = Roboflow(api_key)
project = rf.workspace().project(project_id)
model = project.version(1).model
然后,设置一个回调函数,以便监督可以运行模型对抗评估数据集中的图像。
def callback(image_path,ground_truth):
image = cv2.imread(image_path)
result = model.predict(image_path, confidence=10, overlap=30).json()
sv_result = sv.Detections.from_inference(result)
bounding_box_annotator = sv.BoundingBoxAnnotator()
annotated_frame = bounding_box_annotator.annotate(scene=image, detections=sv_result)
bounding_box_annotator = sv.BoundingBoxAnnotator()
annotated_frame = bounding_box_annotator.annotate(scene=image, detections=ground_truth)
sv.plot_image(image=image, size=(3, 3))
return sv_result
现在通过将模型传递给监督的基准测试来计算数据集的模型mAP。
mean_average_precision = sv.MeanAveragePrecision.benchmark(dataset = sv_dataset, callback = callback)
可以看到,尽管他们的模型页面上列出了很高的mAP,但其表现非常差,mAP仅为12.77%。接下来,将比较另一个模型,即Roboflow自己的精选人脸检测模型。可以通过完成刚刚所做的相同过程,但通过修改第一步中的project_id来评估该模型。
探索计算机视觉中的实际效果是一个挑战,但通过这个过程,评估了两个模型的性能,发现其中一个模型对使用案例无效。评估数据集让能够确定模型在实际使用中的有效性,而无需在野外测试它们。过程还允许比较无限数量的模型,以找到最适合使用案例的模型。