当前位置: 首页 > news >正文

基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」

图片11.png

随着移动互联网的一路狂飙,手机已经成为人们的新器官。出门不带钥匙可以,不带手机却是万万不可以的。而手机上,小小的摄像头也越来越成为各位「vlogger」的口袋魔方。每天有超过数亿的照片和视频被上传到百度网盘中,这些照片和视频大多来自于用户自己的拍摄或收藏,覆盖的主题和内容相当广泛,包括人物、风景、动物、地标建筑、素材等。他们记录着生活,也通过灵感和创意展示着生活。但由数量庞大、种类繁多,这些图像资源的管理和搜索成为了用户的一大挑战。

截屏2023-03-22 19.39.21.png

在和用户的沟通中,“找照片的过程十分痛苦”引起了大家的共鸣。即使网盘提供了云上大空间供照片储存,基础分类搜索后的照片还是如同汪洋大海。有时候为了寻找一张在记忆中“闪现”的照片,需要长时间在时光轴里滑动。

「如果能通过 去年夏天我在海边的照片 这种关键词直接得到照片就好了」。

说干就干。

网盘的技术同学开始广泛调研市面上的图片搜索功能。研究发现,目前大部分都是基于标签的图片搜索方法。这往往需要用户手动或者AI帮助添加标签或关键词,才能进行检索和匹配。然而,由于一张图片往往有很多不同的内容和特征,标签的限制导致用户只能添加少量有限范围内的标签,诸如简单的“猫”,“日出”等,无法全面地描述图片的内容和特征。因此,现有的图片搜索无法响应用户更加复杂的图片描述。

「怎么办?」用户这样问我们,我们就这样问自己。

「精准精准再精准」

话不多说,先来看看优化后的实际效果

截屏2023-03-22 19.42.48.png

截屏2023-03-22 19.43.02.png

截屏2023-03-22 19.43.11.png

截屏2023-03-22 19.43.22.png

从「鸟」到「海边的鸟」,从「海边」定位到「我在海边」,从「宝宝」精准到「抱着宝宝逛街」……

百度网盘想做的,做成的,就是从「面」精准到「线」甚至到「点」。

为了解决这个问题,百度网盘引入了基于自然语言的图片内容语义检索方法,这种方法是利用深度学习和人工智能技术,将每张图片转化为一个向量表示,从而通过计算语言向量和视觉向量之间的相似度来进行搜索和匹配。由于向量表示比传统标签更加丰富,因此,能有效实现人们用自然语言搜索图片的目的。

「为什么用向量?」相信这也是很多“行友”的疑惑。

相比传统的标签搜索方法,基于向量的语义检索具有以下优点:

  • 用户输入的灵活度高:用户可以直接按照正常说话的方式进行检索,不需要考虑图片是什么标签;
  • 检索准确性高:由于向量可以全面地描述图片的内容和特征,因此搜索结果更加准确和全面;
  • 可检索的内容广:百度网盘采用百度文心跨模态大模型ERNIE-ViL技术(不错,openai有一个类似的技术clip,这也是最近风靡全球的AI绘画的核心模型),这种技术使用了海量网络数据进行训练,从而可以理解和识别广泛的图片内容,无论是人物、风景、动物、地标建筑、素材等各种领域的图片都不在话下;

因此,在百度网盘团队的努力下,我们真的做到了「精准精准再精准」,图片搜索也不再那么“难”了。

有「AI」,我们更「爱」搜了

实际技术产品化过程并非一帆风顺,我们遇到了很多问题,这也是业界很多相册管理工具未提供类似功能的原因。从项目立项、效果验证到产品化,我们花了超过四个月的时间,直到22年8月底正式上线和大家见面。“怎么做到的?” “如何理解自然语言” “还能更快搜到吗”……这些都是我们和用户共同关注的问题。

搜得到

像“穿鞋子的猫”、“穿正装的照片”这种,传统的标签检索很难搜到。因此,我们选择了语义向量。无论是OpenAI开源的CLIP,还是百度自研的融合了场景图知识的多模态预训练模型ERNIE-ViL,都很擅长解决语义匹配问题。

