大规模图像识别场景中的实体存储与检索

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
简介: 背景图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术。图片识别功能基于图片AI技术,能够检测图片标签和置信度。 当前图片识别分析出的数据越来越丰富,随着实体信息(含原始数据及处理后的结构化元数据信息)的不断膨胀也带来了更多挑战。首先,如何弹性存储无限增长的海量数据并保证数据不丢不错。其次,信息存储后如何进行后续数据管控分析,如何从多个维度对外提供服务。这些对

背景

图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术。图片识别功能基于图片AI技术,能够检测图片标签和置信度。 当前图片识别分析出的数据越来越丰富,随着实体信息(含原始数据及处理后的结构化元数据信息)的不断膨胀也带来了更多挑战。首先,如何弹性存储无限增长的海量数据并保证数据不丢不错。其次,信息存储后如何进行后续数据管控分析,如何从多个维度对外提供服务。这些对于系统的存储和使用都提出了越来越高的要求。

需求场景

图像识别有着非常丰富的使用场景,图像识别出的元素信息保存后,可以在后续服务提供图片中物品、环境信息等搜索功能。

在自动驾驶场景中,汽车通过摄像头雷达等识别周围环境中的实体信息,通过将识别出的实体信息及后期人工标注的信息存储后,基于大规模数据模型训练可以进一步提升汽车的自动驾驶能力。

方案

图像识别涉及图像的内容分析、原始数据与元数据存储以及后续不同场景的使用,随着图像原数据的不断增大,图像识别的元信息也会不断膨胀,针对于此也有多种数据存储方案。

对于图像原始数据存储后解析出的结构化实体信息当前常见的便是将数据存储到MySQL中,但存储在MySQL天然存在诸多问题。首先,MySQL提供了丰富的数据检索功能,但在图像识别场景下需要的大量文本检索、组合查询、子文档查询等能力略显不足。其次,当数据量达到当前 MySQL 集群瓶颈,集群扩容会有一定难度,需要更大的集群以及大量数据的迁移工作,MySQL扩容也是个负担。

对于图像识别后的结构化实体信息另一个常用的存储便是MongoDB,MongoDB是一款面向文档的NoSQL数据库,具有模型简单上手快的优势,但MongoDB在检索方面能力略显不足以及在后续规模扩展方面存在问题。。

我们重新梳理下在大规模图像识别场景下我们到底是需要什么样的实体存储方案?

  • 原始数据及元信息的存储可以应对不断增长的大规模数据场景
  • 能提供满足业务场景的丰富检索能力
  • 释放运维能力,提供serverless能力

OSS + Tablestore方案便可以很好的满足以上所有要求(表格存储 Tablestore是阿里云上售卖的一款自研的多模型结构化Serverless 数据库产品,提供海量结构化数据存储以及快速的查询和分析服务。Tablestore 的多元索引,底层使用自研索引引擎,可以支持多种复杂查询功能。阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务),整体架构如下:

终端采集的原始数据存储到OSS,图像处理可以通过图像识别、人工标注等多种方式进行进行实体信息的抽取,并将最终的实体元信息保存到Tablestore中。Tablestore实现非常丰富的高性能数据访问、聚合查询等功能(比如毫米级检索含有汽车的所有图片),从而可以在多个领域对外提供多种多样的智能化服务。同时Tablestore 提供了SQL查询能力以及通道服务,基于SQL查询能力用户可以直接通过SQL语句便可完成数据查询及分析,基于Tablestore 的通道服务可以对接 Spark streaming 或 Flink实现实时数据处理,可以对接OSS等存储服务实现数据的转存及离线分析。

OSS + Tablestore 存储方案已经在阿里云智能媒体管理(IMM)得到验证,在支撑海量数据存储情况下同时满足了多种业务场景。

图像元数据管理示例

这里以场景及人脸相关图片为例,图像元信息定义如下:

字段

类型

说明

id

long

FileName

string

文件名称

URI

string

文件存储位置信息,如果存储在OSS则为OSS的地址信息

MediaType

string

