探索MediaPipe自定义机器学习模型

MediaPipe支持人脸识别、目标检测、图像分类、人像分割、手势识别、文本分类、语音分类。每个模块都有对应的模型,但是原有模型可能比较大、推理耗时比较长,我们可以自定义模型来进行进行优化。

 

目录

一、训练准备

1、准备数据

1.1 原始数据

1.2 标注数据

2、简化模型

2.1 减少标签

2.2 剪裁边缘

2.3 模型复用

3、训练迭代

二、目标检测训练

1、准备安装包

2、准备数据集

3、加载数据集

4、训练模型

5、验证模型

6、导出模型


一、训练准备

1、准备数据

在自定义模型前,准备两种数据:原始数据、标注数据。

1.1 原始数据

找到足够多的数据去训练模型比较具有挑战性。首先,需要确认使用的图像或文本有没版权限制。为了避免版权问题,我们可以自己制作数据,也可以去Kaggle寻找数据集。有些dataset已经加了标注,有些则没有标注。

1.2 标注数据

我们可以用Label Studio来添加标注。支持3种形式安装:pip、Anaconda、docker。这里以pip安装为例:

# Requires Python >=3.7 <=3.9
pip install label-studio

# Start the server at http://localhost:8080
label-studio

2、简化模型

2.1 减少标签

选择2-5个类别给图像打标签,遵从简单原则。

2.2 剪裁边缘

样本图像尽可能保留完整轮廓。剩下一部分样本进行裁剪,这样利于提高模型的鲁棒性。

2.3 模型复用

由于MediaPipe Model Maker使用迁移学习,即复用原有模型,使用新数据来重新训练原来的模型。这样可以节省训练时间,节约模型数据。Model Maker可用于训练物体检测、手势检测、图像分类、音频分类的模型。通过删除数据分类的层级,然后使用新数据来重建,最终输出新模型,框架图如下:

大概需要100个样本,其中80%用于训练,10%用于测试,剩下10%用于验证。 

3、训练迭代

第一次训练的模型比较难达到理想效果。那么,我们需要花时间去选择合适样本,添加恰当标注,从而提升成功率。添加样本,或者修改样本,反复迭代训练,不断完善。

二、目标检测训练

1、准备安装包

安装mediepipe model maker:

pip install --upgrade pip
pip install mediapipe-model-maker

导入object detector包:

import os
import tensorflow as tf
assert tf.__version__.startswith('2')
from google.colab import files

from mediapipe_model_maker import object_detector

2、准备数据集

从官网下载数据集,以小狗动物为例:dog dataset

并且声明模型的训练路径、验证路径:

train_dataset_path = "dogs/train"
validation_dataset_path = "dogs/validate"

3、加载数据集

加载训练、验证的数据集:

train_data = object_detector.Dataset.from_pascal_voc_folder(
    'dogs copy/train',
    cache_dir="/tmp/od_data/train")

validate_data = object_detector.Dataset.from_pascal_voc_folder(
    'dogs copy/validate',
    cache_dir="/tmp/od_data/validatation")

4、训练模型

使用样本数据来训练TensorFlow模型,设置相关参数:

  • batch_size=8
  • learning_rate=0.3
  • epochs=50

根据参数选项、数据路径来创建模型:

hparams = object_detector.HParams(batch_size=8, learning_rate=0.3, epochs=50, export_dir='exported_model')
options = object_detector.ObjectDetectorOptions(
    supported_model=object_detector.SupportedModels.MOBILENET_V2,
    hparams=hparams)
model = object_detector.ObjectDetector.create(
    train_data=train_data,
    validation_data=validate_data,
    options=options)

5、验证模型

使用未用过的图像来验证模型:

loss, coco_metrics = model.evaluate(validate_data, batch_size=4)
print(f"Validation loss: {loss}")
print(f"Validation coco metrics: {coco_metrics}")

6、导出模型

以TensorFlow Lite的格式导出模型,然后下载下来:

model.export_model('dogs.tflite')
!ls exported_model
files.download('exported_model/dogs.tflite')
  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
引用\[1\]:训练好深度学习模型需要保证模型的性能与泛化能力,需要进行数据分析、模型结构分析和特征提取方式等工作。而训练深度学习模型只需要确保代码中的前向传播和反向传播流程正确。\[1\]引用\[2\]:深度学习模型有许多评价指标,如准确率、召回率、精确率、F1分数、AUC面积等。对于训练好的深度学习模型,关键指标是拟合效果和泛化能力。\[2\]引用\[3\]:在语义分割任务中,博主对比了多个模型,发现设计更精妙的模型拟合效果更好。同时,博主发现在相同体系下,参数越小的模型效果越好。总结来说,模型并非越复杂越好,需要测试不同体系下的模型才能展现效果。\[3\] 深度学习模型机器学习模型可以结合使用。深度学习模型通过多层神经网络进行特征提取和模式识别,可以处理大规模的复杂数据。而机器学习模型则可以用于对深度学习模型的输出进行进一步的分析和预测。例如,可以使用深度学习模型提取图像的特征,然后使用机器学习模型对这些特征进行分类或回归分析。这种结合可以充分发挥深度学习模型机器学习模型各自的优势,提高模型的性能和泛化能力。同时,还可以根据具体任务的需求选择合适的评价指标来评估模型的性能。 #### 引用[.reference_title] - *1* *2* *3* [该如何训练好深度学习模型?](https://blog.csdn.net/a486259/article/details/126145916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐福记456

您的鼓励和肯定是我创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值