随着挪动互联网的一路狂飙,手机曾经成为人们的新器官。出门不带钥匙能够,不带手机却是万万不能够的。而手机上,小小的摄像头也越来越成为各位「vlogger」的口袋魔方。每天有超过数亿的照片和视频被上传到百度网盘中,这些照片和视频大多来自于用户本人的拍摄或珍藏,笼罩的主题和内容相当宽泛,包含人物、风光、动物、地标修建、素材等。他们记录着生存,也通过灵感和创意展现着生存。但由数量宏大、品种繁多,这些图像资源的治理和搜寻成为了用户的一大挑战。
在和用户的沟通中,“找照片的过程非常苦楚”引起了大家的共鸣。即便网盘提供了云上大空间供照片贮存,根底分类搜寻后的照片还是如同汪洋大海。有时候为了寻找一张在记忆中“闪现”的照片,须要长时间在时光轴里滑动。
「如果能通过 去年夏天我在海边的照片 这种关键词间接失去照片就好了」。
说干就干。
网盘的技术同学开始宽泛调研市面上的图片搜寻性能。钻研发现,目前大部分都是基于标签的图片搜寻办法。这往往须要用户 手动 或者 AI 帮忙 增加标签或关键词,能力进行检索和匹配。然而,因为一张图片往往有很多不同的内容和特色,标签的限度导致用户只能增加大量无限范畴内的标签,诸如简略的“猫”,“日出”等,无奈全面地形容图片的内容和特色。因而,现有的图片搜寻无奈响应用户更加简单的图片形容。
「怎么办?」用户这样问咱们,咱们就这样问本人。
「精准精准再精准」
话不多说,先来看看优化后的实际效果
从「鸟」到「海边的鸟」,从「海边」定位到「我在海边」,从「宝宝」精准到「抱着宝宝逛街」……
百度网盘想做的,做成的,就是从「面」精准到「线」甚至到「点」。
为了解决这个问题,百度网盘引入了基于自然语言的图片内容语义检索办法,这种办法是利用深度学习和人工智能技术,将每张图片转化为一个向量示意,从而通过计算语言向量和视觉向量之间的类似度来进行搜寻和匹配。因为向量示意比传统标签更加丰盛,因而,能无效实现人们用自然语言搜寻图片的目标。
「为什么用向量?」置信这也是很多“行友”的纳闷。
相比传统的标签搜寻办法,基于向量的语义检索具备以下长处:
- 用户输出的灵便度高:用户能够间接依照失常谈话的形式进行检索,不须要思考图片是什么标签;
- 检索准确性高:因为向量能够全面地形容图片的内容和特色,因而搜寻后果更加精确和全面;
- 可检索的内容广:百度网盘采纳百度文心跨模态大模型 ERNIE-ViL 技术(不错,openai 有一个相似的技术 clip,这也是最近风靡寰球的 AI 绘画的外围模型),这种技术应用了海量网络数据进行训练,从而能够了解和辨认宽泛的图片内容,无论是人物、风光、动物、地标修建、素材等各种畛域的图片都不在话下;
因而,在百度网盘团队的致力下,咱们真的做到了「精准精准再精准」,图片搜寻也不再那么“难”了。
有「AI」,咱们更「爱」搜了
理论技术产品化过程并非一帆风顺,咱们遇到了很多问题,这也是业界很多相册管理工具未提供相似性能的起因。从我的项目立项、成果验证到产品化,咱们花了超过四个月的工夫,直到 22 年 8 月底正式上线和大家见面。“怎么做到的?”“如何了解自然语言”“还能更快搜到吗”……这些都是咱们和用户独特关注的问题。
搜失去
像“穿鞋子的猫”、“穿正装的照片”这种,传统的标签检索很难搜到。因而,咱们抉择了语义向量。无论是 OpenAI 开源的 CLIP,还是百度自研的交融了场景图常识的多模态预训练模型 ERNIE-ViL,都很善于解决语义匹配问题。
这类办法的外围原理是将检索文本和集体影像数据映射到同一语义向量空间,文本和集体影像数据向量之间的间隔越近,类似度就越高。这样咱们通过向量检索,来实现用中文文本查找对应图片的性能了。相比传统先打标签,再关键词搜寻的办法,基于语义的检索计划,间接实现了端到端的语义匹配,可能防止语义的失落。
搜得准
在网盘用户的理论搜寻中,咱们发现,用户存在着简单多维度组合查问的需要。比方:去年我在三亚海边看日出的照片。其中蕴含了工夫、地点、人物的信息,这就超出了语义向量的能力边界了,语义向量无奈精准的判断工夫、地点,也无奈晓得你是谁。
然而,常常拍照的用户应该会说「咱们手机拍进去的照片,就蕴含了拍摄工夫、经纬度等相干信息呀!」
没错,咱们正是通过提取这些元信息,把经纬度转换成理论的街道名、场合名称从而用来做工夫、地点的准确匹配。
「那怎么辨认我是谁?」
别急,尽管辨认“谁是你”绝对简单一些,但咱们也找到了解决办法。在百度网盘备份过照片的用户,应该都晓得智能分类。咱们会把照片中呈现的同一个人物的照片聚合进去,你能够本人给这个人物打上标签,比方“我本人”、“宝贝”等。咱们便基于这个标签来做人物的搜寻。有了这些信息,咱们就能够实现,工夫、地点、人物、事件组合的简单搜寻。回到下面这个例子,“去年我在三亚海边看日出的照片”,咱们拿到这个申请,会首先解析出外面蕴含的各个元素:
- 工夫:去年
- 地点:三亚
- 人物:我
- 事件:海边看日出
其中,工夫、地点、人物能够用范畴查问或者关键词查问来实现,事件适宜用语义向量来实现,通过这样的组合查问,咱们最终就能失去用户想要的后果。
有些用户反馈,图片的后果太靠后了,「在找图片的时候,总是要翻好几次能力看到,真难」
于是,咱们减少了对用户搜寻用意的了解,如果辨认进去你是想要找图片,咱们就会把图片的返回后果放在最下面。
搜得快
解决了成果方面的问题,又呈现了新的挑战:如何将技术变成用户可应用的产品?因为老本太高,效率太低,很多相册 APP 并没有把这种性能凋谢给用户。
「无所谓,我会溜走」(划掉
说正经的!
影响速度的环节有很多,整个过程中,咱们首先须要提前对用户的图片进行向量计算,并建设索引,而后查问的时候,可能疾速的对用户的 query 进行剖析并实现图片向量的检索,最终把后果排序后出现给用户。这个流程中咱们遇到了很多挑战:
端 + 云联合:
- 咱们在云上对已备份的图片进行向量计算,防止了数据在用户设施和服务器之间公网传输的延时,也补救了用户设施算力有余的问题,能够疾速的实现向量计算的工作
- 在云端实现向量计算后,通过实时数据同步通道,及时下发到用户设施本地建设索引,用户在查问的时候,能够间接在本地实现向量检索
端本地索引优化:为了节俭用户本地的索引存储量,同时尽可能减少计算量,咱们对索引进行了大量的压缩,优化后,即便图片规模达到 10w,向量检索速度也能够达到 ms(毫秒)级别,最终返回后果的延时能管制在秒级别。
端 + 云向量检索流程如下图所示:
- 申请云端计算文本“黄色的猫”的特征向量和 LSH(Locality-Sensitive Hashing,部分敏感哈希)编码;
- 计算文本和图片 LSH 编码相等的维数,找到相等维数超过阈值的图片子集
a. 这里应用的 LSH 编码具备如下特点:雷同的维数越多,向量类似的概率越高
b. 这样咱们就找到了一批与查问的文本向量类似度较高的图片子集,能够节俭后续向量类似度计算的次数。 - 在候选的图片子集中,计算图片向量与文本向量的类似度,依照类似度,从高到底返回
异构算力调度:除了要每天为新增的亿级别数据计算向量特色外,咱们还须要继续的对用户存量数据进行计算。为了让有迫切需要的用户,可能尽快应用到这个性能,咱们也提供了申请减速开明图片高级搜寻的通道,优先为申请用户计算数据。为了利用所有能够计算的资源来减速计算成果,咱们开发了一套可能对立治理 CPU、GPU 等异构资源的调度零碎,充分利用闲置资源,来实现尽可能快的笼罩更多用户。
搜更多
除了图片语义检索,咱们之前也收到了用户各种各样的找图需要,比方:想搜寻图片里的文字、想给朋友圈文案配一张以前拍的图片。
「安顿,通通安顿!」
针对 「搜寻图片里的文字」,用户能够在搜寻筛选里开启,开启后可能须要期待文字提取实现
「我想要朋友圈文案配图片」你无妨间接搜一下,咱们会给你举荐相册里最适宜这句话的图片,就像
怎么用?
在百度网盘,搜寻“高级图片搜寻”,点击“开启高级图片搜寻性能”,点击“立刻体验”,期待图片计算并建设索引后即可体验,咱们会在计算实现后发送 PUSH 揭示。
变成「黄色的猫」当前*
经验了种种波折,我的项目最终胜利上线。通过检测后盾算力,咱们快乐地看到申请高级图像搜寻的用户占比正在缓缓晋升。同时,用户也提出了一些倡议和意见,比方图像搜寻不够精密等问题。咱们理解到,有的用户用这个性能治理视觉素材,还有的治理各种报销发票。前者须要更精密的特征提取,后者则须要引入文字 ocr,通过把视觉和文本进行多模态交融搜寻,能力满足用户需要。
另外针对有些用户提出的「用户自定义的精细化图像标签能力」,如“我和爸爸的合照”、“我的自拍照”等,这对咱们模型训练和预测框架的伸缩性,提出了更高的要求。
用户一直多样化、个性化的需要,成为网盘产研例行工作探讨的输出,同时也促成咱们持续在技术和产品上思考和尝试。
作为一个智能化的存储工具,网盘曾经逐渐成为人们日常生活和工作中必不可少的一部分。还记得很多年前,网盘在大家心中的形象局限于“网络硬盘”。甚至相互开玩笑说,「这几个 T 的空间,什么时候能填满啊!」现如今,这里填满了大家的生存、工作和学习的各种记录,并且也成为大家不可或缺的一部分。变成「黄色的猫」当前,咱们感谢于大家的信赖,致力于一直的技术创新,让用户更疾速、精确地找到所需的文件,带来全新的应用体验。
把「猫」变成「黄色的猫」,不是起点,而是一个更高的终点,咱们后退的能源不停,学习的步履不止。咱们致力于将这只「黄色的猫」赋予更多可能性,从而变成您贴心的敌人、共事与亲人。
最初,欢送大家应用百度网盘的【高级图片搜寻】性能并踊跃反馈,大家的鞭策将继续激励咱们的成长。