You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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即可,示例代码:
    # 训练时的相关代码,直接输出类别映射
    print(train_generator.class_indices)
    # 输出示例:{'猫':0, '狗':1, '鸟':2}
    
    按照索引从小到大的顺序,每个类别名占一行写入label.txt即可,上述示例对应的label.txt内容为:
    猫
    狗
    鸟
    
  • 方式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库可以快速给模型写入元数据,步骤如下:

  1. 先安装依赖库:
    pip install tflite-support
    
  2. 运行元数据写入代码,注意输入归一化参数必须和你训练时的图片预处理逻辑完全一致:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:45:03