产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

Redis 另一技术栈——RedisEdge

  • 2019-10-24
  • 本文字数:2034 字

    阅读完需:约 7 分钟

Redis 另一技术栈——RedisEdge


上面的剪辑是一个仪表盘记录,演示了 Redis 中的实时视频分析。在过去的几个月里,我们在 Redis 实验室做了几个激动人心的报告,包括 RedisGears(动态执行框架),RedisAI(用于深度学习模型执行)和 RedisTimeSeries(时间序列数据库)。这些都是基于 Redis v5 版本和新的 Redis Streams 数据结构,共同组成了我们称之为的 RedisEdge 框架,用于物联网(IoT)边缘的专用多模型数据库。


RedisEdge 背后的理念是,它要使得在物联网边缘开发,部署和运行复杂的数据处理任务变得简单,尽可能接近实际的事物本身。任何类型的传感器都可以将其数据上传给数据库,它不仅可以存储,还可以处理它们以供进一步消费或转储。我们从概念验证开始,以确保我们既有确切的数字来支持这个承诺,又有一个很好的用户界面来可视化这一切。


任何证明都需要一个用例,我们就以在实时视频流中计算人数的应用为例。为了对视频帧中的物体(比如人物)进行检测,我们使用了一种名为 YOLO(“你只被看一次”)的现代机器学习模型。该目标检测系统因其相对较好的性能和准确性而闻名,所以我们剩下要做的就“只是”将它连接到 RedisEdge(更多关于这个主题请参考:“RedisAI: Thor’s Stormbreaker for Deep Learning Deployment”)。


下图描述了该系统的组装结果:


RedisEdge 用例步骤

  1. 该系统的驱动程序是视频捕获进程(左上角),它从摄像机或文件中获取输入视频流,并提取其组成帧。捕获进程将标准 redis-py 客户端连接到 RedisEdge 服务器,并通过调用“XADD”将每个捕获的帧作为新消息附加到 Redis Stream。此消息由帧的编号(用于调试)和原始编码用 JPEG 字节表示的帧组成。

  2. 向 Redis Stream 添加消息会触发 RedisGears 脚本的执行。该脚本实现了一系列操作,概念上由以下三个主要部分组成:下采样输入流的帧速率,在帧上运行模型以及存储检测各种指标。

  3. 第一部分,下采样,通过 Python 中实现的限流机制来维护性能。最理想的情况是,我们希望尽快处理所有帧,以便提供准确、及时的结果。但是,即使处理单个帧也需要时间,当帧输入速率高于处理速率时,就会出现处理积压并最终爆发。因此,为了避免在辉煌的火焰中发生爆炸,我们通过丢弃一些输入帧来,牺牲完整性并对输入帧速率进行下采样,只留下一部分帧要处理。测量的处理帧速率动态地确定这些样本应该有多大。

  4. 在脚本的第二部分中,下采样过滤器未丢弃的帧通过 YOLO 模型运行。在此之前,需要从 JPEG 格式解码帧,调整大小并进行标准化。所有这些任务再次通过使用传统的 Python 代码和通常用于数字阵列(numpy),图像(pillow)和计算机视觉(opencv)的标准库来实现。然后将处理后的帧转换为 RedisAI 张量。RedisGears 对 RedisAI 的所有调用使用直接 API 来实现最佳性能,而不是通过 Redis 的密钥空间进行通信,并且直接发送到 TensorFlow YOLO 模型。执行模型,然后返回包含来自帧的对象检测的回复张量。然后使用 RedisAI PyTorch 脚本进一步处理模型的回复,该脚本对检测到的边界框执行交叉和非最大值抑制。然后,按标签过滤这些框以排除所有非人检测并将其坐标转换回框架的原始尺寸。

  5. 系统的最后部分将模型的处理输出存储在另一个 Redis Stream 中。输出 Redis Stream 中的消息包括对原始输入流中帧的 ID 的引用,检测到的人数以及各自边界框的列表。通过读取输入和输出 Redis Streams,视频服务器可以渲染由输入帧和在其中检测到的人组成的图像。除了填充输出流之外,系统还存储计数的人数,以及作为 RedisTimeSeries 数据的各种性能度量(例如,帧速率和不同步骤的执行时间)。这提供了一种简单的方法来将管道输出具体化并集成到任何第三方报告/仪表盘/监控应用程序或服务,例如本例中的 Grafana。

  6. 基本上就是这样 - 数据进入,被处理,存储并且有时被回送 - 就像许多其他系统一样。

是什么让 RedisEdge 如此特别?

我是 Redis 的极客。对我来说,Redis 是我生活的另一重要部分,就像我的家庭一样。


当人们问我为什么 Redis 很特别时,我总是说:“因为它快速而有趣。”RedisEdge 很快,因为,它是 Redis,你可以依靠它来获得不错的性能。相信我:将所有数据存储在内存中的专用数据结构中是性能的最佳选择。


