0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在移动设备上训练和部署自定义目标检测模型

硬件三人行 来源:TensorFlow 作者: Khanh LeVie 2021-08-16 17:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

发布人:技术推广工程师 Khanh LeViet,代表 TensorFlow Lite 团队

在今年的 Google I/O 大会上,我们很高兴地宣布推出了多项产品更新。这些更新可以帮助简化移动设备上,目标检测模型的训练和部署的过程:

设备端 ML 学习路径:关于如何在移动设备上,训练和部署自定义目标检测模型的分步教程,无需机器学习专业知识。

设备端 ML 学习路径

https://developers.google.com/learn/pathways/going-further-object-detection

EfficientDet-Lite:针对移动设备优化的精尖目标检测模型架构。

EfficientDet-Lite

https://hub.tensorflow.google.cn/s?deployment-format=lite&q=efficientdet-lite

用于目标检测的 TensorFlow Lite Model Maker:只需几行代码即可训练自定义模型

目标检测

http://tensorflow.google.cn/lite/tutorials/model_maker_object_detection

TensorFlow Lite Metadata Writer API:简化元数据创建以生成与 TFLite Task Library 兼容的自定义目标检测模型。

Metadata Writer API

http://tensorflow.google.cn/lite/convert/metadata_writer_tutorial

TFLite Task Library

http://tensorflow.google.cn/lite/inference_with_metadata/task_library/object_detector

尽管目标检测是非常常见的 ML 用例,但可能也是最难执行的用例之一。我们一直致力于为您简化相关操作。在这篇文章中,我们将向您介绍如何利用 TensorFlow Lite 的最新产品、通过使用您自己的训练数据构建最先进的移动端目标检测。

设备端 ML 学习路径:

在 12 分钟内了解如何训练和部署自定义 TensorFlow Lite 目标检测模型

有了 TensorFlow Lite,训练自定义目标检测模型并将其部署到 Android 应用变得非常容易。我们已经发布了学习路径,可指导您按步骤顺利完成相关操作。

您可以通过视频了解构建自定义目标检测器的具体步骤:

1. 准备训练数据。

2. 使用 TensorFlow Lite Model Maker 训练自定义目标检测模型。

3. 使用 TensorFlow Lite Task Library 在您的移动应用上部署模型。

我们还在 GitHub 上提供了带有源代码的 Codelab,供您自行试运行代码。请尝试一下,并告诉我们您的反馈!

Codelab

https://codelabs.developers.google.com/tflite-object-detection-android

告诉我们

https://github.com/googlecodelabs/odml-pathways/issues

EfficientDet-Lite:

移动端设备目标检测最优模型架构之一

在移动设备上运行机器学习模型意味着我们始终需要在模型精度、推理速度和模型大小之间进行权衡。最优的移动端模型不仅需要更加精准,还需要更快地运行速度和更小的体积。我们采用了 EfficientDet 论文中发布的神经架构搜索技术,并优化了在移动设备上运行的模型架构,最终推出了名为 EfficientDet-Lite 的新型移动设备目标检测模型系列。

EfficientDet

https://arxiv.org/abs/1911.09070

EfficientDet-Lite 有 5 个不同的版本:从 Lite0 到 Lite4。较小的版本运行速度更快,而较大的版本精度更高。您可以先用多个版本的 EfficientNet-Lite 进行试验,然后选择最适合您用例的版本。

* 整型量化模型的大小

** 在 Pixel 4 上使用 4 个 CPU 线程测量得出的延迟时间

*** 平均精度是 COCO 2017 验证数据集上的 mAP(平均精度均值)

我们已将在 COCO 数据集上训练的 EfficientDet-Lite 模型发布到 TensorFlow Hub。您还可以使用自己的训练数据,通过 TensorFlow Lite Model Maker 训练 EfficientDet-Lite 自定义模型。

TensorFlow Hub

https://hub.tensorflow.google.cn/s?q=efficientdet/lite

TensorFlow Lite Model Maker:几行代码使用迁移学习训练自定义目标检测模型