数据类型,如图像、文本、视频等

Size

long

数据大小

Address

string(嵌套数据)

图像相关的地址信息,如 国家、省份、城市等。数据为json格式,如:

[ {

"Country": "china",

"Province": "Zhejiang",

"City": "Hangzhou"

}]

Tags

string(嵌套数据)

图片标签信息,如图片是否为夜晚,是否为城市场景等,数据为json格式,如:

[

{

"TagLevel": 1,

"TagName": "外部场景"

},

{

"ParentTagName": "外部场景",

"TagLevel": 2,

"TagName": "城市全景"

}

]

Faces

string(嵌套数据)

人脸信息

性别、年龄、人脸表情、是否戴眼镜、人脸质量等,数据为json格式,如:

[

{

"Age": 29,

"Attractive": 0.95,

"Emotion": "HAPPY",

"EmotionConfidence": 0.95,

"EmotionDetails": [

{

"ANGRY": 0.000016857109585544094,

"CALM": 0.012278525158762932,

"DISGUSTED": 0.000012325451280048583,

"HAPPY": 0.9875330924987793,

"SAD": 0.0000388074986403808,

"SCARED": 0.000006888585176056949,

"SURPRISED": 0.000054363932576961815

}

],

"FaceAttributes": [

{

"Beard": "NONE",

"BeardConfidence": 1,

"Glasses": "NONE",

"GlassesConfidence": 1,

"Mask": "NONE",

"MaskConfidence": 0.9999999403953552

}

],

"FaceConfidence": 0.98,

"Gender": "MALE",

"GenderConfidence": 1

}

]

CreateTime

long

创建时间戳

UpdateTime

long

更新时间戳

创建表及多元索引

进入Tablestore控制台首页选择Tablestore 实例后进入实例管理,选择创建数据表,Tablestore数据表是schema free的,添加完基础列后,后期可以根据需求动态追加列。

点击索引管理后选择创建多元索引,对于嵌套数据字段类型可以选择嵌套文档,并输入对应字段信息

数据写入&索引同步

Tablestore数据表的数据写入可以在控制台操作,也可以基于Tablestore SDK进行操作,当前提供Java、Go、Python等多种语言SDK。

多元索引创建后,会自动同步数据,同步过程中,同步状态显示为存量;数据同步结束后,同步状态显示为增量。此时可以在行数统计处看到记录总数。

数据检索

Tablestore数据表结合多元索引,可以实现非常丰富的查询能力,可以支持主键列查询、非主键列查询、全文检索、前缀查询、模糊查询、多字段自由组合查询、嵌套查询、地理位置查询和统计聚合(max、min、count、sum、avg、distinct_count、group_by)等,具体可参考多元索引基础功能

在图像元数据管理示例中如果我们想搜索表情为HAPPY的图片元信息,那么可以在控制台执行查询操作:

返回数据:

也可以通过SDK实现查询:

    // 搜索表情为HAPPY的图片元信息
    public void testFaceEmotionQuery() {
        SyncClient syncClient = new SyncClient(conf.getEndpoint(), conf.getAccessId(),
            conf.getAccessKey(),
            conf.getInstanceName());
        SearchQuery searchQuery = new SearchQuery();
        NestedQuery nestedQuery = new NestedQuery();
        nestedQuery.setPath("Faces");
        TermQuery termQuery = new TermQuery();
        termQuery.setFieldName("Faces.Emotion");
        termQuery.setTerm(ColumnValue.fromString("HAPPY"));
        nestedQuery.setQuery(termQuery);
        nestedQuery.setScoreMode(ScoreMode.None);
        searchQuery.setQuery(nestedQuery);
        searchQuery.setGetTotalCount(false);
        SearchRequest searchRequest = new SearchRequest(tableName, indexName, searchQuery);
        SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
        columnsToGet.setReturnAllFromIndex(true);
        searchRequest.setColumnsToGet(columnsToGet);
        // 进行搜索
        SearchResponse response = syncClient.search(searchRequest);

        // 解析数据,获取文件名
        if (response != null && response.getRows().size() > 0) {
            List<Row> item = response.getRows();
            for (Row r : item) {
                System.out.println(r.getColumn("FileName"));
            }
        }
    }

