基于視覺大模型,百度網(wǎng)盤把「貓」換成了
隨著移動(dòng)互聯(lián)網(wǎng)的一路狂飆,手機(jī)已經(jīng)成為人們的新器官。出門不帶鑰匙可以,不帶手機(jī)卻是萬萬不可以的。而手機(jī)上,小小的攝像頭也越來越成為各位「vlogger」的口袋魔方。每天有超過數(shù)億的照片和視頻被上傳到百度網(wǎng)盤中,這些照片和視頻大多來自于用戶自己的拍攝或收藏,覆蓋的主題和內(nèi)容相當(dāng)廣泛,包括人物、風(fēng)景、動(dòng)物、地標(biāo)建筑、素材等。他們記錄著生活,也通過靈感和創(chuàng)意展示著生活。但由于數(shù)量龐大、種類繁多,這些圖像資源的管理和搜索成為了用戶的一大挑戰(zhàn)。
“好難找啊!”
在和用戶的溝通中,“找照片的過程十分痛苦”引起了大家的共鳴。即使網(wǎng)盤提供了云上大空間供照片儲(chǔ)存,基礎(chǔ)分類搜索后的照片還是如同汪洋大海。有時(shí)候?yàn)榱藢ふ乙粡堅(jiān)谟洃浿小伴W現(xiàn)”的照片,需要長時(shí)間在時(shí)光軸里滑動(dòng)。
「如果能通過?去年夏天我在海邊的照片?這種關(guān)鍵詞直接得到照片就好了」。
說干就干。
網(wǎng)盤的技術(shù)同學(xué)開始廣泛調(diào)研市面上的圖片搜索功能。研究發(fā)現(xiàn),目前大部分都是基于標(biāo)簽的圖片搜索方法。這往往需要用戶手動(dòng)或者AI幫助添加標(biāo)簽或關(guān)鍵詞,才能進(jìn)行檢索和匹配。然而,由于一張圖片往往有很多不同的內(nèi)容和特征,標(biāo)簽的限制導(dǎo)致用戶只能添加少量有限范圍內(nèi)的標(biāo)簽,諸如簡單的“貓”,“日出”等,無法全面地描述圖片的內(nèi)容和特征。因此,現(xiàn)有的圖片搜索無法響應(yīng)用戶更加復(fù)雜的圖片描述。
「怎么辦?」用戶這樣問我們,我們就這樣問自己。
「精準(zhǔn)精準(zhǔn)再精準(zhǔn)」
話不多說,先來看看優(yōu)化后的實(shí)際效果:




從「鳥」到「海邊的鳥」,從「海邊」定位到「我在海邊」,從「寶寶」精準(zhǔn)到「抱著寶寶逛街」……
百度網(wǎng)盤想做的,做成的,就是從「面」精準(zhǔn)到「線」甚至到「點(diǎn)」。
為了解決這個(gè)問題,百度網(wǎng)盤引入了基于自然語言的圖片內(nèi)容語義檢索方法,這種方法是利用深度學(xué)習(xí)和人工智能技術(shù),將每張圖片轉(zhuǎn)化為一個(gè)向量表示,從而通過計(jì)算語言向量和視覺向量之間的相似度來進(jìn)行搜索和匹配。由于向量表示比傳統(tǒng)標(biāo)簽更加豐富,因此,能有效實(shí)現(xiàn)人們用自然語言搜索圖片的目的。
「為什么用向量?」相信這也是很多“行友”的疑惑。
相比傳統(tǒng)的標(biāo)簽搜索方法,基于向量的語義檢索具有以下優(yōu)點(diǎn):
用戶輸入的靈活度高:用戶可以直接按照正常說話的方式進(jìn)行檢索,不需要考慮圖片是什么標(biāo)簽;
檢索準(zhǔn)確性高:由于向量可以全面地描述圖片的內(nèi)容和特征,因此搜索結(jié)果更加準(zhǔn)確和全面;
可檢索的內(nèi)容廣:百度網(wǎng)盤采用百度文心·CV大模型VIMER-ViLP,這種技術(shù)使用了海量網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行訓(xùn)練,從而可以理解和識(shí)別廣泛的圖片內(nèi)容,無論是人物、風(fēng)景、動(dòng)物、地標(biāo)建筑、素材等各種領(lǐng)域的圖片都不在話下;
因此,在百度網(wǎng)盤團(tuán)隊(duì)的努力下,我們真的做到了「精準(zhǔn)精準(zhǔn)再精準(zhǔn)」,圖片搜索也不再那么“難”了。
有「AI」,我們更「愛」搜了
實(shí)際技術(shù)產(chǎn)品化過程并非一帆風(fēng)順,我們遇到了很多問題,這也是業(yè)界很多相冊管理工具未提供類似功能的原因。從項(xiàng)目立項(xiàng)、效果驗(yàn)證到產(chǎn)品化,我們花了超過四個(gè)月的時(shí)間,直到22年8月底正式上線和大家見面。“怎么做到的?” “如何理解自然語言” “還能更快搜到嗎”……這些都是我們和用戶共同關(guān)注的問題。
01 搜得到
像“穿鞋子的貓”“穿正裝的照片”這種,傳統(tǒng)的標(biāo)簽檢索很難搜到。因此,我們選擇了語義向量。無論是OpenAI開源的CLIP,還是百度自研的融合了場景圖知識(shí)的多模態(tài)預(yù)訓(xùn)練文心·CV大模型VIMER-ViLP,都很擅長解決語義匹配問題。
這類方法的核心原理是將檢索文本和個(gè)人影像數(shù)據(jù)映射到同一語義向量空間,文本和個(gè)人影像數(shù)據(jù)向量之間的距離越近,相似度就越高。這樣我們通過向量檢索,來實(shí)現(xiàn)用中文文本查找對應(yīng)圖片的功能了。相比傳統(tǒng)先打標(biāo)簽,再關(guān)鍵詞搜索的方法,基于語義的檢索方案,直接實(shí)現(xiàn)了端到端的語義匹配,能夠避免語義的丟失。

