前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EVA - AI赋能的关系数据库

EVA - AI赋能的关系数据库

原创
作者头像
用户1758543
发布2023-05-05 08:54:38
6650
发布2023-05-05 08:54:38
举报

EVA 旨在支持使用深度学习模型对结构化数据(表格、特征向量)和非结构化数据(视频、播客、PDF 等)进行操作的数据库应用程序。 它使用一系列受久经考验的关系数据库系统启发的优化,包括函数缓存、采样和基于成本的谓词重新排序,将 AI 管道加速 10-100 倍。 EVA 支持面向 AI 的类 SQL 查询语言,专为分析非结构化数据而量身定制。 它带有用于分析非结构化数据的广泛模型,包括用于图像分类、对象检测、OCR、文本情感分类、人脸检测等的模型。它完全用 Python 实现并在 Apache 许可下获得许可。

推荐:用NSDT场景设计器快速搭建3D场景。

EAV的主要特性如下:

  • 🔮 使用类似 SQL 的简短查询构建更简单的 AI 驱动的应用程序
  • ⚡️ 使用以 AI 为中心的查询优化,AI 管道速度提高 10-100 倍
  • 💰 节省花在 GPU 驱动推理上的钱
  • 🚀 通过用户定义的函数为您的自定义深度学习模型提供一流的支持
  • 📦 内置缓存以消除跨查询的冗余模型调用
  • ⌨️ 对 PyTorch 和 HuggingFace 模型的一流支持
  • 🐍 可通过 pip 安装并完全在 Python 中实现

以下是一些说明性的 EVA 支持的应用程序(它们都是可以在 Google Colab 中打开的 Jupyter 笔记本):

  • 🔮 分析十字路口的交通流量
  • 🔮 检查电影中演员的情感调色板
  • 🔮 根据内容对图像进行分类
  • 🔮 使用拥抱面进行图像分割
  • 🔮 识别车牌
  • 🔮 分析社交媒体模因的毒性

1、快速开始

使用 pip 包管理器安装 EVA。 EVA 支持 Python 版本 >= 3.7。

代码语言:javascript
复制
pip install evadb

要在 Jupyter notebook 中启动并连接到 EVA 服务器,请查看这个介绍性的情绪分析 notebook

代码语言:javascript
复制
cursor = connect_to_server()

将视频加载到 EVA 服务器上(我们使用 ua_detrac.mp4 进行说明):

代码语言:javascript
复制
LOAD VIDEO "data/ua_detrac/ua_detrac.mp4" INTO TrafficVideo;

就是这样! 现在可以对加载的视频运行查询:

代码语言:javascript
复制
SELECT id, data FROM TrafficVideo WHERE id < 5;

在视频中搜索包含汽车的帧:

代码语言:javascript
复制
SELECT id, data FROM TrafficVideo WHERE ['car'] <@ Yolo(data).labels;

在视频中搜索包含行人和汽车的帧:

代码语言:javascript
复制
SELECT id, data FROM TrafficVideo WHERE ['pedestrian', 'car'] <@ Yolo(data).labels;

搜索超过三辆汽车的帧:

代码语言:javascript
复制
SELECT id, data FROM TrafficVideo WHERE ArrayCount(Yolo(data).labels, 'car') > 3;

在具有用户定义函数 (UDF) 的查询中使用自定义深度学习模型:

代码语言:javascript
复制
CREATE UDF IF NOT EXISTS MyUDF
INPUT  (frame NDARRAY UINT8(3, ANYDIM, ANYDIM))
OUTPUT (labels NDARRAY STR(ANYDIM), bboxes NDARRAY FLOAT32(ANYDIM, 4),
        scores NDARRAY FLOAT32(ANYDIM))
TYPE  Classification
IMPL  'eva/udfs/fastrcnn_object_detector.py';

在单个查询中组合多个模型以设置有用的 AI 管道。

代码语言:javascript
复制
   -- Analyse emotions of faces in a video
   SELECT id, bbox, EmotionDetector(Crop(data, bbox)) 
   FROM MovieVideo JOIN LATERAL UNNEST(FaceDetector(data)) AS Face(bbox, conf)  
   WHERE id < 15;

EVA 使用其以 AI 为中心的查询优化器更快地运行查询。 两个关键的优化是:

  • 💾 缓存:EVA自动缓存并复用之前的查询结果(尤其是模型推理结果),消除冗余计算,减少查询处理时间。
  • 🎯 谓词重新排序:EVA 优化了查询谓词的评估顺序(例如,首先运行速度更快、更具选择性的模型),从而加快查询速度并降低推理成本。

考虑对 🐕 图像数据集的这两个探索性查询:

代码语言:javascript
复制
  -- Query 1: Find all images of black-colored dogs
  SELECT id, bbox FROM dogs 
  JOIN LATERAL UNNEST(Yolo(data)) AS Obj(label, bbox, score) 
  WHERE Obj.label = 'dog' 
    AND Color(Crop(data, bbox)) = 'black'; 

  -- Query 2: Find all Great Danes that are black-colored
  SELECT id, bbox FROM dogs 
  JOIN LATERAL UNNEST(Yolo(data)) AS Obj(label, bbox, score) 
  WHERE Obj.label = 'dog' 
    AND DogBreedClassifier(Crop(data, bbox)) = 'great dane' 
    AND Color(Crop(data, bbox)) = 'black';

通过重用第一个查询的结果并根据可用的缓存推理结果对谓词重新排序,EVA 运行第二个查询的速度提高了 10 倍!

2、示例应用

🔮 流量分析(目标检测模型)

🔮 MNIST 数字识别(图像分类模型)

🔮 电影情感分析(人脸检测+情感分类模型)

🔮 车牌识别(车牌检测 + OCR 提取模型)

🔮 Meme 有害性分类(OCR 提取 + 毒性分类模型)


原文链接:AI增强的关系数据库 - BimAnt

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、快速开始
  • 2、示例应用
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档