习惯了搜索引擎的我们,在手机上找本地文件的时候往往却束手无策:如今每个人的智能手机上,存上千张照片已是常态,有时候想找某张具体的照片就像大海捞针。
不过在今年华为的 P60 系列发布会上出现了这样一项功能 —— 智慧搜图,基于多模态大模型技术在端侧轻量化应用,手机上第一次有了自然语言图片搜索能力。既然是自然语言,就意味着在找图这件事上可以对手机讲人话了。
如果记不得想找的照片是何时何地拍摄的,只大概记得照片中出现的人或物怎么办?只要把能想到的几个词写到搜索框里,智慧搜索就能给你找到:
或者用语音唤醒小艺用一句话形容想要找的照片内容,比如搜索「去年在长白山滑雪的照片」,就可以直接找到手机里所有那次去玩的照片:
再进一步,你也可以搜索「骑自行车的人」、「户外的聚会」等描述性的概念。
相比以前基于标签的照片搜索方式,智慧搜图可以让手机更加「聪明」,响应速度更快,输出结果更高效。结合多模态语义模型技术,华为的智慧搜图在云端对上亿级图文数据进行了预训练,对更通用化的语义拥有了理解能力。更重要的是,模型部署在端侧,搜索计算是在本地完成的,进一步保护隐私安全。
这不禁让人怀疑,华为的手机是不是已经有了破除图形验证码的能力?
手机自然语言搜图,为啥这么难?
以前在很多手机上,你可以通过输入时间、人物、地点等关键词找到想要的特定照片。这是通过 AI 算法识别图片类型和文字,以及地理信息等文件固有标签来实现的,不过一般来说,它们只能识别出有限的类别。
在使用「常规」方法时,你需要通过短标签及其组合进行搜索,例如「风景」、「猫」、「食物」等等,手机支持的短标签数量有限,只能满足你的一小部分意图,大部分时候还是需要手动去相册里翻找,效率很低。
图片
标签都给你打好了,但选择的种类有限。
这并不奇怪,因为在它的后端顶多是简单的图像识别模型,搜索的自由度趋近于无,当然也不能理解人的意图。在使用这样的系统时,有时候结果会变成让我们猜模型到底能识别哪些标签。
要想实现「智慧搜图」,AI 模型需要能同时理解自然语言与图像两种模态的数据,而在手机上,我们还需要使用一系列压缩算法尽可能利用有限的算力,并从工程角度尽量加快推理速度。
具体而言,先不管部署到手机端的困难,要想实现对图片和文本的语义级理解,让手机自己「看懂照片」,我们需要经历一段三步走的过程。
图片
物理世界产生的非结构化数据如图片、语音和文本,在 AI 算法中会被转化为结构化的多维向量,向量标识出关系,检索就是在计算向量之间的距离,通常距离越近相似度就越高。
构建智慧的搜图技术,首先需要训练多模态语义模型,通过对比学习令相同语义的文字与图片距离特别近,不同语义的数据距离特别远,从而把自然语言及图片等多模态数据转换成相同语义空间下的向量;其次,我们需要使用该多模态模型编码被检索的图片;最后当我们输入一句话时,手机就会通过检索系统快速地定位与内容相匹配的图片了。
在整个语义搜图的过程中,首要的挑战是如何更好地将语义相同的图片与文字匹配起来。多模态模型需要编码用户的个人图片,最好是将模型部署在手机端侧,而部署到手机端,就意味着必须对多模态模型进行压缩与加速,这里将需要大量的工程实践。
业界首个手机端多模态语义模型
这个「智慧搜图」的背后,是华为通过轻量化的多模态语义模型,让手机可以高效理解自然语言和照片含义,实现了业界首个可端侧部署的轻量化多模态语义模型。相比传统打标签的方式,它的体验可是要好太多了。我们不再需要猜测图片的标签,直接输入自然语言就能检索到对应的图片。毫不夸张地说,它让手机本地搜图,从难用跳到了好用。
基础:多模态模型
在人工智能领域里,Transformer 是个里程碑式的技术,它既催生了 ChatGPT 这样的 NLP 技术突破,也在视觉领域上拥有非常不错的效果。通过 Transformer 对文本与图片同时进行表征,再通过弱监督对比学习拉近相同语义的图片与文字,拉远不同语义的图片与文字,我们就能获得一个不错的多模态模型。
这其中的重点在于对比学习,如下图所示,常规的对比学习方法会将图片与文本分别编码为不同的向量,并将该向量映射到联合多模态语义空间之中。因为不同模态的数据表示之间可能存在差异,无法进行直接的比较,因此先将不同模态的数据映射到同一个多模态空间,从而有利于后续的模型训练。
图片
选自 arxiv: 2102.12092。
在多模态的对比学习中,其目标函数即让正样本对(上图蓝框部分,I1T1、I2T2... )相似度很高,负样本对(上图白框部分)相似度很低。通过这种训练,自然语言天然就能和图像匹配上,不同模态的数据就能对齐。
为了提升模态间的对齐效果,华为通过提高正样本的相关性,并在算法层面对负样本去噪,再借助更大、更高质量的数据源,提升模型表征的准确性,从而提升语义搜索的准确性和召回率。与以往基于有限的标签集合给图片打标签,再通过标签来进行搜索的方式相比,基于语义表征进行搜索的方式能大幅提升图片检索的灵活性。
优化:模型的极致压缩
多模态是当前非常热门的 AI 研究领域,但除了华为的「智慧搜图」,还没有人能把整个推理过程都部署到手机端。其中的工程难点,显然在于如何将多模态模型在效果基本无损失的情况下,压缩到能在手机等边缘设备上运行。
在这里,也许我们需要考虑整个模型架构的参数效率,优化模型结构以在最小的计算量上达到最优的效果。例如卷积神经网络中 EfficientNet,Transformer 类模型中的 Multi Query Attention,它们都尝试优化模型结构以令参数效率达到更优。「智慧搜图」也一样,通过优化多模态模型架构,使得整体训练能获得更好的效果。
除了技术上的更新,部署到移动端更大的挑战还是在工程上。与平常我们在 GPU 上训练与推理模型不同,移动端缺少便捷高效的算子实现,优化起来也困难重重。举例来说,手机端的 CPU 芯片基本是精简指令集 Arm 架构的,那么机器学习编译器在做优化时就需要考虑很多指令层面并行处理,来最大程度利用有限的计算力。
针对底层硬件的优化适配,华为将模型的海量矩阵乘法分解到手机端 CPU 与 NPU 等设备上,并通过图算融合等方式构建出能在手机端高效运行的底层算子,进而支持整个模型的高效推理。
总结来说,华为「智慧搜图」轻量化模型通过更多的数据、更优的算法等补偿性设计及一些模型轻量化技术,首次将多模态模型部署到手机端,从而提供更好的图搜体验。
实用:向量检索引擎
我们期望通过图片信息、时空维度等不同线索,快速找到与心中期待相符的图片,而图片与自然语言请求都是多模态语义空间的向量。因此,华为面向端侧场景自研轻量级向量检索引擎,支持对海量数据进行向量索引构建,且支持时空(时间、地点)语义一站式融合检索,可以便捷、高效地通过 Query 语义特征找出匹配的照片。
上图是一个简单的向量检索引擎,假设移动端多模态模型已经将相册内的图片编码为一条条向量,并持久化存储到「Vector Database」中。每当用户有需要搜索的请求,该请求将通过「Embedding Model」,即多模态模型中的文本 Encoder 部分,将文本编码为一条向量,该向量会从向量数据库中搜索以找到一批最接近的图像。
为了在移动端获得更好的搜图效果,华为自研的轻量化向量检索引擎做了一系列创新与优化。
在构建索引时,如果采用云侧常用的离线定期全量构建的方式,将会显著的增加功耗开销,因此华为在手机端采用增量实时写入的方式。并且出于可靠性目的,增量写入的数据会持久化到索引中。
同时,为了提高索引加载和检索的效率,索引的格式也是特别定制的,语义向量检索将地点、时间等信息作为索引的一部分,在检索时可以快速实现条件过滤,并返回与查询语句最相关的结果。只要关键字落在时间、地点等常见搜索条件,索引格式创新带来的加速,相比纯数据库检索,能快十多倍。
但定制化的索引格式也会带来一些困难,即新写入的索引数据不一定都保存在索引的尾部。例如在故宫新拍了一张照片,那么该照片向量的索引,需要插到同地点的那一部分索引当中,也就导致之前所有的索引都需要覆盖重写一遍。尤其是数据越来越多,如果我有十万张图片,难道每次拍一张照,十万多条索引都需要重写一遍?
在这里,华为再次找到了创新解法,其采用索引分段及压缩合并两种方式进行优化,索引分段能显著降低单次插入索引时间,通过定期进行压缩合并,完成已删除数据占用内存 / 磁盘资源的回收,达到了显著降低资源开销的目的。
一系列优化后,智慧搜图的能力也不仅限于高配置的旗舰级手机。除目前的 P60 系列和 Mate X3 之外,更多设备未来也会随 HarmonyOS 3.1 的升级陆续获得这样的能力。
智慧搜索:打造 HarmonyOS 生态的系统级入口
当然,最新的 HarmonyOS 3.1 版中,智慧搜图只是众多新能力的一小部分。光是搜索上,华为就带来了不少黑科技。
除了智慧搜图之外,华为智慧搜索将不断跨越不同 App、端侧设备、云端和本地的边界,实现真正意义上的全局搜索,结合华为长期实践的「软硬芯云一体化」能力,让端侧预置 AI 模型实现毫秒级响应速度,消除跨终端联动的延迟感,实现「多台设备合体」的搜索体验。
现在是以 App 为主的移动互联网时代,搜索有很大一部分已从网页转移到了更封闭的 App 上,华为智慧搜索却可以做到从一站式的入口获取全局内容,打破信息孤岛。
在打通所有边界之后,华为还通过 AI 技术实现了高效率的服务流转和更聪明的「意图搜索」能力。让搜索引擎理解人的意图,提供最合适的智慧服务,手机上的搜索框再也不是简单的查询工具。
还记得四年前华为在开发者大会上发布的初版 HarmonyOS 吗?当时 HarmonyOS 的定义是一个全场景分布式系统,现在的 HarmonyOS 已经发展出了丰富的生态,下一步要做的则是统一:通过系统级能力的提升做到一个框架,掌控全局。
这种整合落到搜索上,就是无感知的大范围能力调用和响应,华为内部将其称为「全搜」能力。智慧搜索或将成为 HarmonyOS 生态的系统级入口,带来远超搜索框定义的功能与服务。
当需求不再被设备和形式所限制,一切以人为中心,这才是万物互联时代该有的样子。这也让我们对下一个 HarmonyOS 的产品,充满了期待。