使用Azure认知服务计算机视觉能否获取图片中低置信度对象检测结果?
解决方法
Azure 计算机视觉API的对象检测功能默认使用0.5作为置信度过滤阈值,低于该值的检测结果会直接被API过滤,不会出现在返回数据中,你可以通过调整调用参数修改过滤阈值:
- 首先将
Microsoft.Azure.CognitiveServices.Vision.ComputerVisionSDK升级到最新稳定版,旧版本SDK未开放阈值调整参数 - 调用
AnalyzeImageAsync时新增阈值参数,可根据你的需求设置0到1之间的任意数值,设置为0即可返回所有模型输出的检测候选结果
修改后的代码示例:
public static async Task AnalyzeImageUrl(ComputerVisionClient client, string imageUrl) { // 定义需要从图片中提取的特征列表 var features = new List<VisualFeatureTypes?> { VisualFeatureTypes.Objects }; Console.WriteLine("Analyzing objects in image..."); Console.WriteLine(); // 分析URL对应的图片,手动指定置信度阈值为0.1,可根据需求调整 var results = await client.AnalyzeImageAsync(imageUrl, features, confidenceThreshold: 0.1); Console.WriteLine("Objects:"); foreach (var obj in results.Objects) { Console.WriteLine(@$"{obj.ObjectProperty} with confidence {obj.Confidence} at location {obj.Rectangle.X}, {obj.Rectangle.X + obj.Rectangle.W}, {obj.Rectangle.Y}, {obj.Rectangle.Y + obj.Rectangle.H}"); } }
注意:降低置信度阈值后,返回结果中的误报数量会明显上升,你需要根据自身业务场景对结果做二次校验过滤。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

