<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          構(gòu)建可以查找相似圖像的圖像搜索引擎的深度學(xué)習(xí)技術(shù)詳解

          共 4713字,需瀏覽 10分鐘

           ·

          2022-02-25 17:50

          來源:DeepHub IMBA

          本文約3400字,建議閱讀7分鐘

          本文為你介紹如何查找相似圖像的理論基礎(chǔ)并且使用一個(gè)用于查找商標(biāo)的系統(tǒng)為例介紹相關(guān)的技術(shù)實(shí)現(xiàn)。

          在本文中將介紹如何查找相似圖像的理論基礎(chǔ)并且使用一個(gè)用于查找商標(biāo)的系統(tǒng)為例介紹相關(guān)的技術(shù)實(shí)現(xiàn),本文提供有關(guān)在圖像檢索任務(wù)中使用的推薦方法的背景信息。閱讀本文后你將有能夠從頭開始創(chuàng)建類似圖像的搜索引擎的能力。

          圖像檢索(又名基于內(nèi)容的圖像檢索Content-Based Image Retrieval 或 CBIR)是任何涉及圖像的搜索的基礎(chǔ)。

          上圖來自文章Recent Advance in Content-based Image Retrieval: A Literature Survey (2017) arxiv:1706.06064


          “按照片進(jìn)行搜索”方式已經(jīng)出現(xiàn)在各個(gè)領(lǐng)域,特別是在電子商務(wù)網(wǎng)站中(例如淘寶),并且 “通過關(guān)鍵詞搜索圖片”(對圖片內(nèi)容的理解)早已被谷歌、百度,bing等搜索引擎使用(圖片搜索)。我認(rèn)為自從計(jì)算機(jī)視覺界轟動(dòng)一時(shí)的 CLIP: Connecting Text and Images 出現(xiàn)后,這種方法的全球化將會(huì)加速。

          在本文中,將只討論研究計(jì)算機(jī)視覺中的神經(jīng)網(wǎng)絡(luò)的圖片搜索方法。

          基礎(chǔ)服務(wù)組件



          步驟 1. 訓(xùn)練模型。該模型可以在經(jīng)典的 CV 或基于神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上制作。模型輸入——圖像,輸出——D維的特征嵌入。在傳統(tǒng)的情況下,它可以是 SIFT-descriptor + Bag of Visual Words 的組合。在神經(jīng)網(wǎng)絡(luò)的情況下,可以是像 ResNet、EfficientNet 等這樣的標(biāo)準(zhǔn)主干 + 復(fù)雜的池化層 。如果有足夠的數(shù)據(jù),神經(jīng)網(wǎng)絡(luò)幾乎總是表現(xiàn)得很好,所以我們將專注于它們。

          步驟 2. 索引圖像。索引是在所有圖像上運(yùn)行經(jīng)過訓(xùn)練的模型,并將獲得的嵌入寫入特殊索引以進(jìn)行快速搜索的過程。

          步驟 3. 搜索。使用用戶上傳的圖像,通過模型獲得嵌入,并將該嵌入與數(shù)據(jù)庫(索引)中的其他圖像的嵌入進(jìn)行比較,并且搜索結(jié)果可以按照相關(guān)性排序。

          神經(jīng)網(wǎng)絡(luò)和度量學(xué)習(xí)



          在尋找相似性任務(wù)中,神經(jīng)網(wǎng)絡(luò)的作用是特征提取器(主干網(wǎng)絡(luò))。主干網(wǎng)的選擇取決于數(shù)據(jù)的數(shù)量和復(fù)雜性——可以考慮從 ResNet18 到 Visual Transformer 的所有模型。

          圖像檢索中模型的第一個(gè)特點(diǎn)是是神經(jīng)網(wǎng)絡(luò)頭的設(shè)計(jì)。在Image Retrieval 排行榜(https://kobiso.github.io/Computer-Vision-Leaderboard/cars.html)上,它們通過parallel pools 、Batch Drop Block等技術(shù),可以獲得使輸出特征圖的激活分布更均勻的最佳圖像特征描述。

          第二個(gè)主要的特征是損失函數(shù)的選擇。僅在 Deep Image Retrieval: A Survey (arxiv 2101.11282)中,就有十幾個(gè)推薦的可用于配對訓(xùn)練的損失函數(shù)。?所有這些損失的主要目的都是訓(xùn)練神經(jīng)網(wǎng)絡(luò)將圖像轉(zhuǎn)換為線性可分空間的向量,以便進(jìn)一步通過余弦或歐幾里德距離比較這些向量:相似的圖像將具有緊密的嵌入,不相似的圖像將距離則比較遙遠(yuǎn)。下面我們看看幾個(gè)主要的損失函數(shù)。


          損失函數(shù)


          1、Contrastive Loss


          這是雙重?fù)p失,即對象通過彼此之間的距離進(jìn)行比較。


          如果這些圖像實(shí)際上相似,則神經(jīng)網(wǎng)絡(luò)會(huì)因圖像 p 和 q 的嵌入彼此之間的距離過遠(yuǎn)而受到懲罰。如果圖像實(shí)際上是彼此不同,但嵌入距離較近也會(huì)受到懲罰,但是在這種情況下設(shè)置了邊界 m(例如,0.5),這個(gè)設(shè)置是認(rèn)為神經(jīng)網(wǎng)絡(luò)已經(jīng)應(yīng)對了“分離”不同圖像的任務(wù),不需要進(jìn)行過多的懲罰。

          2、Triplet Loss


          這個(gè)損失的目標(biāo)是最小化anchor到positive的距離,最大化anchor到negative的距離。Triplet Loss 最早是在 Google 的 FaceNet 關(guān)于人臉識(shí)別的論文中引入的,長期以來一直是最先進(jìn)的解決方案。


          3、N-tupled Loss


          N-tupled Loss是Triplet Loss 的一種發(fā)展,它也采用 anchor 和 positive,但使用多個(gè)negative樣本而不是一個(gè)negative樣本。


          4、Angular Additive Margin (ArcFace)

          雙重?fù)p失的問題在于選擇anchor、positive和negative的組合——如果它們只是從數(shù)據(jù)集中均勻隨機(jī)抽取,那么就會(huì)出現(xiàn)“l(fā)ight pairs”的問題,某些圖像對的損失將為 0這樣會(huì)網(wǎng)絡(luò)非常快的收斂到一個(gè)狀態(tài),因?yàn)槲覀兊妮斎胫械拇蠖鄶?shù)樣本對它來說很“容易”,當(dāng)損失為0時(shí)網(wǎng)絡(luò)就停止學(xué)習(xí)了。為了避免這個(gè)問題,ArcFace為樣本的配對提出復(fù)雜的挖掘技術(shù)—— hard negative和hard positive挖掘。對這方面感興趣的可以看看一個(gè)叫PML 庫,它實(shí)現(xiàn)了許多挖掘方法,該庫包含很多關(guān)于 PyTorch 上的 Metric Learning 任務(wù)的有用信息,有興趣的可以多關(guān)注下。


          light pairs問題的另一個(gè)解決方案是分類損失。ArcFace主要思想是在通常的交叉熵中添加一個(gè)縮進(jìn) m,它可以使同類圖像的嵌入分布在該類的質(zhì)心區(qū)域中心周圍,以便它們都與其他類的嵌入集群分開最小的角度 m。

          這是一個(gè)完美的損失功能,尤其是在使用MegaFace 進(jìn)行基準(zhǔn)測試時(shí)。但是ArcFace需要在有分類標(biāo)記的情況下才會(huì)起作用。畢竟如果沒有分類的標(biāo)記是無法計(jì)算交叉熵的,對吧。

          上圖展示了具有單類和多類標(biāo)記時(shí)選擇損失函數(shù)的推薦(如果沒有標(biāo)記也可以通過計(jì)算樣本的多標(biāo)簽向量之間的交集百分比從后者派生成匹配對的標(biāo)記)。

          池化


          在神經(jīng)網(wǎng)絡(luò)架構(gòu)中池化也會(huì)經(jīng)常被用到,下面介紹圖像檢索任務(wù)中使用的幾個(gè)池化層。

          1、R-MAC

          Regional Maximum Activation of Convolutions (R-MAC)可以看作一個(gè)池化層,它接收神經(jīng)網(wǎng)絡(luò)的輸出特征圖(在全局池化或分類層之前)并返回根據(jù)不同窗口計(jì)算輸出激活總和的向量描述,其中每個(gè)窗口的激活是每個(gè)通道獨(dú)立的取這個(gè)窗口的最大值。


          這種操作是通過圖像在不同尺度上的局部特征創(chuàng)建了更豐富的特征描述。這個(gè)描述符本身就是是一個(gè)嵌入的向量,所以它可以直接輸送到loss函數(shù)。

          2、Generalized Mean

          Generalized Mean(GeM)是一個(gè)可以提高輸出描述符的質(zhì)量簡單的池化操作,它將lambda范式應(yīng)用到平均池化操作中。通過增加lambda,使網(wǎng)絡(luò)聚焦于圖像的重要部分,這在某些任務(wù)中是很有效的。


          距離的測量


          1、索引

          高質(zhì)量搜索相似圖像的另一個(gè)關(guān)鍵點(diǎn)是排名,即顯示給定查詢的最相關(guān)結(jié)果。它的主要度量是建立索引的速度、搜索的速度和消耗的內(nèi)存。

          最簡單的方法是直接使用嵌入向量進(jìn)行暴力的搜索,例如使用余弦距離。但是當(dāng)有數(shù)據(jù)量很大時(shí)就會(huì)出現(xiàn)問題——數(shù)百萬、數(shù)千萬甚至更多。搜索速度明顯降低。


          這些問題可以以犧牲質(zhì)量為代價(jià)來解決——通過壓縮(量化)而不是以原始形式存儲(chǔ)嵌入。同時(shí)也改變了搜索策略——不是使用暴力搜索,而是嘗試用最小的比較次數(shù)來找到最接近給定查詢的嵌入向量。有大量的高效的框架來近似搜索最接近的對象。例如NMSLIB, Spotify Annoy, Facebook Faiss, Google Scann。除了機(jī)器學(xué)習(xí)的庫以外,傳統(tǒng) Elasticsearch在7.3 以后也支持向量的查詢。

          2、重排

          信息檢索領(lǐng)域的研究人員很早早就發(fā)現(xiàn)了:在收到原始搜索結(jié)果后,可以通過某種方式對集合進(jìn)行重新排序來改進(jìn)搜索結(jié)果的質(zhì)量。


          使用最接近搜索輸入的 top-k 來生成新的嵌入, 在最簡單的情況下可以取平均向量。如上圖所示,還可以對嵌入進(jìn)行加權(quán),例如通過問題中的距離或與請求的余弦距離進(jìn)行加權(quán)排序。

          3、k-reciprocal


          k-reciprocal 是一組來自 top-k 的元素包括最接近請求本身的 k 個(gè)元素, 在這個(gè)集合的基礎(chǔ)上構(gòu)建了對結(jié)果進(jìn)行重新排序的過程,其中之一是在Re-ranking Person Re-identification with k-reciprocal Encoding一文中進(jìn)行的描述。k-reciprocal 比 k最近鄰更接近查詢。因此可以粗略地將 k-reciprocal 集中的元素視為已知正樣本,并更改加權(quán)規(guī)則。原始論文中包含大量計(jì)算,這超出了本文的范圍,建議有興趣的讀者閱讀。

          驗(yàn)證指標(biāo)


          最后就是檢查類似搜索質(zhì)量的部分。初學(xué)者在第一次開始從事圖像檢索項(xiàng)目時(shí)可能不會(huì)注意到此任務(wù)中的許多細(xì)微之處。

          讓我們看一下圖像檢索任務(wù)中這些流行的指標(biāo):precision@k、recall@k、R-precision、mAP 和 nDCG。

          1、precision@R


          優(yōu)點(diǎn):顯示相關(guān)的 top-k 的百分比。
          缺點(diǎn):
          • 對給定查詢的相關(guān)樣本的數(shù)量非常敏感,可能產(chǎn)生對搜索質(zhì)量的非客觀評估,因?yàn)椴煌牟樵冇胁煌瑪?shù)量的相關(guān)結(jié)果
          • 僅當(dāng)所有查詢的相關(guān)數(shù) >= k 時(shí),才有可能達(dá)到1

          2、R-precision


          與precision@k 相同,其中k 設(shè)置為等于相關(guān)查詢的數(shù)量。

          優(yōu)點(diǎn):對precision@k中數(shù)字k的敏感性消失,度量變得穩(wěn)定
          缺點(diǎn):必須知道與查詢請求相關(guān)的樣本總數(shù)(如果不是所有相關(guān)的都被標(biāo)記,會(huì)產(chǎn)生問題)

          3、Recall@k

          在 top-k 中找到的相關(guān)項(xiàng)目的比例。


          優(yōu)點(diǎn)
          • 這個(gè)指標(biāo)回答了在top-k中是否找到了相關(guān)的結(jié)果
          • 能夠穩(wěn)定且平均地處理請求

          4、mAP(mean Average Precision)

          用相關(guān)結(jié)果填充搜索結(jié)果頂部的密集程度。可以將其視為搜索引擎用戶收到相同的信息量時(shí)需要閱讀的頁面數(shù)(越少越好)。

          優(yōu)點(diǎn):客觀穩(wěn)定的檢索質(zhì)量評價(jià)
          缺點(diǎn):必須知道與請求相關(guān)的樣本的總數(shù)

          5、nDCG (Normalized Discounted Gain)


          該度量顯示了 top-k 中的元素在它們之間的排序是否正確。這里不會(huì)介紹這個(gè)指標(biāo)的優(yōu)缺點(diǎn),因?yàn)檫@是度量指標(biāo)列表中唯一考慮元素順序的一個(gè)指標(biāo)。并且有研究表明當(dāng)需要考慮順序時(shí),這個(gè)指標(biāo)相當(dāng)穩(wěn)定并且適用于大多數(shù)情況。

          6、驗(yàn)證方案推薦

          6a、對一組查詢和選定的相關(guān)查詢進(jìn)行驗(yàn)證


          輸入:請求圖像和與其相關(guān)的圖像。需要有與此查詢相關(guān)的列表形式的標(biāo)記。
          要計(jì)算指標(biāo):計(jì)算每個(gè)的相關(guān)矩陣,并根據(jù)有關(guān)元素相關(guān)性信息,計(jì)算指標(biāo)。

          6b、全庫驗(yàn)證


          輸入:請求的圖像,以及與它們相關(guān)的圖像。理想情況下應(yīng)該有一個(gè)驗(yàn)證圖像的數(shù)據(jù)庫,所有相關(guān)查詢都在其中被標(biāo)記。需要注意的是相關(guān)圖像中不應(yīng)包含查詢的圖像以免它會(huì)排在 top-1,我們的任務(wù)是相關(guān)圖像而不是找到他自己本身。

          要計(jì)算指標(biāo):遍歷所有請求,計(jì)算到所有元素(包括相關(guān)元素)的距離,并將它們發(fā)送到指標(biāo)計(jì)算函數(shù)。

          完整的樣例介紹


          這里以搜索相似商標(biāo)logo為例介紹圖像搜索引擎是如何工作的。

          圖像索引數(shù)據(jù)庫的大小:數(shù)百萬個(gè)商標(biāo)。這里第一張圖片是一個(gè)查詢,下一行是返回的相關(guān)列表,其余行是搜索引擎按照相關(guān)性遞減的順序給出的內(nèi)容。


          總結(jié)


          就是這樣,希望本篇文章可以那些正在構(gòu)建或即將構(gòu)建類似圖像搜索引擎的人提供一個(gè)完整的思路,如果你有什么好的建議也歡迎留言。

          編輯:于騰凱
          :林亦霖
          瀏覽 33
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日比视频在线观看 | 欧美性猛交XXXXⅩXX | 我想看国产操逼强奸毛片 | 美女被干舒服偷拍自拍 | 啊啊啊91 |