这类方法的核心原理是将检索文本和个人影像数据映射到同一语义向量空间,文本和个人影像数据向量之间的距离越近,相似度就越高。这样我们通过向量检索,来实现用中文文本查找对应图片的功能了。相比传统先打标签,再关键词搜索的方法,基于语义的检索方案,直接实现了端到端的语义匹配,能够避免语义的丢失。

图片12.png

搜得准

在网盘用户的实际搜索中,我们发现,用户存在着复杂多维度组合查询的需求。比如:去年我在三亚海边看日出的照片。其中包含了时间、地点、人物的信息,这就超出了语义向量的能力边界了,语义向量无法精准的判断时间、地点,也无法知道你是谁。

但是,经常拍照的用户应该会说「我们手机拍出来的照片,就包含了拍摄时间、经纬度等相关信息呀!」

没错,我们正是通过提取这些元信息,把经纬度转换成实际的街道名、场所名称从而用来做时间、地点的精确匹配。

「那怎么识别我是谁?」

别急,虽然识别“谁是你”相对复杂一些,但我们也找到了解决办法。在百度网盘备份过照片的用户,应该都知道智能分类。我们会把照片中出现的同一个人物的照片聚合出来,你可以自己给这个人物打上标签,比如“我自己”、“宝贝”等。我们便基于这个标签来做人物的搜索。有了这些信息,我们就可以实现,时间、地点、人物、事件组合的复杂搜索。回到上面这个例子,“去年我在三亚海边看日出的照片”,我们拿到这个请求,会首先解析出里面包含的各个元素:

  • 时间:去年

  • 地点:三亚

  • 人物:我

  • 事件:海边看日出

其中,时间、地点、人物可以用范围查询或者关键词查询来实现,事件适合用语义向量来实现,通过这样的组合查询,我们最终就能得到用户想要的结果。

有些用户反馈,图片的结果太靠后了,「在找图片的时候,总是要翻好几次才能看到,真难」

于是,我们增加了对用户搜索意图的理解,如果识别出来你是想要找图片,我们就会把图片的返回结果放在最上面。

图片13.png

搜得快

解决了效果方面的问题,又出现了新的挑战:如何将技术变成用户可使用的产品?由于成本太高,效率太低,很多相册APP并没有把这种功能开放给用户。