当然,硬件在性能方面也起着重要作用。这在执行深度学习模型时更是如此。YOLO 虽然现代和高性能但是仍然需要一个不错的 GPU 来跟上 HD60fps 视频流而不丢帧。另一方面,一个不错的 RedisEdge CPU 可以处理标准的 30fps 网络摄像头,丢弃率不超过 5%。因此,如果有合适的硬件和输入,它可以很快,非常快。


RedisEdge 很有趣吗?当然!请试着向上滚动并查看漂亮的方框和图形。这是最原始的形式,真正核心的部分是它的完全可重复和可修改。因为一切都是通过基本脚本实现的,所以我可以通过很少的更改来计算蝙蝠。或者更实用的东西,比如汽车。或者我可以用移动网络取代 YOLO——一种识别动物的不同模型——虽然它已经完成。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/dKuldlHuH2gk1L_AAnGw0A


2019-10-24 10:231848

评论

发布
暂无评论
发现更多内容

手机直播app源码部署搭建:带货潮流,商城功能!——山东布谷科技创作

山东布谷科技

软件开发 直播 源码搭建 直播APP源码 手机直播源码

含CPU芯片的PCB可制造性设计问题详解

华秋PCB

工具 芯片 PCB PCB设计 可制造性

大模型时代,科技企业入局能源行业需要新范本

TE智库

新能源 特斯联

应对618、双十一等大促期间的高负载,API性能测试应该怎么做?负载测试、基线测试、冒烟测试、浸泡测试、峰值测试和尖峰测试详解

龙智—DevSecOps解决方案

自动化测试 API 测试自动化

程序员「求生宝典」!AI大发展下的程序员求生指南,干货满满

Openlab_cosmoplat

六步带你体验EDS交换数据全流程

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

华为云云原生数据库,让企业离应用更进一步

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

常用语言的线程模型(Java、go、C++、python3) | 京东云技术团队

京东科技开发者

Java c++ Go 线程模型 企业号 7 月 PK 榜

书画家点赞!基于飞桨绘制中国水墨山水画

飞桨PaddlePaddle

人工智能 paddle 飞桨 百度飞桨 AIGC

基于ClickHouse解决活动海量数据问题 | 京东云技术团队

京东科技开发者

数据库 Clickhouse 数据处理 企业号 7 月 PK 榜

Nautilus Chain NautDID NFT 将上主网,Layer3 数字身份时代开启

西柚子

用友BIP:助力企业数智化转型,实现数智化国产替代

用友BIP

国产替代

WiFi 7 (802.11be)-IPQ9574+QCN9274-ultra-wide 320 MHz spectrum channel

wifi6-yiyi

qcn9274 WiFi 7 802.11be

灵活预算,畅享高性能!月付香港主机助你建设理想网站!

一只扑棱蛾子

香港主机

为什么强调数智底座能力?

用友BIP

数智底座

大型民营集团如何构建全面预算管理体系?

用友BIP

全面预算

Seal AppManager如何基于Terraform简化基础设施管理

SEAL安全

Kubernetes Terraform 平台工程 SealAppManager 企业号 7 月 PK 榜

从TL、ITL到TTL | 京东物流技术团队

京东科技开发者

ThreadLocal ThreadLocalMap 企业号 7 月 PK 榜

识别led显示屏扫描方式及常见分类指南

Dylan

分类 识别 扫描 LED显示屏

数智底座成竞争焦点,用友能否再创辉煌?

用友BIP

数智底座

探索学习Hypermesh的有效方法

智造软件

CAE CAE软件 Hypermesh 结构分析软件 学习教程

NFTScan | 07.10~07.16 NFT 市场热点汇总

NFT Research

NFT\

等保测评包过是真的吗?安全吗?

行云管家

等保 等级保护 等保测评

等保定级标准是怎样的?是否系统定级越低越好?

行云管家

网络安全 等保 堡垒机 等级

一文了解什么是ISO 9001认证,以及在静态分析和代码质量领域有哪些通过此认证的工具

龙智—DevSecOps解决方案

代码扫描 静态代码分析 代码分析

何为低代码?何为高代码?

互联网工科生

软件开发 低代码 JNPF 高代码

一文了解JNPF低代码开发平台

高端章鱼哥

低代码 低代码开发 JNPF

如何学习ABAQUS有限元仿真分析软件

思茂信息

abaqus abaqus软件 abaqus有限元仿真 有限元分析 有限元仿真

任务调度之时间轮实现 | 京东云技术团队

京东科技开发者

定时任务 数据结构与算法 时间轮 企业号 7 月 PK 榜

七年老程序员的五六月总结:十一件有意义的事

拭心

android 程序员 程序人生 成长记录

Redis 另一技术栈——RedisEdge_文化 & 方法_中间件小哥_InfoQ精选文章