Android Studio开发TensorFlow Lite目标检测APP仅显示置信度的实现
解决方法:仅展示检测置信度
根据你的代码,只需调整两处展示逻辑就能实现只显示置信度的需求,分两种常见场景给出修改方案:
场景1:只展示最高置信度(仅显示最匹配结果的置信度)
把原代码中显示类别名称的代码替换为显示最高置信度,同时去掉带类别名的多结果展示:
修改后的核心代码片段:
float[] confidences = outputFeature0.getFloatArray(); int maxPos=0; float maxConfidence=0; for(int i=0;i<confidences.length;i++){ if(confidences[i]>maxConfidence){ maxConfidence=confidences[i]; maxPos=i; } } // 替换原类别显示代码,只展示最高置信度 result.setText(String.format("最高置信度:%.1f%%", maxConfidence * 100)); // 注释或删除原多类别置信度展示代码 // String s = ""; // for(int i=0;i<classes.length;i++){ // s+=String.format("%s:%.1f%%\n",classes[i],confidences[i]*100); // } // confidence.setText(s);
场景2:展示所有置信度但去掉类别名称(仅列出所有结果的百分比)
保留多结果展示,但去掉类别名称,只显示置信度数值:
修改后的核心代码片段:
float[] confidences = outputFeature0.getFloatArray(); int maxPos=0; float maxConfidence=0; for(int i=0;i<confidences.length;i++){ if(confidences[i]>maxConfidence){ maxConfidence=confidences[i]; maxPos=i; } } // 注释或删除显示类别名称的代码 // result.setText(classes[maxPos]); // 修改格式化规则,去掉类别名 String s = ""; for(int i=0;i<confidences.length;i++){ // 可选添加序号区分不同结果,不需要序号可直接保留百分比 s+=String.format("置信度%d:%.1f%%\n", i+1, confidences[i]*100); // 无序号版本:s+=String.format("%.1f%%\n", confidences[i]*100); } confidence.setText(s);
关键修改点说明
- 删掉或注释
result.setText(classes[maxPos]);:这行负责显示类别名称,不需要则直接移除 - 调整
String.format的格式化规则:原规则%s:%.1f%%中的%s对应类别名称,删除该部分即可只显示置信度百分比
内容的提问来源于stack exchange,提问作者noobprogrammer
相关产品推荐
相关产品推荐

