智能媒体管理(IMM) 多媒体文件元数据管理设计

简介

随着存储团队的产品愈加丰富,我们发现处理对文件、内容本身的高性能、稳定、安全存储之外,用户更多的对挖掘存储内容对价值提出了要求。对于多媒体文件(如图片、视频、音频、文档等),其包含的信息量是非常丰富的。如何将这些信息激活,有效的进行管理和检索,是 智能媒体管理(IMM) 尝试解决的问题。

媒体集 Set

为此,IMM 设计了 媒体集 ( Set ) 的概念,表示媒体 元信息 的集合。

智能媒体管理(IMM) 多媒体文件元数据管理设计

在图中我们看到,Set 实际上是元数据的集合,记录了媒体文件(来自 OSS)和其元数据的绑定关系,以及所有元数据本身。

实际开发时,可以通过 CreateSet 来创建一个 Set 。

如何界定 Set 呢?我们认为 Set 为 一组 元数据,它可以对应一个用户,一个文件夹,一个公司的所有媒体文件等。一个 Set 内应当存放内聚的媒体文件,可以尽量缩小 Set 对应的文件范围。Set 创建数量没有限制,Set 内文件数量越少,整体管理性能越好。

同时需要注意,Set 是内聚的,因此不同 Set 之间的数据是隔离的,不能在不同 Set 间进行操作。

我们分具体场景看:

云相册场景

对云相册来说,一个显然的方案是根据用户来划分。每个用户独享一个 Set 。如果云相册产品的设计逻辑中,区分了媒体类型,如视频相册、照片相册等,也可以每个相册一个 Set 。

用户照片 Feed 流

这类应用有两个分类方式。一种是依然按照用户来划分。但对于一些兴趣社区场景,则可以考虑按照社区进行分类。如 健身社区足球社区 这个维度区分 Set 。这样用户可以搜索所有健身社区的图片。

如何解决社区内按用户搜索的问题呢?对 Set 内的媒体文件,IMM 提供了 Remarks 字段( RemarksA 和 RemarksB 两个)作为应用的标记位。对于这个场景,我们可以如下方式分配:

  • RemarksA:用户ID
  • RemarksB:可见度:private / public

这样我们在搜索时,可以满足如下场景(后文会介绍 数据搜索):

  • 足球社区内图片:FindImages API,限定 SetId = soccer
  • 用户查看自己社区内的图片:FindImages API,同时限定 SetId = soccerRemarksA = {UserID}
  • 其他用户查看某用户社区内的图片:FindImages API ,同时限定 SetId = soccerRemarksA = {UserID}RemarksA = public

如果仍有疑问,或需要更复杂的筛选,可以 联系我们

Indexing 索引

我们创建好 Set 后。接下来就是向 Set 中添加媒体文件。Set 内的引擎会自动将文件的元数据检测出来并格式化保存,用于后续管理、检索。

目前 IMM 提供了 IndexImage 用于索引图片,IndexVideo 用于索引视频。我们以 IndexImage 为例详细介绍。

IndexImage 被调用时,IMM 首先检查图片的合法性,并且将图片的基础 Meta 信息存入 Set 中。包括

  • 图片格式
  • 图片尺寸
  • 图片 EXIF 信息

    • 图片旋转信息
    • 图片拍摄时间
    • 图片地理位置信息
  • 图片文件大小
  • 创建时间

等等。这一步在 IndexImage 接口返回值之前全部处理完成。即用户看到该接口的返回值时,上述信息已经被格式化好并存储了。

随后是一个异步过程。IMM 会对该图进行 AI 检测,包括:

  • OCR
  • 人脸检测分析,包括表情、年龄、特征等等
  • 标签检测
  • 名人检测

等等。这些信息会在接下来的几秒内处理完成,并更新到该图片的 Meta 信息中。即完成了图像元数据的分析储存。

元数据管理

Set 内已有元数据后,接下来就是对这些元数据进行获取。IMM 主要通过搜索、分析接口,供应用端获取、筛选元数据。针对图片举例,我们可以获取:

  • 搜索 体育运动 的照片
  • 搜索 人物表情为高兴 的照片
  • 搜索 夏天拍摄 的照片
  • 搜索 包含特定文字 的照片
  • 搜索 有小孩儿 的照片
  • 搜索 在杭州西湖拍摄 的照片

等等,且以上条件可以任意组合。我们具体展开一些例子。

搜索 体育运动 的照片

使用 FindImages 接口:

POST https://imm.cn-shanghai.aliyuncs.com
?Action=FindImages
&Project=test-project
&SetId=test-set
&TagNames=["体育运动"]
...

搜索 人物表情为高兴 的照片

使用 FindImages 接口:

POST https://imm.cn-shanghai.aliyuncs.com
?Action=FindImages
&Project=test-project
&SetId=test-set
&Emotion=HAPPY
...

搜索 在杭州西湖拍摄 的照片

首先我们找到杭州西湖的地理位置坐标。这一步可以使用高德等地图 API 获取。

例如西湖的大致坐标左上角为:120.137446,30.252502,右下角为120.154697,30.233854

使用 FindImages 接口:

POST https://imm.cn-shanghai.aliyuncs.com
?Action=FindImages
&Project=test-project
&SetId=test-set
&LocationBoundary={"TopLeft":"120.137446,30.252502","BottomRight":"120.154697,30.233854"}
...

搜索 去年夏天拍摄 的照片

使用 FindImages 接口:

POST https://imm.cn-shanghai.aliyuncs.com
?Action=FindImages
&Project=test-project
&SetId=test-set
&ImageTimeRange={"Start":"2018-06-01T00:00:00.0Z","End":"2018-09-01T00:00:00.0"}
...

当然,上述搜索条件均可*组合,进行联合搜索。同时可以配合 Remarks 进行自定义过滤。

如果有其他搜索需求,或当前的方式无法满足您的业务需求,您可以 联系我们

以上就是 IMM 元信息管理的设计方式介绍。IMM 是一个比较年轻的产品,对外提供的能力也在不断扩展。希望能够帮助客户便捷地管理媒体文件,挖掘媒体文件背后的价值。

上一篇:利用智能媒体管理(IMM) 搭建云相册指南


下一篇:视觉训练训练营第一天