写点什么

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:232247

评论

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

鸿蒙Next使用AudioCapturer实现音频录制和AI语言转文字

auhgnixgnahz

鸿蒙Next

「HarmonyOSNext性能调优秘籍:HiTraceMeter全场景追踪指南」

Turing_010

鸿蒙Next应用桌面快捷操作shortcuts和Form卡片介绍

auhgnixgnahz

鸿蒙Next

MindIE服务化性能MindIE service如何调优?首token时延限制严格,非首token时延也有限制

zjun

昇腾 模型推理 Ascend NPU

鸿蒙Next使用AVRecorder录制和播放音频

auhgnixgnahz

鸿蒙Next

HarmonyOSNext性能调优圣典可视化分析+命令行实战避坑指南

Turing_010

Story 与 OKX Ventures 发千万基金,押注 IP+AI 交叉领域

股市老人

跨境卖家必看:1688商品列表页面数据接口抓取攻略

tbapi

1688商品列表接口 1688API 1688商品数据采集

软件测试工程师如何用DeepSeek写测试用例:效率飙升的秘密武器!

测试人

人工智能 软件测试 DeepSeek

鸿蒙Next实现通讯录索引条AlphabetIndexer

auhgnixgnahz

鸿蒙Next

网站域名是什么,怎么注册?一文讲清楚域名注册管理那些事

防火墙后吃泡面

Apache Cloudberry 向量化实践(一):为什么要优化向量数据重分布性能?

酷克数据HashData

鸿蒙Next数据量环形图标Gauge介绍

auhgnixgnahz

鸿蒙Next

鸿蒙Next使用Canvas绘制一个汽车仪表盘

auhgnixgnahz

鸿蒙Next

鸿蒙Next画布Canvas基础使用演示

auhgnixgnahz

鸿蒙Next

终止分区表变更操作时误删数据字典缓存导致MySQL崩溃分析

GreatSQL

MindIE服务化性能MindIE service如何调优?限制非首token时延的极限吞吐

zjun

性能优化 模型推理 Ascend NPU

鸿蒙Next实现仿抖音点赞动画功能

auhgnixgnahz

鸿蒙Next

MindIE服务化性能MindIE service如何调优?不考虑时延的极限吞吐场景

zjun

昇腾 模型推理 Ascend

微店商品详情API接口详解

tbapi

微店商品详情接口 微店API 微店商品数据采集 微店商品详情数据采集

使用DataSecurity Plus监控Windows文件完整性

运维有小邓

日志管理 IT运维 文件监控

鸿蒙Next显示动画animateTo介绍

auhgnixgnahz

鸿蒙Next

智慧停车场系统(源码+文档+讲解+演示)

深圳亥时科技

实战案例 | 高德地图MCP+DeepSeek 接入实现火警智能应急系统

高德开放平台

Java AI 前端 高德地图 MCP

DApp的外包开发流程

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

鸿蒙Next选择按钮Toggle、Checkbox、Radio介绍

auhgnixgnahz

鸿蒙Next

Ascend如何测试集合通信(HCCL)的功能正确性以及性能?

zjun

昇腾 模型推理 Ascend

AI 技术在语言学习中的应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI技术应用

鸿蒙Next并发线程TaskPool使用

auhgnixgnahz

鸿蒙Next

DApp开发框架及特点

北京木奇移动技术有限公司

区块链技术开发 dapp开发 软件外包公司

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