【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

评论

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

OpenHarmony创新赛|赋能直播第四期

OpenHarmony开发者

每个开发人员都想使用的编程语言

互联网工科生

rust

那些被裁员的芯片工程师们都怎么样了?

IC男奋斗史

职业规划 裁员 芯片 半导体 ChatGPT

回归测试的实践与思考

老张

软件测试 质量保障 回归测试 测试计划

文心一言 VS 讯飞星火 VS chatgpt (114)-- 算法导论10.2 7题

福大大架构师每日一题

福大大架构师每日一题

在 Windows 平台下安装与配置 MySQL 5.7.36

小齐写代码

了解容器运行时安全:保护你的容器应用

统信软件

容器 安全 运行时

OpenHarmony创新赛丨报名倒计时,超强秘籍带你直通大奖!

OpenHarmony开发者

体育赛事技术演进历程,开发技术发展趋势

软件开发-梦幻运营部

谁在“操控”虚拟人?

自象限

虚拟人

中文永久激活版:IBM SPSS Statistics 26 for Mac破解资源 支持M1

iMac小白

IBM SPSS Statistics 26 SPSS26破解版

premiere pro 2024 新功能介绍 pr2024中文激活版下载mac/win

iMac小白

Premiere Pro 2024 Pr2024下载 pr2024破解版

Java中,对象一定在堆中分配吗?

这我可不懂

Java Java堆

mac版本Lightroom Classic 2024正式版来了 七个有趣的新功能值得更新

晴雯哥

低代码开发平台实现思路探索:JNPF

互联网工科生

低代码 JNPF

IPQ9554 and QCN9274 - The key to high-speed connectivity - Go beyond tradition and lead the future:

wifi6-yiyi

Linux爆发好时机!Windows这次换代为何这么难!

树上有只程序猿

windows 11

Mate60系列超预期热潮背后,品牌如何抓住营销机遇?

最新动态

再玩玩B端搭建

得物技术

架构 规则引擎 B端搭建

业内首个基于Iceberg的“云端仓转湖”生产实践探索

腾讯云大数据

湖仓一体

DeFi/DApp矿机算力质押挖矿系统开发

l8l259l3365

探索工作流应用场景下解决重复审批的方法

inBuilder低代码平台

工作流 低代码

CSS魔法!如何将任意CSS类型转换为数值?

高端章鱼哥

CSS

QCN9274|DBDC WiFi 7 Network Card: Qualcomm's Innovative Solution

wallyslilly

qcn9274 qcn6274

互联网众包平台如何改变APP软件开发方式?

知者如C

NFTScan | 10.09~10.15 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

数据结构与算法 | 数组(Array)

Java研究者

Java 算法 数组 算法题 数据结构,

一文解析iPaaS的价值及运用场景

RestCloud

ipaas

亲测可用 Illustrator 2024更新,最新AI2024下载mac/win

iMac小白

Illustrator 2024 ai2024下载 AI2024破解版

Apache IoTDB v1.2.2 发布|增加 flink-sql-connector、tsfile 文件级级联传输等功能

Apache IoTDB

iOS代码混淆-从入门到放弃

雪奈椰子

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