在测试模型时想在每张图片上显示出置信度,网上一些帖子用的版本和我用的版本不一致,改的内容也不一样,记录下来做个参考。
要修改的文件是 darknet/src/ 下的 image.c
要修改的是draw_detections函数,添加4行代码,具体修改如下
void draw_detections(image im, detection *dets, int num, float thresh, char **names, image **alphabet, int classes)
{
int i,j;
for(i = 0; i < num; ++i){
char labelstr[4096] = {0};
int class = -1;
char possible[10];//此处修改,添加一行,存放检测的置信值
for(j = 0; j < classes; ++j){
sprintf(possible," (%.0f%%)",dets[i].prob[j]*100); //此处修改,添加一行
char res[20]={0};
if (dets[i].prob[j] > thresh){
if (class < 0) {
strcat(labelstr, names[j]);
strcat(labelstr, possible); //此处修改,添加一行
class = j;
} else {
strcat(labelstr, ", ");
strcat(labelstr, names[j]);
strcat(labelstr, possible); //此处修改,添加一行
}
/*sprintf(res,"%.2f",dets[i].prob[j]*100);
strcat(labelstr,":");
strcat(labelstr,res);
strcat(labelstr,"%");
*/
printf("%s: %.0f%%\n", names[j], dets[i].prob[j]*100);
}
}
参考文档:https://blog.csdn.net/MichalCong/article/details/91050167 以及下方评论