想在边缘运行计算机视觉程序?先来迎接挑战!

作者 | alwaysAI
翻译 | 火火酱~,责编 | 晋兆雨
出品 | CSDN云计算
头图 | 付费下载于视觉中国

 

人工智能可以让计算机聪明地行动,并且在真实环境中快速做出决策,同时收获相对理想的效果。

当然,这个概括性的定义较为宽泛和模糊,而且涉及多个领域,计算机视觉便是其中的典型例子。在计算机视觉领域中,计算机可以像人类一样处理图像,并对图像内容进行推断,之后计算机程序便可以利用这些信息做出最有利的决策。

如今,将计算机视觉等人工智能应用程序集成到新的商业模式和产品中的情况越来越常见。计算机视觉在现实世界中的应用十分广泛:分析交通模式、检测行为变化、统计地区的人数,等等。

无论是构建哪种计算机视觉应用,其学习过程都要经历一段十分陡峭的学习曲线,而且将其部署到边缘则需要更为复杂的操作。

虽然近年来在云中部署和运行应用程序变得愈加流行,但这并不总是最好的解决方案——特别是对于需要大量处理或使用敏感数据的应用程序来说,而这两种情况在计算机视觉应用程序中非常常见。

在这种情况下,最好的选择往往是将应用程序部署到边缘中。在边缘中部署计算机视觉应用程序的好处非常多,我们将在下文中详细介绍。同时,我们也将讨论在边缘中运行计算机视觉时要面临的挑战,以及如何克服它们。

“边缘”是什么

一般来说,边缘设备都是小型、轻量级的设备,可以在其上部署和运行计算机视觉应用程序。如今,许多边缘设备甚至具有图形处理单元(Graphical Processing Unit,GPU)或视觉处理单元(Visual Processing Unit,VPU),这使其能适用于更多的模型和更复杂的应用程序。

本文中的边缘设备是指Raspberry Pi、Jetson Nano 或NVIDIA Jetson Xavier NX等NVIDIA Jetson 设备或各种物联网(Internet of Things,IoT)设备,这些边缘设备具有一定的感知或评估能力,且能实现与使用环境间的交互。

在边缘运行计算机视觉的好处

在边缘运行计算机视觉应用程序有三大好处:时间、安全和成本。

1. 减少延迟

虽然可以使用互联网连接来部署应用程序,但一旦应用在边缘设备上部署完成后,云端链接就无用武之地了。这意味着,应用程序可以在边缘设备上(而不是云端)完成所有推断,进而大大减少了应用程序将推断转化为操作所花费的时间。这一优势对于某些用例而言是必不可少的,如自动驾驶汽车或安全摄像头。在云端接收和发送数据可能会存在数据丢失的风险,此外,云端所需的额外时间可能意味着无法及时响应任务,这对于自动驾驶等任务来说,或许会带来灾难性的后果。

此外,一些特殊的外围设备(例如摄像头)本身没有互联网连接,边缘设备借助它们来提高性能或扩展应用程序功能。此类设备对边缘处理概念的应用更加出神入化:它们不是通过USB将图像数据传输到边缘设备进行处理,而是将处理器集成到摄像机本身,进一步减少处理延迟。

2. 提升安全性

其次,有了边缘部署,便不再需要将数据传输到云端,所有数据都可以留在设备本身的封闭电路中。边缘计算将暴露风险分散到多个设备上,并且可以在不连接中央服务器的情况下完成所有处理——这种架构更为安全和私密。例如,安装在家里的边缘设备可以处理实时数据,且不需要依赖可能损害人们日常活动隐私的共享云服务。由于计算机视觉数据可能会涉及私人或其他敏感数据,因此使用边缘计算会更加安全。

3. 降低成本

最后,由于不需要云处理,在边缘部署CV应用程序的成本要低得多,毕竟云计算公司会对每分钟每个端点的所有推断进行收费。对于那些想要“按需付费”的机构来说,这是或许是一个很好的、灵活的选择,但对于需要进行大量实时处理的机构来说,就成了一种负担——比如需要24小时运行摄像头和传感器的智能城市、医院或仓库。

在边缘运行计算机视觉所面临的挑战

构建计算机视觉应用程序有其自身需要克服的挑战,而且这往往是一个反复迭代的过程,因此,用于构建计算机视觉应用程序的所有管道都必须足够灵活,以应对用于承载应用程序部署的模型、库、或设备可能会出现的变化。