02 搜得準(zhǔn)
在網(wǎng)盤用戶的實(shí)際搜索中,我們發(fā)現(xiàn),用戶存在著復(fù)雜多維度組合查詢的需求。比如:去年我在三亞海邊看日出的照片。其中包含了時(shí)間、地點(diǎn)、人物的信息,這就超出了語義向量的能力邊界了,語義向量無法精準(zhǔn)的判斷時(shí)間、地點(diǎn),也無法知道你是誰。
但是,經(jīng)常拍照的用戶應(yīng)該會(huì)說「我們手機(jī)拍出來的照片,就包含了拍攝時(shí)間、經(jīng)緯度等相關(guān)信息呀!」
沒錯(cuò),我們正是通過提取這些元信息,把經(jīng)緯度轉(zhuǎn)換成實(shí)際的街道名、場所名稱從而用來做時(shí)間、地點(diǎn)的精確匹配。
「那怎么識(shí)別我是誰?」
別急,雖然識(shí)別“誰是你”相對復(fù)雜一些,但我們也找到了解決辦法。在百度網(wǎng)盤備份過照片的用戶,應(yīng)該都知道智能分類。我們會(huì)把照片中出現(xiàn)的同一個(gè)人物的照片聚合出來,你可以自己給這個(gè)人物打上標(biāo)簽,比如“我自己”“寶貝”等。我們便基于這個(gè)標(biāo)簽來做人物的搜索。有了這些信息,我們就可以實(shí)現(xiàn),時(shí)間、地點(diǎn)、人物、事件組合的復(fù)雜搜索?;氐缴厦孢@個(gè)例子,“去年我在三亞海邊看日出的照片”,我們拿到這個(gè)請求,會(huì)首先解析出里面包含的各個(gè)元素:
時(shí)間:去年
地點(diǎn):三亞
人物:我
事件:海邊看日出
其中,時(shí)間、地點(diǎn)、人物可以用范圍查詢或者關(guān)鍵詞查詢來實(shí)現(xiàn),事件適合用語義向量來實(shí)現(xiàn),通過這樣的組合查詢,我們最終就能得到用戶想要的結(jié)果。
有些用戶反饋,圖片的結(jié)果太靠后了,「在找圖片的時(shí)候,總是要翻好幾次才能看到,真難」。
于是,我們增加了對用戶搜索意圖的理解,如果識(shí)別出來你是想要找圖片,我們就會(huì)把圖片的返回結(jié)果放在最上面。

03 搜得快
解決了效果方面的問題,又出現(xiàn)了新的挑戰(zhàn):如何將技術(shù)變成用戶可使用的產(chǎn)品?由于成本太高,效率太低,很多相冊APP并沒有把這種功能開放給用戶。
影響速度的環(huán)節(jié)有很多,整個(gè)過程中,我們首先需要提前對用戶的圖片進(jìn)行向量計(jì)算,并建立索引,然后查詢的時(shí)候,能夠快速的對用戶的query進(jìn)行分析并完成圖片向量的檢索,最終把結(jié)果排序后呈現(xiàn)給用戶。這個(gè)流程中我們遇到了很多挑戰(zhàn):


端+云結(jié)合
我們在云上對已備份的圖片進(jìn)行向量計(jì)算,避免了數(shù)據(jù)在用戶設(shè)備和服務(wù)器之間公網(wǎng)傳輸?shù)难訒r(shí),也彌補(bǔ)了用戶設(shè)備算力不足的問題,可以快速的完成向量計(jì)算的工作
在云端完成向量計(jì)算后,通過實(shí)時(shí)數(shù)據(jù)同步通道,及時(shí)下發(fā)到用戶設(shè)備本地建立索引,用戶在查詢的時(shí)候,可以直接在本地完成向量檢索
端本地索引優(yōu)化
為了節(jié)省用戶本地的索引存儲(chǔ)量,同時(shí)盡可能減少計(jì)算量,我們對索引進(jìn)行了大量的壓縮,優(yōu)化后,即使圖片規(guī)模達(dá)到10w,向量檢索速度也可以達(dá)到ms(毫秒)級別,最終返回結(jié)果的延時(shí)能控制在秒級別。
端+云向量檢索流程如下圖所示:

