Conda下用Keras生成的tflite无元数据,如何生成多分类label.txt绑定模型?
多分类TFLite模型label文件生成与元数据添加方案
1. 生成对应类别顺序的label.txt
你生成的label.txt必须和训练时模型输出层的类别顺序完全一致,否则预测结果会和类别完全错位,可通过以下两种方式生成:
- 方式1:从训练时的Keras数据生成器中直接导出(最准确)
如果你训练时用的是tf.keras.preprocessing.image.ImageDataGenerator.flow_from_directory或者tf.keras.utils.image_dataset_from_directory加载数据集,直接调用生成器的class_indices属性即可得到类别与索引的对应关系,按索引从小到大排列类别名写入label.txt即可,示例代码:
按照索引从小到大的顺序,每个类别名占一行写入label.txt即可,上述示例对应的label.txt内容为:# 训练时的相关代码,直接输出类别映射 print(train_generator.class_indices) # 输出示例:{'猫':0, '狗':1, '鸟':2}猫 狗 鸟 - 方式2:从训练集文件夹结构生成(适用于未保存class_indices的场景)
Keras默认会按训练集根目录下子文件夹的字母升序分配类别索引,你可以用以下代码直接生成匹配默认逻辑的label.txt:
注意:如果你训练时手动指定了import os # 替换为你训练时用的训练集根目录路径 train_root_path = "./dataset/train" # 过滤隐藏文件夹,按字母升序排列得到类别列表 class_list = sorted([d for d in os.listdir(train_root_path) if os.path.isdir(os.path.join(train_root_path, d)) and not d.startswith('.')]) # 写入label.txt with open("label.txt", "w", encoding="utf-8") as f: for class_name in class_list: f.write(f"{class_name}\n")classes参数修改了类别顺序,该方式不适用,必须按你当时指定的classes列表顺序写入label.txt
2. 给TFLite模型添加包含label映射的元数据
使用TensorFlow Lite Support库可以快速给模型写入元数据,步骤如下:
- 先安装依赖库:
pip install tflite-support - 运行元数据写入代码,注意输入归一化参数必须和你训练时的图片预处理逻辑完全一致:
from tflite_support.metadata_writers import image_classifier from tflite_support.metadata_writers import writer_utils # 替换为你的本地文件路径 ORIGIN_MODEL_PATH = "./model.tflite" OUTPUT_MODEL_PATH = "./model_with_metadata.tflite" LABEL_FILE_PATH = "./label.txt" # 示例为训练时把0-255的像素值归一化到0-1的参数配置 # 如果训练时归一化到[-1,1],则修改为 input_norm_mean=[127.5], input_norm_std=[127.5] writer = image_classifier.MetadataWriter.create_for_inference( writer_utils.load_file(ORIGIN_MODEL_PATH), input_norm_mean=[0.0], input_norm_std=[255.0], label_file_paths=[LABEL_FILE_PATH] ) # 保存带元数据的模型 writer_utils.save_file(writer.populate(), OUTPUT_MODEL_PATH)
3. 部署验证
生成的model_with_metadata.tflite可以直接导入Android Studio使用,你可以通过Android Studio自带的TensorFlow Lite Inspector打开该模型,确认元数据中已经显示对应的类别标签,Android端集成TensorFlow Lite Support库后可以自动读取标签,无需额外手动做索引到类别的映射。
内容的提问来源于stack exchange,提问作者brian
相关产品推荐
相关产品推荐