下面,我们将通过一个故事来了解在边缘部署计算机视觉应用程序要面临的的挑战。首先,我们可以通过以下两种方式来建立计算机视觉模型:1)在网上搜索符合需要的开源模型;2)建立一个图像数据集并训练自己的模型。在第二个方法中,我们需要收集自己的数据集,单这一项的工作量就已经非常大了,同时,我们还需要对图像标注工具和训练本身有一定的了解。

接下来,我们要开始构建应用程序了。假设,我们已经有了一个工作模型,要构建计算机视觉应用程序的原型。目前常用的计算机视觉库是OpenCV。

大家可以使用OpenCV的c++或Python应用程序编程接口(api)。例如,可以通过pip install opencv-python轻松访问Python OpenCV API。

我们花了一些时间来学习这个API,并且获得了一个可以很好地与模型输出集成的程序原型。

现在,我们在完成了应用程序后,要它部署到一个边缘设备上,比如Raspberry Pi。首先,我们会发现我们使用的OpenCV构建与Raspberry Pi处理器不兼容。其他依赖项也可能存在相同的问题。这样一来,我们就需要在Raspberry Pi上编译OpenCV。

然后,要需要弄清楚如何查看结果!借助cv2.imshow(),我们可以在自己的笔记本电脑上轻松实现这一点,但如果使用的是无头设备(没有图形接口)的话,则需要寻找另一种方法。

OK,现在我们的应用程序已经可以启动并运行了,你会发现,曾经在笔记本电脑上看到的惊人的快速性能早已不复存在。当然,没有人会指望一台35美元的单板电脑的性能可以超过Macbook,但我们依然想要更好的性能。

我们了解到可以使用因特尔的Neural Compute Stick 2来提高Pi的性能,但是现在还需要构建OpenVINO。由于OpenVINO的接口与OpenCV不同,所以需要决定是要重写应用程序以利用NCS2,还是要重建OpenCV以使其能够运行OpenVINO推理引擎。当所有这些都完成后,我们可能会发现模型需要做更多的调整,输出可能会发生变化,我们也可能会不断循环执行以上这些步骤!

如何克服这些挑战

要想克服这些挑战,除了需要计算机视觉知识外,还需要具备一定的物联网经验。然而,这些问题也可以通过像alwaysAI这样的开发者平台来解决。在alwaysAI,其唯一使命就是尽可能简化构建和部署计算机视觉应用程序到边缘设备的过程,包括训练模型,构建应用,并部署应用到边缘设备,如Raspberry Pi、Jetson Nano等等。

有了alwaysAI,你只需要知道一些基本的命令,剩下的都可以交给我们的命令行界面(CLI):收集数据,标注数据,训练一个模型,并部署和启动你的应用程序。

  • 获取计算机视觉模型

alwaysAI有一个公开可用的模型目录,与所有用我们的管道构建的应用程序都可以协同工作。你也可以使用alwaysAI模型训练工具包来训练自己的对象检测模型。该工具包以TensorFlow作为后端框架,并在mobilnet_ssd上进行迁移学习,它是在COCO数据集上训练的。

该模型训练工具包可以协助用户在无需学习新的API或手动安装任何额外模块的情况下开始使用TensorFlow。工具包中还包含了计算机视觉注释工具(Computer Vision Annotation Tool,CVAT),因此用户可以直接标注新的数据集,而不需要从头开始下载并安装CVAT。

  • 开发自己的应用程序

我们有自己的Python API,名为edgeiq,它具备一些OpenCV的核心功能,可以与之进行交互。这表示,大家只需要知道一个API,就可以启动并运行计算机视觉应用程序。

因为我们自己喜欢使用OpenCV,所以我们将其内置为边缘运行环境的核心部分,这样一来,大家可以将“import cv2”添加到所有alwaysAI应用程序中,并且直接在自己的应用程序中使用OpenCV,无论你选择的部署设备是什么。

  • 部署自己的应用程序

我们通过Docker镜像和Python虚拟环境进行容器化操作。因此,无论使用何种设备,都可以轻松部署应用程序。同时,我们可以使用Dockerfile或requirements.txt文件,轻松添加应用程序可能出现的任何必要需求。

