简介
随着存储团队的产品愈加丰富,我们发现处理对文件、内容本身的高性能、稳定、安全存储之外,用户更多的对挖掘存储内容对价值提出了要求。对于多媒体文件(如图片、视频、音频、文档等),其包含的信息量是非常丰富的。如何将这些信息激活,有效的进行管理和检索,是 智能媒体管理(IMM) 尝试解决的问题。
媒体集 Set
为此,IMM 设计了 媒体集 ( Set ) 的概念,表示媒体 元信息 的集合。
在图中我们看到,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 = soccer
,RemarksA = {UserID}
- 其他用户查看某用户社区内的图片:
FindImages
API ,同时限定SetId = soccer
,RemarksA = {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 是一个比较年轻的产品,对外提供的能力也在不断扩展。希望能够帮助客户便捷地管理媒体文件,挖掘媒体文件背后的价值。