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

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

3天内不再提示

Python的PyCoral迎来多项更新,为边缘AI注入更多精彩

Tensorflowers 来源:TensorFlow 作者: Carlos Mendonça,C 2020-11-26 09:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

冬天终于来了,而与之一起到来的是 Coral 新发布的 C++Python API 及工具,还有针对 Edge TPU 优化的新模型,以及对基于 TensorFlow 2.0 工作流的进一步支持。

C++
https://github.com/google-coral/libcoral

Python API
https://github.com/google-coral/pycoral

针对 Edge TPU 优化
https://coral.ai/models

Coral(https://coral.ai)是一个可用于构建本地 AI 产品的完整工具包。我们的设备端推理功能,以及借助 TensorFlow Lite 和 Edge TPU,支持您构建高效、私密、快速和离线的产品。

TensorFlow Lite 和 Edge TPU
https://coral.ai/technology

之前,我们提供了 Python 和 C++ 版本的 API,从而让开发者可以利用 Edge TPU 来提高推理速度。通过对机器学习模型进行离线处理的方式,可以大大节省带宽和云计算成本。同时这样做也可以使数据保留在本地,保护用户的隐私。最近,我们一直在努力重构我们的 API,使其更加模块化、重用性更强并拥有更好的性能。与此同时,我们还在减少不必要的 API 抽象,并开放开发者所熟悉的更多原生 TensorFlow Lite API。

因此,在最新的版本中,我们现在提供了两个独立的复用库,每个库都依托于强大的 TensorFlow Lite API 构建而成,并且在自己的存储库中各自独立,其分别是适用于 C++ 的 libcoral 和适用于 Python 的 PyCoral。

libcoral
https://github.com/google-coral/libcoral

Python 的PyCoral
https://github.com/google-coral/pycoral

libcoral (C++)

与我们之前的一些 API 不同,libcoral 并不会隐藏 tflite::Interpreter。相反,我们会将这个原生的 TensorFlow Lite 类打造成一个头等组件,并提供一些额外的辅助 API,以在您处理常见模型(例如分类和检测)时,帮您简化代码。

使用新的 libcoral 库在 C++ 中执行推理时,开发者通常应该遵循以下模式:

1. 使用 Edge TPU 上下文创建 tflite::Interpreter 实例并分配内存

为简化这一步骤,libcoral 提供了 MakeEdgeTpuInterpreter() 函数:

// Load the model auto model = coral::GetFlag(FLAGS_model_path)); // Get the Edge TPU context auto tpu_context = coral::ContainsEdgeTpuCustomOp(*model) ? coral::GetEdgeTpuContextOrDie() : nullptr; // Get the interpreter auto interpreter = coral::MakeEdgeTpuInterpreterOrDie( *model, tpu_context.get());

2. 配置 interpreter 的输入

3. 调用 interpreter:

interpreter->Invoke();

作为 Invoke() 的替代方案,您可以使用 InvokeWithMemBuffer() 和 InvokeWithDmaBuffer() 函数来实现更高的性能,这两个函数可以分别处理输入数据而无需从另一个内存区域或从DMA文件描述符进行复制。

4. 处理 interpreter 的输出

为简化这一步骤,libcoral 提供了一些适配器,所需的代码更少:

auto result = coral::GetClassificationResults( *interpreter, /* threshold= */0.0f, /*top_k=*/3);

上方是分类适配器的示例,开发者可以在其中指定最小置信度阈值,以及返回结果的数量上限。该 API 还具有一个检测适配器,该适配器拥有自己的结果过滤参数。

如需查看完整的示例应用源代码,请参阅 GitHub 上的 classify_image.cc,如需获取有关如何将 libcoral 集成到应用中的说明,请参考 GitHub 上的 README.md。

GitHub 上的 classify_image.cc
https://github.com/google-coral/libcoral/blob/master/coral/examples/classify_image.cc

GitHub 上的 README.md
https://github.com/google-coral/libcoral/blob/master/README.md

我们还在此次的新版本中带来了对设备端再训练的更新,能够在更新的 ImprintingEngine 上将 imprinting 函数与推理解耦。新的设计让 imprinting 引擎能够直接与 tflite::Interpreter 一起使用。

为方便寻找主机上可用的 Edge TPU,libcoral 支持诸如 "usb:0" 或 "pci:1" 之类的标签。您可借此更加轻松地管理多 Edge TPU 系统的资源。

最后,我们做了很多性能上的改进,例如更高效的内存使用和基于内存而不是基于文件的抽象。此外,通过将 Abseil(https://abseil.io/)库用于误差传播、通用接口和其他常见模式,API 的设计也更加一致,应该可以提供更一致和稳定的开发者体验。

PyCoral (Python)

新的 PyCoral 库(在新的 pycoral Python 模块中提供)遵循了 libcoral 引入的一些设计模式,并为我们的 C++ 和 Python API 带来了平衡。PyCoral 为分类和检测以及基于相同标签的 TPU 语义寻址设计了相同的 imprinting 解耦设计和模型适配器。

在 PyCoral 中,“运行推理”功能现在已完全委托给原生的 TensorFlow Lite 库,这是因为我们放弃了用于抽象 TensorFlow 解释器的模型“引擎”。借助这项更改,我们消除了由特定于 Coral 的 BasicEngine、ClassificationEngine 和 DetectionEngine 类(这些来自“Edge TPU Python 库”的 API 现已被弃用)所引入的代码重复。

要使用 PyCoral 执行推理,我们可以遵循与 libcoral 类似的模式:

1. 创建 interpreter:

interpreter = edgetpu.make_interpreter(model_file) interpreter.allocate_tensors()

2. 配置 interpreter 的输入:

common.set_input(interpreter, image)

3. 调用 interpreter:

interpreter.invoke()

4. 处理 interpreter 的输出:

classes = classify.get_classes(interpreter, top_k=3)

如需获取完整详细的示例代码,请查看我们的 Python 版文档 (https://coral.ai/docs/edgetpu/tflite-python/)。

Coral Model Garden 更新

在这一版本中,我们通过 MobileDet 进一步扩展了 Coral Model Garden。MobileDet 指的是使用 TensorFlow 对象检测 API 的轻量级单发检测器系列,该系列在 Edge TPU 上实现了最先进的精度和延迟权衡。与 MobileNet 系列模型相比,MobileDet 是一种低延迟的检测模型,具有更高的准确性。


查看 Coral 为 Edge TPU 提供的完整模型集合(https://coral.ai/models),其中包括分类、检测、分割和专门为设备端训练准备的模型。

将我们的整个工作流和模型集合迁移到 TensorFlow 2 是一项长期工作。从这个版本的 Coral 机器学习 API 开始,我们将引入对基于 TensorFlow 2 的工作流的支持。目前,MobileNet v1 (ImageNet)、MobileNet v2 (ImageNet)、MobileNet v3 (ImageNet)、ResNet50 v1 (ImageNet) 和 UNet MobileNet v2 (Oxford pets) 均支持使用 TensorFlow 2 进行训练和转换。

Model Pipelining

libcoral 和 PyCoral 都已将 Model Pipelining 功能从测试状态升级到正式使用状态。借助 Model Pipelining 功能,我们能够分割大型模型,然后将其分配到多个 Edge TPU 上,从而大大加快模型的运行速度。


请参考对应文档以查看该 API 的 C++ 和 Python 版本示例。

C++
https://coral.ai/docs/reference/cpp/pipeline/

Python
https://coral.ai/docs/reference/py/pycoral.pipeline/

我们会通过 Edge TPU 编译器完成模型分割,该编译器采用参数计数算法,可将模型分割成参数大小相近的片段。对于此算法无法提供所需吞吐量的情况,我们在这一版本中引入了一个新工具,该工具支持基于分析的算法,通过实际多次运行模型,然后根据观察到的延迟来划分片段,因此可能会得到更平衡的输出。


新的 profiling_partition 工具可以这样使用:

./profiling_partition --edgetpu_compiler_binary $PATH_TO_COMPILER --model_path $PATH_TO_MODEL --output_dir $OUT_DIR --num_segments $NUM_SEGMENTS

了解详情

如需了解有关上述 Coral API 的详细信息,请参阅以下文档:

使用 C++ 在 Edge TPU 上运行推理
https://coral.ai/docs/edgetpu/tflite-cpp/

使用 Python 在 Edge TPU 上运行推理
https://coral.ai/docs/edgetpu/tflite-python/

通过多个 Edge TPU 对模型进行流水设计
https://coral.ai/docs/edgetpu/pipeline/

在 Edge TPU 上执行迁移学习
https://coral.ai/docs/edgetpu/models-intro/#transfer-learning-on-device

Coral Model Garden
https://coral.ai/models

责任编辑:xj

原文标题:Coral 迎来多项更新,为边缘 AI 注入更多精彩!

文章出处:【微信公众号:TensorFlow】欢迎添加关注!文章转载请注明出处。

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

    关注

    89

    文章

    38121

    浏览量

    296676
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76714
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89588

原文标题:Coral 迎来多项更新,为边缘 AI 注入更多精彩!

文章出处:【微信号:tensorflowers,微信公众号:Tensorflowers】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工业视觉网关:RK3576赋能多路检测与边缘AI

    ~150ms6TOPS NPU 边缘AI推理易对接 MES / 追溯系统 一、产线痛点:从“人看”到“机判”的转变· 多工位/多角度同步:单机位覆盖不足,典型项目需 8~12 路并发,且画面时序一致性要求高
    发表于 10-16 17:56

    AI 边缘计算网关:开启智能新时代的钥匙​—龙兴物联

    ,这一过程常受网络延迟和不稳定的困扰。如今,借助 AI 边缘计算网关,数据处理任务下沉至网络边缘,在本地即可快速完成。以智能安防监控例,在大型商场中,众多监控摄像头采集的视频数据,通
    发表于 08-09 16:40

    怎么导出python边缘计算中的APP,想进行修改又找不到源码?

    怎么导出python边缘计算中的APP,想进行修改又找不到源码
    发表于 08-06 07:33

    贸泽电子2025边缘AI与机器学习技术创新论坛回顾(上)

    2025年,随着人工智能技术的快速发展,边缘AI与机器学习市场迎来飞速增长,据Gartner预计,2025年至2030年,边缘AI市场将保持
    的头像 发表于 07-21 11:08 990次阅读
    贸泽电子2025<b class='flag-5'>边缘</b><b class='flag-5'>AI</b>与机器学习技术创新论坛回顾(上)

    英特尔发布边缘AI控制器与边缘智算一体机,创造“AI新视界”

    处理器的边缘 AI 控制器 和 基于英特尔锐炫 ™ 显卡的边缘智算一体机 ,工业AI的规模化落地注入
    发表于 06-24 17:50 1391次阅读
    英特尔发布<b class='flag-5'>边缘</b><b class='flag-5'>AI</b>控制器与<b class='flag-5'>边缘</b>智算一体机,创造“<b class='flag-5'>AI</b>新视界”

    STM32F769是否可以部署边缘AI

    STM32F769是否可以部署边缘AI
    发表于 06-17 06:44

    边缘AI的优势和技术基石

    在万物皆可AI(人工智能)的今天,市场上几乎每家企业都在宣称自己的业务中有了AI成分。因此,将AI接入极靠近终端客户的网络边缘也就没什么悬念了。这里的
    的头像 发表于 06-12 10:14 1198次阅读
    <b class='flag-5'>边缘</b><b class='flag-5'>AI</b>的优势和技术基石

    索尼专业影像产品线迎来重要更新

    索尼专业影像产品线迎来重要更新,轻量化全媒体AI采集直播一体机PXW-Z200和轻量化行业新媒体AI一体机HXR-NX800两款摄录一体机产品即将于2025年6月18日发布V2.0版本
    的头像 发表于 06-11 16:17 847次阅读

    AI边缘计算网关_AI边缘智能网关赋能自助政务服务机_厦门计讯物联科技有限公司

    在数字化浪潮席卷全球的今天,政务服务智能化转型已成为提升治理效能、优化民生体验的关键举措。计讯物联凭借深耕物联网领域的技术积淀,其自主研发的AI边缘计算网关,以“边缘智能+政务终端”的创新融合,
    的头像 发表于 05-19 18:08 415次阅读
    <b class='flag-5'>AI</b><b class='flag-5'>边缘</b>计算网关_<b class='flag-5'>AI</b><b class='flag-5'>边缘</b>智能网关赋能自助政务服务机_厦门计讯物联科技有限公司

    GUI Guider1.9.1新版本8大新亮点总结 HMI开发注入新活力

    GUI Guider迎来了全新版本!这一次,我们带来了多项重磅更新,旨在为大家提供更强大、更便捷的开发体验。无论你是工业控制、智能家居,还是消费电子领域的开发者,这些更新都将为你的项目
    的头像 发表于 05-09 08:48 2461次阅读
    GUI Guider1.9.1新版本8大新亮点总结 <b class='flag-5'>为</b>HMI开发<b class='flag-5'>注入</b>新活力

    Deepseek海思SD3403边缘计算AI产品系统

    海思SD3403边缘计算AI框架,提供了一套开放式AI训练产品工具包,解决客户低成本AI系统,针对差异化AI 应用场景,自己采集样本数据,进
    发表于 04-28 11:05

    AI赋能边缘网关:开启智能时代的新蓝海

    功耗的AI边缘计算平台;对于算法企业,要研发更轻量化、更精准的边缘AI模型;对于系统集成商,则要构建完整的边缘智能解决方案。这个万亿级的新市
    发表于 02-15 11:41

    【新品体验】幸狐Omni3576边缘计算套件免费试用

    作为扩展板,通过丰富的接口扩展与无线通讯支持,进一步增强了系统的应用范围。该核心板支持8GB大内存,适用于多种应用领域,包括AI边缘计算等。了解更多>>
    发表于 01-21 14:51

    英飞凌发布边缘AI软件新品牌DEEPCRAFT™

    和机器学习软件解决方案的新品牌——DEEPCRAFT™。这一品牌的推出,标志着英飞凌对边缘AI市场潜力的深刻洞察,以及对客户提供优质边缘AI
    的头像 发表于 12-18 14:03 1005次阅读

    华泰证券:豆包AI取得多项进展

    近日,华泰证券最新研报指出,豆包AI近期迎来多项关键性突破,值得投资者关注。这些突破主要集中在AIDC(人工智能数据中心)、端侧AI以及光模块等领域。 豆包
    的头像 发表于 12-17 14:24 1269次阅读