拓冰建站拓冰建站
首页 / 资讯中心 / 正文

MediaPipe Model Maker 图像分类实战:从数据到 TFLite 模型的 5 步完整教程

MediaPipe Model Maker 图像分类实战从数据到 TFLite 模型的 5 步完整教程【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipeMediaPipe Model Maker 是 MediaPipe 里的模型制作工具能把你的图像数据集一条龙变成可部署的 TFLite 模型自动读取目录结构、完成预处理与数据增强、训练、评估、导出全程一个 Python 脚本就能跑完。这篇教程带你走完「环境安装 → 数据集组织 → 训练 → 导出」的完整链路每步都给出可直接照抄的命令。1. 动手前的准备版本、依赖与数据集清单这一步解决开工前到底要装什么、数据长什么样的问题。1.1 环境要求与安装步骤Model Maker 随 mediapipe 的 Python 包一起分发不需要编译 C 框架。按下面两步装好即可组件要求说明Python3.8 及以上3.7 及更老版本不支持OpenCV3.x ~ 4.1训练过程读取图像帧用到mediapipe最新版含 model_maker 子包# 需要看源码时再克隆git clone 地址 # https://gitcode.com/GitHub_Trending/med/mediapipe pip install mediapipe装完后跑一句import mediapipe.model_maker.python.vision.image_classifier不报错就说明依赖齐了。1.2 数据集目录规范这一步解决图片怎么摆才能被自动识别的问题。Dataset.from_folder的规则很简单每个一级子文件夹就是一个类别图片直接放在文件夹里。flower_photos/ ├── daisy/ # 每文件夹 一个类别 ├── dandelion/ ├── roses/ ├── sunflowers/ └── tulips/三条采集建议每类尽量 50 张以上、光照和角度尽量多样、单张分辨率不低于 256×256。类别数量不用多5 类以内就能把整个流程跑通。2. 核心流程加载、训练、评估、导出四步走这一步解决从图片文件夹到一个 .tflite 文件的主链路问题。第 1 步加载数据集并划分训练集Dataset.from_folder会把根目录下所有子文件夹读进来标签按文件夹名排序所以目录名就是最终标签不要用中文或带空格的名字。from mediapipe.model_maker.python.vision import image_classifier data image_classifier.Dataset.from_folder(flower_photos) # 自动读子目录 train_data, rest data.split(0.8) # 80% 训练 validation_data, test_data rest.split(0.5) # 剩余对半分验证 / 测试第 2 步训练模型这一步解决用哪个底座模型、产物放哪的问题。ImageClassifier.create训练时会自动做数据增强、按 cosine 策略衰减学习率并每轮保存 checkpoint。options image_classifier.ImageClassifierOptions( supported_modelimage_classifier.SupportedModels.EFFICIENTNET_LITE0, hparamsimage_classifier.HParams(export_direxport)) # 产物目录 model image_classifier.ImageClassifier.create( train_datatrain_data, validation_datavalidation_data, optionsoptions)训练中断了也没关系再次运行create时它会自动从export/checkpoint恢复权重继续训练。第 3 步评估 导出 TFLite这一步解决模型行不行、产物怎么落地的问题。_, acc model.evaluate(test_data) # 第二个返回值是测试集准确率 print(Test accuracy: %f % acc) model.export_model() # 输出 export/model.tflite metadata.jsonexport_model不只转换模型还会把预处理参数和标签列表写进 TFLite 的 metadata这样 MediaPipe Tasks 加载时就不需要你手写标签映射。3. 进阶技巧骨架选择、调参与压缩这一步解决默认效果不够好时往哪里使劲的问题。3.1 选对模型骨架可选骨架在SupportedModels枚举里定义本质是精度和体积的取舍骨架输入尺寸归一化适合场景MOBILENET_V2224×2240/255移动端速度优先EFFICIENTNET_LITE0224×2240/255通用默认选择EFFICIENTNET_LITE2260×2600/255精度更高体积更大EFFICIENTNET_LITE4300×3000/255精度最高推理最慢MOBILENET_V2_KERAS224×224127.5/128纯 Keras 实现便于二次修改3.2 调整训练超参数HParams的默认值可以直接参考仓库中的hyperparameters.py学习率 0.001、batch 2、10 个 epoch、L2 正则 0.0001、label smoothing 0.1且默认开启随机裁剪和翻转等数据增强do_data_augmentationTrue。小数据集调参的顺序建议先把 epoch 加到 20~30再看是否要开do_fine_tuning微调底座最后才动学习率。3.3 导出时量化压缩from mediapipe.model_maker.python.core.utils import quantization model.export_model(quantization_config quantization.QuantizationConfig.for_dynamic()) # 也可选 int8 / float16dynamic 量化无需校准数据最省事int8 体积更小但需要用有代表性的样本做校准float16 精度损失可能最大。量化会小幅牺牲准确率换来更小的模型文件和更快的推理速度。另外如果你的任务是框出物体而不是给整图分类可以改用同一目录下的object_detector模块它直接吃 Pascal VOC 格式的 XML 标注仓库 testdata 里就有标注和图像样例还有gesture_recognizer、text_classifier等模块可以按同样思路套用。4. 避坑指南这 5 个坑最容易被踩到这一步解决报错或效果不对时先查什么的问题。1. 加载时抛Image size is zero现象from_folder直接报错。原因它只读根目录 → 一级子文件夹这一层图片散在根目录或嵌套太深都算 0 张。解法按 1.2 节的目录结构重排保证每张图片都在某个类别文件夹的第一层。2. 换了骨架后报尺寸或归一化不匹配现象模型输入报 shape 错误。原因lite0/lite2 要 224×224lite2/lite4 要 260×260/300×300归一化参数也不同。解法不要手改输入尺寸选对SupportedModels后这些参数由model_spec自动带入。3. 复跑训练时指标突然变差现象同样的数据这次结果明显不如上次。原因export_dir里残留上次的 checkpointcreate会直接续训旧权重。解法正式重训前清空 export 目录或换一个目录避免新旧权重混在一起。4. 小类别几乎不被识别现象验证集整体准确率还行但样本少的类总是漏判。原因类别不均衡损失被大类主导。解法优先补采该类的图片到每类 50 张以上短期可加大batch_size、多跑几个 epoch 观察是否缓解。5. int8 量化后准确率掉得厉害现象float 模型 90%int8 掉到 85% 以下。原因校准集不够有代表性量化误差被放大。解法先用for_dynamic()对比确认是量化本身的问题再换一批覆盖各类、各光照的样本做 int8 校准。5. 快速回顾照着这张清单过一遍pip install mediapipePython ≥ 3.8OpenCV 3.x~4.1数据集按一个子文件夹 一个类别摆好标签名用英文Dataset.from_folder加载split(0.8)再split(0.5)划分三集ImageClassifier.create训练export_dir指定产物目录evaluate看测试集准确率export_model产出 .tflite metadata.json下一步建议拿导出的 TFLite 去 MediaPipe Tasks 里跑一次推理验证试一下object_detector做检测任务或者用仓库自带的 image_classifier demo 脚本image_classifier_demo.py对照本文检查自己的参数。如果这篇教程帮你跑通了第一个模型点个收藏后续继续更新 MediaPipe 实操系列。【免费下载链接】mediapipeCross-platform, customizable ML solutions for live and streaming media.项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门