1.請求云端計(jì)算文本“黃色的貓”的特征向量和LSH(Locality-Sensitive Hashing,局部敏感哈希)編碼;
2.計(jì)算文本和圖片LSH編碼相等的維數(shù),找到相等維數(shù)超過閾值的圖片子集
這里使用的LSH編碼具有如下特點(diǎn):相同的維數(shù)越多,向量相似的概率越高
這樣我們就找到了一批與查詢的文本向量相似度較高的圖片子集,可以節(jié)省后續(xù)向量相似度計(jì)算的次數(shù)。
3.在候選的圖片子集中,計(jì)算圖片向量與文本向量的相似度,按照相似度,從高到低返回
異構(gòu)算力調(diào)度
除了要每天為新增的億級別數(shù)據(jù)計(jì)算向量特征外,我們還需要持續(xù)的對用戶存量數(shù)據(jù)進(jìn)行計(jì)算。為了讓有迫切需求的用戶,能夠盡快使用到這個(gè)功能,我們也提供了申請加速開通圖片高級搜索的通道,優(yōu)先為申請用戶計(jì)算數(shù)據(jù)。為了利用一切可以計(jì)算的資源來加速計(jì)算效果,我們開發(fā)了一套能夠統(tǒng)一管理CPU、GPU等異構(gòu)資源的調(diào)度系統(tǒng),充分利用閑置資源,來實(shí)現(xiàn)盡可能快的覆蓋更多用戶。
04 搜更多
除了圖片語義檢索,我們之前也收到了用戶各種各樣的找圖需求,比如:想搜索圖片里的文字、想給朋友圈文案配一張以前拍的圖片。
針對「搜索圖片里的文字」,用戶可以在搜索篩選里開啟,開啟后可能需要等待文字提取完成。

「我想要朋友圈文案配圖片」你不妨直接搜一下,我們會(huì)給你推薦相冊里最適合這句話的圖片,就像??

怎么用?
在百度網(wǎng)盤,搜索“高級圖片搜索”,點(diǎn)擊“開啟高級圖片搜索功能”,點(diǎn)擊“立即體驗(yàn)”,等待圖片計(jì)算并建立索引后即可體驗(yàn),我們會(huì)在計(jì)算完成后發(fā)送PUSH提醒。

變成「黃色的貓」以后
經(jīng)歷了種種曲折,項(xiàng)目最終成功上線。通過檢測后臺(tái)算力,我們高興地看到申請高級圖像搜索的用戶占比正在慢慢提升。同時(shí),用戶也提出了一些建議和意見,比如圖像搜索不夠精細(xì)等問題。我們了解到,有的用戶用這個(gè)功能管理視覺素材,還有的管理各種報(bào)銷發(fā)票。前者需要更精細(xì)的特征提取,后者則需要引入文字OCR,通過把視覺和文本進(jìn)行多模態(tài)融合搜索,才能滿足用戶需求。
另外針對有些用戶提出的「用戶自定義的精細(xì)化圖像標(biāo)簽?zāi)芰Α?,如“我和爸爸的合照”“我的自拍照”等,這對我們模型訓(xùn)練和預(yù)測框架的伸縮性,提出了更高的要求。
用戶不斷多樣化、個(gè)性化的需求,成為網(wǎng)盤產(chǎn)研例行工作討論的輸入,同時(shí)也促進(jìn)我們繼續(xù)在技術(shù)和產(chǎn)品上思考和嘗試。
作為一個(gè)智能化的存儲(chǔ)工具,網(wǎng)盤已經(jīng)逐步成為人們?nèi)粘I詈凸ぷ髦斜夭豢缮俚囊徊糠帧_€記得很多年前,網(wǎng)盤在大家心中的形象局限于“網(wǎng)絡(luò)硬盤”。甚至互相開玩笑說,「這幾個(gè)T的空間,什么時(shí)候能填滿??!」現(xiàn)如今,這里填滿了大家的生活、工作和學(xué)習(xí)的各種記錄,并且也成為大家不可或缺的一部分。變成「黃色的貓」以后,我們感激于大家的信任,致力于不斷的技術(shù)創(chuàng)新,讓用戶更快速、準(zhǔn)確地找到所需的文件,帶來全新的使用體驗(yàn)。
把「貓」變成「黃色的貓」,不是終點(diǎn),而是一個(gè)更高的起點(diǎn),我們前進(jìn)的動(dòng)力不停,學(xué)習(xí)的步履不止。我們致力于將這只「黃色的貓」賦予更多可能性,從而變成您貼心的朋友、同事與親人。
最后,歡迎大家使用百度網(wǎng)盤的【高級圖片搜索】功能并積極反饋,大家的鞭策將持續(xù)激勵(lì)我們的成長。