在边缘运行计算机视觉既可以节省时间和成本,又可以提供更高的安全性。尽管开发和部署任何计算机视觉应用程序都要面临其自身的挑战,但在边缘部署时尤其如此。

原文链接:https://hackernoon.com/the-challenges-of-running-computer-vision-on-the-edge-9h3t3wpx

本文由CSDN云计算翻译,转载请注明出处

更多阅读推荐

  • 你可能也会掉进这个简单的 String 的坑

  • 亿级大表分库分表实战总结(万字干货,实战复盘)

  • 赠书 | 华为数据底座的整体架构与建设策略

  • Python画出心目中的自己

  • 超200家上市企业布局!从千余条备案信息看区块链产业

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/515992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业微信_通讯录管理,获取部门列表部门成员及详情

企业微信H5_通讯录管理,获取部门列表部门成员及详情 文章目录一、POSTMAN调试1. 获取access_token2. 获取部门列表3. 获取部门成员4. 获取部门成员详情5. 获取成员详情二、实战演练2.1. 获取部门列表2.2. 获取部门成员2.3. 获取部门成员详情2.4. 获取人员详情三、代码讲解3.1.…

【深度学习】基于 Alluxio 数据缓存的性能优化

作者 | 车漾(阿里云高级技术专家)、顾荣(南京大学 副研究员) 导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7 年的不断开发迭代,支撑大数据处理场景的数据统一管理和高效缓…

企业微信H5_身份验证,PC网站企业微信扫码授权登录

企业微信H5_身份验证,PC网站企业微信扫码授权登录 文章目录一、扫码登录配置1. 企业微信扫码登录接入流程2. 企业微信扫码登录接入流程拆解3. 开启网页授权登录二、实战演练2.1. 用户发起流程2.2. 构造授权链接2.3. 显示扫码二维码2.4. 用户扫码2.5. 用户确认登录2.6. 回调前端…

深根固柢 云起磐石——移动云大云磐石服务器重磅推出

中国移动云能力中心在2020年中国移动全球合作伙伴大会移动云分论坛上,发布了新型自研软硬融合弹性计算架构——大云磐石服务器。该架构以自主设计的可编程芯片HyperCard和轻量级Hypervisor为核心,将存储、网络虚拟化能力卸载到硬件芯片,彻底突…

面向大数据与云计算调度挑战的阿里经济体核心调度系统

