自定义元数据应用指南

自定义元数据在数据管理和分析中扮演着重要角色。它不仅可以帮助更高效地检索和组织数据,还能为推断结果提供额外的上下文信息。例如,假设是一家在美国拥有三个工厂的汽车制造商。在分析推断结果时,可能会考虑添加以下信息:工厂的地理位置、图像拍摄的生产线、某个特定操作是否成功以及推断的预期结果(例如颜色为蓝色)。

通过向推断结果附加额外的数据,可以在模型监控仪表板中显示这些数据。当使用Roboflow的推断容器或托管推断API进行推断请求时,会在响应中收到一个推断ID。使用这个ID,可以将其添加到推断ID数组中,以附加元数据。字段名称是属性的名称,值是该属性的值。

例如,如果想将地理位置信息附加到推断结果上,会将字段名称设置为“location”,值将是一个位置,如“united_states”。需要注意的是,字段名称和字段值完全由用户定义。务必保持格式一致,包括字母的大小写。例如,字段名称:“my_location”和字段名称:“My_location”将被视为两个不同的元数据值。

以下是一个使用curl命令的示例请求,用于将自定义元数据附加到推断结果上。这个请求将元数据发送到Roboflow的API,并包含API密钥、数据数组以及每个数据项的推断ID、字段名称和字段值。

curl --location --request POST 'https://api.roboflow.com/${WORKSPACE}/inference-stats/metadata' \ --header 'Content-Type: application/json' \ --data-raw '{ "api_key": "", "data": [ { "inference_ids": ["a12a19a9-a933-44c9-970c-a55ea03bb453"], "field_name": "camera_location", "field_value": "canada" }, { "inference_ids": ["accf0af9-bdf0-4b22-8106-6988d4cada5a"], "field_name": "camera_location", "field_value": "emea" } ] }'

响应状态码可能为200或400,分别表示请求成功或请求无效。

{ "status": "ok" } { "error": "Invalid request" } import requests from inference_sdk import InferenceHTTPClient # 设置API密钥和工作区ID api_key = "YOUR_API_KEY" workspace = "YOUR_WORKSPACE_ID" # 设置默认值 field_name = "test_field" field_value = "test_value" model_id = "coco/24" image_path = "https://cdn.britannica.com/79/232779-050-6B0411D7/German-Shepherd-dog-Alsatian.jpg" api_url = "https://detect.roboflow.com" # 初始化客户端 print("Initializing the InferenceHTTPClient...") client = InferenceHTTPClient(api_url=api_url, api_key=api_key) # 运行推断 result = client.infer(image_path, model_id=model_id) print("Result:", result) # 从结果中提取推断ID inference_id = result.get('inference_id') if inference_id: print("Inference ID:", inference_id) else: raise ValueError("Inference ID not found in the response.") url = f"https://api.roboflow.com/{workspace}/inference-stats/metadata" # 设置POST请求的头部和数据 headers = { "Content-Type": "application/json" } data = { "api_key": api_key, "data": [ { "inference_ids": [inference_id], "field_name": field_name, "field_value": field_value } ] } # 发送POST请求以附加自定义元数据 response = requests.post(url, headers=headers, json=data) # 检查响应状态 if response.status_code == 200: print("Custom metadata attached successfully:", response.json()) else: print("Failed to attach custom metadata:", response.text)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485