「无所谓,我会溜走」(划掉

说正经的!

影响速度的环节有很多,整个过程中,我们首先需要提前对用户的图片进行向量计算,并建立索引,然后查询的时候,能够快速的对用户的query进行分析并完成图片向量的检索,最终把结果排序后呈现给用户。这个流程中我们遇到了很多挑战:

图片15.png

图片16.png

端+云结合

  • 我们在云上对已备份的图片进行向量计算,避免了数据在用户设备和服务器之间公网传输的延时,也弥补了用户设备算力不足的问题,可以快速的完成向量计算的工作
  • 在云端完成向量计算后,通过实时数据同步通道,及时下发到用户设备本地建立索引,用户在查询的时候,可以直接在本地完成向量检索

端本地索引优化:为了节省用户本地的索引存储量,同时尽可能减少计算量,我们对索引进行了大量的压缩,优化后,即使图片规模达到10w,向量检索速度也可以达到ms(毫秒)级别,最终返回结果的延时能控制在秒级别。

端+云向量检索流程如下图所示:

图片17.png

  1. 请求云端计算文本“黄色的猫”的特征向量和LSH(Locality-Sensitive Hashing,局部敏感哈希)编码;

  2. 计算文本和图片LSH编码相等的维数,找到相等维数超过阈值的图片子集
    a. 这里使用的LSH编码具有如下特点:相同的维数越多,向量相似的概率越高
    b. 这样我们就找到了一批与查询的文本向量相似度较高的图片子集,可以节省后续向量相似度计算的次数。

  3. 在候选的图片子集中,计算图片向量与文本向量的相似度,按照相似度,从高到底返回

异构算力调度:除了要每天为新增的亿级别数据计算向量特征外,我们还需要持续的对用户存量数据进行计算。为了让有迫切需求的用户,能够尽快使用到这个功能,我们也提供了申请加速开通图片高级搜索的通道,优先为申请用户计算数据。为了利用一切可以计算的资源来加速计算效果,我们开发了一套能够统一管理CPU、GPU等异构资源的调度系统,充分利用闲置资源,来实现尽可能快的覆盖更多用户。

搜更多

除了图片语义检索,我们之前也收到了用户各种各样的找图需求,比如:想搜索图片里的文字、想给朋友圈文案配一张以前拍的图片。

「安排,统统安排!」

图片18.png

针对 「搜索图片里的文字」 , 用户可以在搜索筛选里开启,开启后可能需要等待文字提取完成

图片19.png

「我想要朋友圈文案配图片」你不妨直接搜一下,我们会给你推荐相册里最适合这句话的图片,就像

图片21.png

怎么用?

在百度网盘,搜索“高级图片搜索”,点击“开启高级图片搜索功能”,点击“立即体验”,等待图片计算并建立索引后即可体验,我们会在计算完成后发送PUSH提醒。

图片20.png

变成「黄色的猫」以后*

经历了种种曲折,项目最终成功上线。通过检测后台算力,我们高兴地看到申请高级图像搜索的用户占比正在慢慢提升。同时,用户也提出了一些建议和意见,比如图像搜索不够精细等问题。我们了解到,有的用户用这个功能管理视觉素材,还有的管理各种报销发票。前者需要更精细的特征提取,后者则需要引入文字ocr,通过把视觉和文本进行多模态融合搜索,才能满足用户需求。

另外针对有些用户提出的「用户自定义的精细化图像标签能力」,如“我和爸爸的合照”、“我的自拍照”等,这对我们模型训练和预测框架的伸缩性,提出了更高的要求。

用户不断多样化、个性化的需求,成为网盘产研例行工作讨论的输入,同时也促进我们继续在技术和产品上思考和尝试。

作为一个智能化的存储工具,网盘已经逐步成为人们日常生活和工作中必不可少的一部分。还记得很多年前,网盘在大家心中的形象局限于“网络硬盘”。甚至互相开玩笑说,「这几个T的空间,什么时候能填满啊!」现如今,这里填满了大家的生活、工作和学习的各种记录,并且也成为大家不可或缺的一部分。变成「黄色的猫」以后,我们感激于大家的信任,致力于不断的技术创新,让用户更快速、准确地找到所需的文件,带来全新的使用体验。

把「猫」变成「黄色的猫」,不是终点,而是一个更高的起点,我们前进的动力不停,学习的步履不止。我们致力于将这只「黄色的猫」赋予更多可能性,从而变成您贴心的朋友、同事与亲人。

最后,欢迎大家使用百度网盘的【高级图片搜索】功能并积极反馈,大家的鞭策将持续激励我们的成长。

相关文章:

基于文心一言的底层视觉理解,百度网盘把「猫」换成了「黄色的猫」

随着移动互联网的一路狂飙,手机已经成为人们的新器官。出门不带钥匙可以,不带手机却是万万不可以的。而手机上,小小的摄像头也越来越成为各位「vlogger」的口袋魔方。每天有超过数亿的照片和视频被上传到百度网盘中,这些照片和视频…...

安卓开发的环境配置教程

文章目录事先准备:下载 JDK、Gradle下载安装 Android Studio下载安装 Android SDK下载安装 ADB笔者的环境: Java 17.0.1 Gradle 8.0.1 Android Studio Electric Eel | 2022.1.1 Patch 1 Windows 10 教育版 64位 事先准备:下载 JDK、Gradl…...

【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程

文章目录教程适用版本一、简介主要功能组件开源地址二、开始搭建1.项目搭建与依赖管理2.服务注册与发现(Nacos安装)3.创建服务提供者4.创建服务消费者5.创建服务消费者(Feign)6.添加熔断机制(Sentinel)7.Sentinel熔断器仪表盘监控…...

关于自动机器学习flaml训练时的一些报错

一、版本背景flaml 1.1.3sciket-learn 0.23.0二、一路报错2.1、SyntaxError: future feature annotations is not definedTraceback (most recent call last):File "C:/Users/dell/Desktop/AI/run.py", line 151, in <module>model.autoMlArgs(queryDf,targe…...

【计算机视觉】消融实验(Ablation Study)是什么?

文章目录一、前言二、定义三、来历四、举例说明一、前言 我第一次见到消融实验&#xff08;Ablation Study&#xff09;这个概念是在论文《Faster R-CNN》中。 消融实验类似于我们熟悉的“控制变量法”。 假设在某目标检测系统中&#xff0c;使用了A&#xff0c;B&#xff0…...

Java毕业论文参考文献参考例子整理

[1]李庆民.基于java的软件agent开发环境的分析[J].数字技术与应用,2017,01:189.    [2]籍慧文.Web应用开发中JAVA编程语言的应用探讨[J].科技创新与应用,2017,07:90.    [3]卜令瑞.基于Java软件项目开发岗位的企业实践总结报告[J].职业,2016,32:124-125.    [4]肖成金,吕…...

C++ Primer第五版_第六章习题答案(21~30)

文章目录练习6.21练习6.22练习6.23练习6.24练习6.25练习6.26练习6.27练习6.28练习6.29练习6.30练习6.21 编写一个函数&#xff0c;令其接受两个参数&#xff1a;一个是int型的数&#xff0c;另一个是int指针。函数比较int的值和指针所指的值&#xff0c;返回较大的那个。在该函…...

SLAM算法之HectorSLAM,Gmapping,KartoSLAM,CoreSLAM和LagoSLAM

文章将介绍使用的基于机器人操作系统&#xff08;ROS&#xff09;框架工作的SLAM算法。 在ROS中提供的五种基于2D激光的SLAM算法分别是&#xff1a;HectorSLAM&#xff0c;Gmapping&#xff0c;KartoSLAM&#xff0c;CoreSLAM和LagoSLAM。当然最后还有比较经典的google开源的ca…...

phpstorm断点调试

环境&#xff1a;win10phpstorm2022phpstudy8lnmp 1、phpinfo(); 查看是否安装xdebug&#xff0c;没有走以下流程 2、phpstudy中切换不同版本php版本&#xff0c;有些版本不支持xdebug&#xff08;如php8.0.2&#xff09;&#xff0c;有些已经自带了&#xff08;如php7.3.9&a…...

做一个前端网页送给女朋友~轮播图+纪念日

文章目录1. 轮播图框架2. 轮播图大盒子实现1. 盒子及图片的可视化2. 将图片重叠起来并放入轮播图盒子中...相对定位与绝对定位3. 添加左右按钮4. 点击按钮跳转图片5. 鼠标离开图片轮播图按钮隐藏6. 添加小圆点按钮7. 点击小圆点跳转图片并且该小圆点变色8. 自动轮播9. 最后一步…...

CSDN 编程竞赛三十九期题解

竞赛总览 CSDN 编程竞赛三十九期&#xff1a;比赛详情 (csdn.net) 竞赛题解 题目1、圆小艺 最近小艺酱渐渐变成了一个圆滑的形状球&#xff0c;小艺酱开始变得喜欢上球&#xff01;小艺酱得到n个同心圆。小艺酱对着n个同心圆进行染色&#xff0c;相邻的圆范围内不能有相同的…...

ChatGPT来了你慌了吗?

文章目录一、ChatGPT是什么&#xff1f;一、ChatGPT到底多强大&#xff1f;三、各平台集成了ChatGPT插件&#xff1a;四、ChatGPT能否取代程序员&#xff1f;一、ChatGPT是什么&#xff1f; ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&…...

Dijkstra 算法

Dijkstra 算法&#xff08; 迪杰斯特拉算法&#xff09;&#xff0c; 又叫最短路径算法&#xff0c; 这是常见的图论中的最短路径算法&#xff0c; 由 Edsger W.Dijkstra 在 1959 年发表。 这种算法能够给定一个图中的源节点&#xff08; Source Node&#xff09;&#xff0c; …...

EIgamal 算法实现与解读

EIgamal 算法实现与解读 数学知识1.求原根2.求逆元快速幂求解EIgamal 算法1. Elgamal密钥产生2. Elgamal加密3. Elgamal解密效果如下:数学知识 1.求原根 如果g是p的原根,就是g^(p-1) = 1 (mod P)当且仅当指数为p-1的时候成立.(这里P是素数) 简单来说,g^i mod p ≠ g^j m…...

静态通讯录动态通讯录制作详解

&#x1f355;在本期的博客我们来向大家介绍一下静态通讯录的书写以及怎样将我们的静态通讯录更改为动态的模式。 &#x1f354;静态通讯录的创建 &#x1f355;就像是我们之前进行的完整程序逻辑的书写一样我们同样创建三个文件&#xff0c;两个 .c 文件&#xff0c;一个 .h 文…...

2023最新最详细【接口测试总结】

序章 ​ 说起接口测试&#xff0c;网上有很多例子&#xff0c;但是当初做为新手的我来说&#xff0c;看了不不知道他们说的什么&#xff0c;觉得接口测试&#xff0c;好高大上。认为学会了接口测试就能屌丝逆袭&#xff0c;走上人生巅峰&#xff0c;迎娶白富美。因此学了点开发…...

【java基础】Stream流的各种操作

文章目录基本介绍流的创建流的各种常见操作forEach方法filter方法map方法peek方法flatMap方法limit和skip方法distinct方法sorted方法收集结果收集为数组&#xff08;toArray&#xff09;收集为集合&#xff08;collect&#xff09;收集为Map关于流的一些说明&#xff08;终结操…...

【Python练习】序列结构

目录 一、实验目标 二、实验内容...

CDN加速缓存的定义与作用

一、CDN的含义CDN的全称是Content Delivery Network&#xff0c;即内容分发网络。CDN是在原有互联网的基础上再构建虚拟分发网络&#xff0c;利用部署在各地的边缘节点服务器&#xff0c;充分发挥其负载均衡、内容分发智能调度等功能&#xff0c;让用户能够就地拉取数据&#x…...

Java并发高频面试题

分享50道Java并发高频面试题。 线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创建开销大 为什么不受控&#xff1f; 系统资源有…...

CVPR 2023 | 旷视研究院入选论文亮点解读

近日&#xff0c;CVPR 2023 论文接收结果出炉。近年来&#xff0c;CVPR 的投稿数量持续增加&#xff0c;今年收到有效投稿 9155 篇&#xff0c;和 CVPR 2022 相比增加 12%&#xff0c;创历史新高。最终&#xff0c;大会收录论文 2360 篇&#xff0c;接收率为 25.78 %。本次&…...

Vue3 学习总结补充(一)

文章目录1、Vue3中为什么修改变量的值后&#xff0c;视图不更新&#xff1f;2、使用 ref 还是 reactive&#xff1f;3、reactive 为什么会有响应性连接丢失情况&#xff1f;4、watch的不同使用方法5、watchEffect和 watch 的区别区别1&#xff1a;数据源的区别区别2&#xff1a…...

使用ChatGPT 开放的 API 接口可以开发哪些自研工具?

使用ChatGPT开放的API接口,可以开发多种自研工具,例如: 智能聊天机器人:可以使用ChatGPT提供的语言生成能力,构建一个智能聊天机器人,能够根据用户的输入自动回复,完成自然语言交互。 文本生成工具:可以使用ChatGPT的文本生成能力,开发一个文本生成工具,例如自动生…...

I2C和SPI总线以及通信

通讯属性 概括 Serial/parallel 串行/并行Synchronous/asynchronous 同步/异步Point-to-point / bus 点对点 总线Half-duplex/full-duplex 半双工/全双工Master-slave/ equal partners 主从/对等single-ending / differential 单端/差分 点对点和总线 点对点通讯 只有两个通…...

Spring八股文

Bean的生命周期 1.通过反射生成对象 2.填充Bean的属性 3.调用aware接口的invokeAwareMethod方法&#xff0c;对BeanName、BeanFactory、BeanClassLoader对象的属性设值 4.调用BeanPostProcessor的前置处理方法&#xff0c;其中使用较多的是ApplicationContextPostProcessor…...

20 k8sMetric 简介

一. Metric 简介metrics-server 可实现 Kubernetes 的 Resource Metrics API&#xff08;metrics.k8s.io&#xff09;&#xff0c;通过此 API 可以查询 Pod 与 Node 的部分监控指标&#xff0c;Pod 的监控指标用于 HPA、VPA 与 kubectl top pods -n ns 命令&#xff0c;而 Node…...

面试问了解Linux内存管理吗?10张图给你安排的明明白白

linux内存管理&#xff0c;内存管理好像离我们很远&#xff0c;但这个知识点虽然冷门&#xff08;估计很多人学完根本就没机会用上&#xff09;但绝对是基础中的基础&#xff0c;这就像武侠中的内功修炼&#xff0c;学完之后看不到立竿见影的效果&#xff0c;但对你日后的开发工…...

【C++】内联函数inline

文章目录概念使用特性原理概念 C中内联函数的出现解决了C语言宏函数的不足&#xff0c;类似于宏展开&#xff0c;这种在函数调用处直接嵌入函数体的函数称为内联函数&#xff0c;又称内嵌函数或内置函数。 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内…...

C++演讲比赛流程管理系统_黑马

任务 学校演讲比赛&#xff0c;12人&#xff0c;两轮&#xff0c;第一轮淘汰赛&#xff0c;第二轮决赛 选手编号 [ 10001 - 10012 ] 分组比赛 每组6人 10个评委 去除最高分 最低分&#xff0c;求平均分 为该轮成绩 每组淘汰后三名&#xff0c;前三名晋级决赛 决赛 前三名胜出 …...

谈谈低代码的安全问题,一文全给你解决喽

低代码是一种软件开发方法&#xff0c;通过使用图形化用户界面和可视化建模工具&#xff0c;以及自动生成代码的技术&#xff0c;使得开发人员可以更快速地构建和发布应用程序。 作为近些年软件开发市场热门之一&#xff0c;市面上也涌现了许多低代码产品&#xff0c;诸如简道云…...

网络营销的网站建设/怎么策划一个营销方案

原标题&#xff1a;小程序日活超4亿&#xff0c;近10万商家开通直播&#xff0c;私域红利已来 &#xff01;9 月 9 日晚间消息&#xff0c;在 2020 腾讯全球数字生态大会微信专场上&#xff0c;微信团队透露&#xff0c;截止 2020 年8 月&#xff0c;小程序日活超过 4 亿&#…...

网站制作尺寸/网络营销的四个特点

声音也可以搜索了&#xff0c;可不是MP3搜索&#xff01; 向东博客 Findsounds的声音搜索不同于国内的某些MP3的搜索引擎&#xff0c;它可以可以搜索波…...

get attached file wordpress/重庆seo网络推广优化

获取元素DOM对象有很多种方法&#xff0c;以前一直在用getElementById和getElementsByTagName等&#xff0c;现在对这些方法和querySelector做一个总结&#xff0e; 常见的获取元素的方法有3种&#xff0c;分别是通过元素ID、通过标签名字和通过类名字来获取。 DOM提供了一个名…...

织梦本地做的网站内网访问不/建网站建设

可以使用 ABAQUS 软件来模拟 NiTi 材料的人工肌肉。ABAQUS 是一款专业的有限元分析软件&#xff0c;能够帮助用户进行结构分析、动力学分析、热学分析等。为了模拟 NiTi 材料的人工肌肉&#xff0c;首先需要确定肌肉的几何形状和材料参数。然后&#xff0c;可以使用 ABAQUS 的有…...

重庆市官方网站/惠州seo代理计费

假设您的DataFrame具有类似于以下内容的架构(即Assets和Revenue是数字)&#xff1a; df.printSchema() #root # |-- ID: long (nullable true) # |-- Assets: integer (nullable true) # |-- Revenue: integer (nullable true) 您可以在已设置的条件下将DataFrame自身设置为…...

竞网做的网站怎么/宁波seo深度优化平台

动态规划思想是将大问题分解成小问题&#xff0c;然后解决所有的小问题&#xff0c;最后把解组合起来就得到大问题的解。这个和分治法思想很类似&#xff0c;但是这里的小问题是有重叠的&#xff0c;分治处理的小问题都是独立的&#xff0c;有重叠就会有重复计算&#xff0c;为…...