编者按 伏羲(Fuxi)是十年前最初创立飞天平台时的三大服务之一(分布式存储 Pangu,分布式计算 MaxCompute,分布式调度 Fuxi),当时的设计初衷是为了解决大规模分布式资源的调度问题(本…

企业微信_读取成员(获取用户详情)

接上一篇:企业微信H5_身份验证,H5应用网页授权登录获取身份 这篇获取用户详情信息,是在上一篇(我们已经获取到用户的简要信息)基础上做的。 文章目录一、官网文档1. 阅读官网文档2. 接口地址和参数3. 重点说明二、实战演练三、代码讲解3.1. 获…

智算中心新基建 浪潮首发智算中心操作系统

2020年11月25日,“远见卓实 践所未见”浪潮云海创新论坛2020在济南召开。会议分享了浪潮对于前沿科技的创新洞见,并以扎实可靠的落地实践为用户呈现技术的商业价值。 会上,浪潮全球首发智算中心操作系统,信通院、OIF、Globaldata…

新基建来了!5G边缘计算如何展现勃勃生机?

最近“新基建”是个热词,那么新基建到底是什么?与之紧密相关的5G何去何从?这给边缘计算带来了什么机遇?边缘计算的生态产业链条是怎样的?它的典型特征和经济效益是什么?本文将为大家带来分享。 新基建是什…

企业微信H5_网页jssdk调用,ticket签名config及示例

文章目录一、验证域名归属校验1. 阅读文档2. 配置公网域名3. 登录企业微信管控台4. 选择自建应用5. 网页授权及JS-SDK6. 填写公网域名7.下载校验文件8. 校验文件移动9. 启动前端项目10. 浏览器校验11. 域名校验12. 应用主页二、前端代码实战2.1. 引入JS文件2.2.权限验证配置三、…

十强决赛即将拉开帷幕!TECHSPARK星星之火IT创新大赛诚邀您观赛

11月28日,作为湾区创见网络安全大会的重磅环节,TECHSPARK星星之火IT创新大赛十强决赛将拉开帷幕。在本次十强决赛中,参赛公司将进行项目路演,评委将按照技术、产品、市场与客户等维度进行评分,并最终评选出冠亚季军。获…

阿里云容器服务发布 Knative 托管服务

作者 | 何淋波、丁海洋、陈有坤 业界要闻 阿里云容器服务发布 Knative 托管服务 Knative 是 Kubernetes 生态最流行的 Serverless 编排框架。可 Knative 的 Controller 和依赖的网关这些常驻实例需要支付额外的 IaaS 成本和运维成本,这给应用的 Serverless 化带来…

企业微信H5_网页jssdk调用 判断当前客户端版本是否支持指定JS接口

接上一篇:企业微信H5_网页jssdk调用,ticket签名config及示例https://gblfy.blog.csdn.net/article/details/123170569 文章目录一、接入环境1. 阅读文档2. 接入要求二、前端接入和调试2.1. 代码效果2.2. 实战演练2.3. 信息分析2.4. 真实用途三、源码分享…

Apache RocketMQ 的 Service Mesh 开源之旅

作者 | 凌楚 阿里巴巴开发工程师 导读:自 19 年底开始,支持 Apache RocketMQ 的 Network Filter 历时 4 个月的 Code Review(Pull Request),于本月正式合入 CNCF Envoy 官方社区(RocketMQ Proxy Filter 官…

企业微信H5_网页jssdk调用 config和agentconfig的区别

文章目录一、文档阅读1. 企业微信JS-SDK作用2. config 接口注入权限3. agentConfig注入应用的权限二、二者区别1.引入js不同2. 参数个数不一样3. 获取应用的jsapi_ticket4. 支持的接口5. 效果演示三、源码分享3.1. 后端源码3.2. 前端源码一、文档阅读 1. 企业微信JS-SDK作用 …

阿里云飞天洛神2.0:开放弹性的云网络NFV平台

云网络架构 阿里云操作系统叫飞天,云网络平台称为洛神。作为飞天系统的核心组件,洛神平台支撑了超大规模租户、超大规模虚拟机的高性能云网络。 洛神平台由很多网络设备组成,在架构上主要可以分为两类:虚拟交换机AVS和各种网关设…

深源恒际医疗票据OCR落地九省市 服务范围覆盖过半市场

近年来,我国健康险市场规模持续保持高增长。银保监会最新统计数据显示,2019年中国健康险业务原保险保费收入6564亿元,同比增长29.75%。同时,随着民众风险保障意识的不断提升,未来健康险仍有巨大的潜在增长空间。据天风…

企业微信H5_网页jssdk调用 agentconfig选人选照片等案例演示

文章目录一、验证域名归属校验1. 阅读文档2. 配置公网域名3. 登录企业微信管控台4. 选择自建应用5. 网页授权及JS-SDK6. 填写公网域名7.下载校验文件8. 校验文件移动9. 启动前端项目10. 浏览器校验11. 域名校验12. 应用主页二、前端代码实战2.1. 引入JS文件2.2.权限验证配置三、…

Flink 1.10 细粒度资源管理解析

相信不少读者在开发 Flink 应用时或多或少会遇到在内存调优方面的问题,比如在我们生产环境中遇到最多的 TaskManager 在容器化环境下占用超出容器限制的内存而被 YARN/Mesos kill 掉[1],再比如使用 heap-based StateBackend 情况下 State 过大导致 GC 频…

一文告诉你雾计算与云计算的区别及对物联网的价值!

作者 | Victoria Puzhevich翻译 | 风车云马,责编 | 晋兆雨出品 | CSDN云计算头图 | 付费下载于视觉中国雾计算是一种分布式计算结构。将数据和应用程序等资源放置在数据源和云之间的逻辑位置。雾计算的优点之一是让许多用户同时连接到互联网上。从本质上说&#xff…

企业微信H5_消息推送概述,发送应用消息示例

文章目录一、阅读和调试1. 文档阅读2. postman发送消息二、实战演练2.1. 发送消息2.2. 前端代码2.3. 后端代码2.4. 发送文本消息2.5. 接收消息三、源码分享3.1. 后端源码3.2. 前端源码一、阅读和调试 1. 文档阅读 文档链接:https://developer.work.weixin.qq.com/…