TensorFlow Lite Model Maker 是 Python 库,可显著简化使用自定义数据集训练机器学习模型的过程。该库利用迁移学习,仅使用少量图像即可训练高质量模型。

TensorFlow Lite Model Maker

http://tensorflow.google.cn/lite/guide/model_maker

Model Maker 接受 PASCAL VOC 格式和 Cloud AutoML 的 CSV 格式的数据集。和使用 LabelImg 或 makesense.ai 等开源 GUI 工具创建自己的数据集一样,每位开发者都可以创建用于 Model Maker 的训练数据,且无需编写任何代码。

CSV

https://cloud.google.com/vision/automl/object-detection/docs/csv-format

LabelImg

https://github.com/tzutalin/labelImg

makesense.ai

https://github.com/SkalskiP/make-sense

获得训练数据后,您就可以开始训练自定义的 TensorFlow Lite 目标检测模型了。

# Step 1: Choose the model architecture

spec = model_spec.get(‘efficientdet_lite2’)

# Step 2: Load your training data

train_data, validation_data, test_data = object_detector.DataLoader.from_csv(‘gs://cloud-ml-data/img/openimage/csv/salads_ml_use.csv’)

# Step 3: Train a custom object detector

model = object_detector.create(train_data, model_spec=spec, validation_data=validation_data)

# Step 4: Export the model in the TensorFlow Lite format

model.export(export_dir=‘。’)

# Step 5: Evaluate the TensorFlow Lite model

model.evaluate_tflite(‘model.tflite’, test_data)

查看此 Codelab 了解详情。

Codelab

http://tensorflow.google.cn/lite/tutorials/model_maker_object_detection

TensorFlow Lite Task Library:使用几行代码在移动设备上部署目标检测模型

TensorFlow Lite Task Library 是跨平台库,它简化了 TensorFlow Lite 模型在移动设备上的部署。使用 TensorFlow Lite Model Maker 训练的自定义目标检测模型只需使用几行 Kotlin 代码即可部署到 Android 应用:

// Step 1: Load the TensorFlow Lite model

val detector = ObjectDetector.createFromFile(context, “model.tflite”)

// Step 2: Convert the input Bitmap into a TensorFlow Lite‘s TensorImage object

val image = TensorImage.fromBitmap(bitmap)

// Step 3: Feed given image to the model and get the detection result

val results = detector.detect(image)

您可参阅一下文档,了解有关 Task Library 中,包括如何配置最小检测阈值或最大检测对象数量等更多自定义选项信息。

文档

https://tensorflow.google.cn/lite/inference_with_metadata/task_library/object_detector

TensorFlow Lite Metadata Writer API:

用于简化使用 TensorFlow Object Detection API 训练的自定义模型的部署

Task Library 依赖 TensorFlow Lite 模型中捆绑的模型元数据来执行必要的预处理和后处理逻辑,以便使用该模型来运行推理。这其中包括如何将输入图像归一化,或如何将类 ID 映射到可人工读取的标签。因为使用 Model Maker 训练的模型会默认包含此类元数据,所以它能够与 Task Library 兼容。但是,如果您使用除 Model Maker 以外的训练流水线,来训练 TensorFlow Lite 目标检测,则可以使用 TensorFlow Lite Metadata Writer API 来添加元数据。

模型元数据

https://tensorflow.google.cn/lite/convert/metadata

例如,如果您使用 TensorFlow Object Detection API 来训练模型,则可以使用以下 Python 代码将元数据添加到 TensorFlow Lite 模型:

LABEL_PATH = ’label_map.txt‘

MODEL_PATH = “ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/model.tflite”

SAVE_TO_PATH = “ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8/model_with_metadata.tflite”# Step 1: Specify the preprocessing parameters and label file

writer = object_detector.MetadataWriter.create_for_inference(

writer_utils.load_file(MODEL_PATH), input_norm_mean=[0],

input_norm_std=[255], label_file_paths=[LABEL_PATH])

# Step 2: Export the model with metadata

writer_utils.save_file(writer.populate(), SAVE_TO_PATH)

在示例中,我们指定归一化参数 (input_norm_mean=[0], input_norm_std=[255]) ,以便将输入图像归一化到 [0..1] 范围内。您需要指定与模型训练期间使用的预处理逻辑中相同的归一化参数。

归一化

http://tensorflow.google.cn/lite/convert/metadata#normalization_and_quantization_parameters

参阅此 Colab,获取有关如何将使用 TensorFlow Object Detection API 训练的模型转换为 TensorFlow Lite 模型并添加元数据的完整教程。

Colab

https://colab.research.google.com/github/tensorflow/models/blob/master/research/object_detection/colab_tutorials/convert_odt_model_to_TFLite.ipynb

未来计划

我们的目标是让每位开发者(无论是否具备机器学习专业知识)都能更轻松使用机器学习。目前,我们正在与 TF Model Garden 团队合作,希望推出更多适用于 Model Maker 的目标检测模型架构。

未来,我们还将继续与 Google 研究人员合作,通过 Model Maker 提供更多面向未来的更优秀的目标检测模型,缩短从前沿研究到投入实际应用并且供所有开发者使用的整个流程。敬请关注更多动态!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Google
    +关注

    关注

    5

    文章

    1820

    浏览量

    60733
  • ML
    ML
    +关注

    关注

    0

    文章

    154

    浏览量

    35566
  • 目标检测
    +关注

    关注

    0

    文章

    235

    浏览量

    16571
  • GitHub
    +关注

    关注

    3

    文章

    489

    浏览量

    18820

原文标题:使用 TensorFlow Lite 简化移动端目标检测

文章出处:【微信号:yingjiansanrenxing,微信公众号:硬件三人行】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Firefly-RK1828 赋能视频大模型:多目标+全场景,引领智能分析新风向

    问题。针对这一问题,我们基于FireflyRK1828开发套件,搭载南京锐景专属视频分析算法,以视频大模型为核心,实现「多目标检测+全场景适配」,可自定义各种问题,适应
    的头像 发表于 04-15 16:35 1399次阅读
    Firefly-RK1828 赋能视频大<b class='flag-5'>模型</b>:多<b class='flag-5'>目标</b>+全场景,引领智能分析新风向

    使用Python/MyHDL创建自定义FPGA IP

    使用 Python/MyHDL 创建自定义 FPGA IP,与 Vivado 集成,并通过 PYNQ 进行控制——实现软件的简单硬件设计。
    的头像 发表于 04-09 09:53 530次阅读
    使用Python/MyHDL创建<b class='flag-5'>自定义</b>FPGA IP

    MCUXpresso SDK创建自定义清单

    概述 MCUXpresso SDK 24.12 介绍塞德恩汉CED支持自定义清单,使开发人员能够精确定义其工作区中包含哪些组件、驱动程序、中间件和板支持包。此功能在极简主义、可重复性和 CI/CD
    发表于 04-07 07:11

    极海APM32F427如何实现自定义USB HID设备与PC进行通信

    最近需要使用到 APM32F427 枚举成Custom HID设备进行用户自定义通信,但是官方的例程只有提供的HID枚举为鼠标或者键盘类型的设备。这里记录一下,怎么使用Geehy官方的USB中间件,实现
    的头像 发表于 03-30 09:30 2930次阅读
    极海APM32F427如何实现<b class='flag-5'>自定义</b>USB HID<b class='flag-5'>设备</b>与PC进行通信

    如何训练自己的AI模型——RT-Thread×富瀚微FH8626V300L模型训练部署教程 | 技术集结

    面对消费电子中纷繁的智能检测需求,如何让算法持续进化?富瀚微最新发布的FH86X6V300芯片AI训练教程,以FH8626V300L为硬件核心,手把手带您走通从模型训练到端侧
    的头像 发表于 02-09 11:51 794次阅读
    如何<b class='flag-5'>训练</b>自己的AI<b class='flag-5'>模型</b>——RT-Thread×富瀚微FH8626V300L<b class='flag-5'>模型</b><b class='flag-5'>训练</b><b class='flag-5'>部署</b>教程 | 技术集结

    电能质量在线监测装置的自定义监测时段功能与离线监测有什么区别?

    电能质量在线监测装置的 自定义监测时段功能 与 离线监测 是两个不同维度的功能,核心区别在于 设计目标、网络依赖、数据流转方式 及 应用场景 ,具体差异可从以下多维度展开: 一、核心定义与设计
    的头像 发表于 12-10 14:00 720次阅读
    电能质量在线监测装置的<b class='flag-5'>自定义</b>监测时段功能与离线监测有什么区别?

    无图形界面模式下自定义检查工具的应用

    此前文章已介绍 ANSA 中的自定义检查工具。本文将探讨该功能在无图形界面(No-GUI)模式下的应用,旨在满足标准化工作流程的需求,适用于需要高度自动化的前处理场景。通过集成自定义检查,用户可实现工作流程的高效自动化运行。
    的头像 发表于 11-30 14:13 867次阅读
    无图形界面模式下<b class='flag-5'>自定义</b>检查工具的应用

    AMD利用可重构FPGA设备Moku实现自定义激光探测解决方案

    摘要本文介绍了AdvancedMicroDevices,AMD公司如何基于可重构FPGA设备自定义激光探测解决方案,替代传统的仪器配置,通过灵活且可定制的FPGA设备Moku提供更高效和灵活的激光
    的头像 发表于 11-20 17:28 1995次阅读
    AMD利用可重构FPGA<b class='flag-5'>设备</b>Moku实现<b class='flag-5'>自定义</b>激光探测解决方案

    强实时运动控制内核MotionRT750(九):内置C语言的自定义机械手模型实现

    内置C语言的自定义机械手模型实现。
    的头像 发表于 10-27 14:14 1045次阅读
    强实时运动控制内核MotionRT750(九):内置C语言的<b class='flag-5'>自定义</b>机械手<b class='flag-5'>模型</b>实现

    何在e203 SOC中添加自定义外设

    何在E203 中添加自定义的外设,困扰已久,以下是一个从别处借鉴而来的方法: 1、设计好自定义外设的RTL后,在其中添加ICB总线的握手协议和读写寄存器。 2、设计一个对外接口,用来设定
    发表于 10-20 10:38

    请问K210可以同时加载几个自定义模型

    K210可以同时加载几个自定义模型
    发表于 07-18 06:20

    大彩讲堂:VisualTFT软件如何自定义圆形进度条

    VisualTFT软件如何自定义圆形进度条
    的头像 发表于 07-07 17:10 2093次阅读
    大彩讲堂:VisualTFT软件如何<b class='flag-5'>自定义</b>圆形进度条

    完整指南:如何使用树莓派5、Hailo AI Hat、YOLO、Docker进行自定义数据集训练

    今天,我将展示如何使用令人印象深刻的HailoAIHat在树莓派5训练、编译和部署自定义模型。注意:文章内的链接可能需要科学上网。Hail
    的头像 发表于 06-28 08:23 5154次阅读
    完整指南:如何使用树莓派5、Hailo AI Hat、YOLO、Docker进行<b class='flag-5'>自定义</b>数据集<b class='flag-5'>训练</b>?

    KiCad 中的自定义规则(KiCon 演讲)

    设计规则 展开,重点探讨了 那些复杂却强大的特性。 由于这些规则本质是基于文本表达的,需要用户细致入微的理解。演讲的 核心目标 是引导用户有效实施这些规则,从而 规避布线问题、提升制造良率,并优化设计流程 。 讨论 始于对自定义
    的头像 发表于 06-16 11:17 2767次阅读
    KiCad 中的<b class='flag-5'>自定义</b>规则(KiCon 演讲)

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘可以
    的头像 发表于 06-05 14:19 2773次阅读