总结

本文简要介绍了大规模图像识别场景中的实体管理方案。基于OSS + Tablestore方案可以支持大数据存储、高性能数据检索、实时与离线数据分析,且部署简单、运维成本低,可以有效应对图像识别场景下的多种需求。

如果希望继续交流,可以加入我们的开发者技术交流群,可在钉钉搜索群号『11789671』或『23307953』。

目录
相关文章
|
7月前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
人工智能 算法 开发工具
【视觉智能AI场景解决方案——AI智慧运动】
  随着全民健身热潮的提升,智慧健身运动随着数字化新技术的进步,以及在运动健身领域的应用逐渐趋于成熟,智能运动健身将为传统运动健身提供更多新的方向和玩法,满足不同项目爱好者的健身需求。随着AI运动健身技术的进一步普及与应用,基于ai的智慧健身运动技术未来可打造的场景化空间会越来越多,体育运动与科技娱乐,智慧健身运动在线上体育行业未来会创新运动场景,丰富运动体验,提升竞技娱乐性,推动全民健身走向新的高度。
1032 3
【视觉智能AI场景解决方案——AI智慧运动】
|
人工智能 vr&ar
【视觉智能AI场景解决方案——AI视频互动娱乐】
如今我们正逐渐进入一个智能化时代,AI视频互动娱乐在娱乐场景中被广泛应用。它利用先进的人工智能技术和互动性强的视频娱乐形式,为用户带来全新的娱乐体验。无论是与虚拟角色互动竞技,还是参与丰富多样的虚拟现实体验,AI视频互动娱乐都能让用户沉浸其中。现如今我们可以在电子游戏、电影、电视节目等传统娱乐形式中见到视觉AI的影子。 那么,AI和我们的生活娱乐中能撞出什么火花?来看看当下最火爆的视频互娱新玩法吧~
993 3
|
人工智能 算法 安全
【视觉智能AI场景解决方案——智慧考勤】
随着科技和经济的发展,考勤管理制度无论是对于企业还是学习,都是相对重要的管理制度。在传统考勤制度中,员工的出勤和工时需要依靠人工记录,并需要相应的人力来处理和审批。这种方式在浪费了时间和人力成本的基础上,还极易出现数据记录错误,造成一系列严重的后果。现如今,随着视觉智能AI的发展,智慧考勤可以实现。除了可以解决传统的考勤制度中的劣势之外, 还具备完善的数据传输和保存系统,管理者可以更好地利用考勤数据和实时通知系统,更好地规划资源和调整工作安排。
616 2
|
人工智能 监控 算法
【视觉智能AI场景解决方案——智慧物流车牌识别】
随着AI技术的问世,物流行业迎来了速度、准确率、系统化的全方位提升 。通过使用AI识别车牌与车辆功能,物流企业可以实现对车辆的快速、准确的识别,提高物流车辆的管理效率。此外,AI还可以帮助物流企业实现对车辆功能的识别,如车辆类型、载重等,为物流调度提供更加科学的指导。AI识别车牌与车辆功能的应用正日益普及,为智慧物流行业带来了新的发展机遇。
570 0
|
机器学习/深度学习 人工智能 算法
图普科技李明强:用产品思维打造图像识别的场景化应用
图普科技创始人李明强是原腾讯资深项目经理和 T4 的技术专家,跟随张小龙一起参与了 QQ 邮箱和微信等产品的研发,拥有 7 年的互联网产品项目管理、团队管理、产品设计以及运营推广经验。
348 0
|
机器学习/深度学习 人工智能 算法
StartDT AI Lab | 视觉智能引擎——Re-ID赋能线下场景顾客数字化
StartDT AI Lab通过各种算法相互协同并取长补短,产生了微妙的化学反应,最终重新定义了客流系统,将商家的分析维度达到了新的高度。
1283 0
|
20天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
109 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
9天前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
51 19