TensorFlow分类类别数量限制及6类图像分类显示异常咨询
解决TensorFlow图像分类中label_image仅显示5类的问题
这问题我之前碰到过好几次,大概率是这几个点没注意到,给你一步步排查解决:
1. 先检查label_image的默认显示限制(最常见的坑)
默认的label_image.py脚本只会输出置信度最高的前5个预测结果,不是模型只能识别5类!你只要在运行脚本时手动指定显示全部6个类别就行:
python label_image.py --num_top_predictions 6 --image=你的测试图片路径 --graph=retrain生成的模型路径 --labels=retrain生成的labels.txt路径
Windows环境下把路径换成你本地的实际路径即可,比如--image=tf_files/pressure_ulcers/Deep_Tissue/test.jpg这种。
2. 确认retrain生成的labels.txt包含全部6类
找到retrain脚本生成的labels.txt文件(如果没指定--output_labels参数,默认在训练输出的目录里,比如tf_files/training_summaries下的子目录),打开数一下行数是不是6行,对应你的6个类别:Deep_Tissue、Stage_1、Stage_2、Stage_3、Stage_4、Unstageable。
- 如果这里只有5行,说明retrain时跳过了一个类别,大概率是这个类别的图片数量低于retrain的默认阈值(默认每个类别至少10张图)。你可以检查对应类别的图片数量,或者在retrain时加参数放宽限制:
把python retrain.py --minimum_images_per_class 1 --image_dir=tf_files/pressure_ulcers1改成你需要的最小数量,确保6个类别都被纳入训练。
3. 验证retrain的训练日志
回头看retrain时的终端输出,找类似这样的日志行:
Found X images belonging to 6 classes.
如果这里显示的是5 classes,那说明retrain确实没识别到第6个类别,可能是:
- 那个类别目录里没有有效图片(比如都是损坏的、TensorFlow不支持的格式,比如WebP);
- 目录路径写错了,或者目录名有特殊字符(不过你换组合测试过,这个可能性低)。
你可以手动打开对应目录,检查图片能不能正常打开,格式是不是JPG/PNG这类支持的格式。
4. 检查label_image的代码逻辑(兜底方案)
如果上面的方法都没用,打开label_image.py看看有没有限制输出数量的代码,比如:
num_top_predictions = args.num_top_predictions or 5
如果有,要么运行时加--num_top_predictions 6参数覆盖,要么直接把默认值5改成6,保存后再运行脚本。
按这个顺序排查,基本能解决问题,我之前帮同事处理过几乎一样的情况,就是label_image默认只显示前5个,改个参数就搞定了。
内容的提问来源于stack exchange,提问作者Farhad Dalvi
相关产品推荐
相关产品推荐

