圖像相似性的5種度量方法

2020-12-14 寶哥智能研習社

01什麼是圖像相似性度量

圖像相似性度量是測度兩幅圖像的相似程度。這個定義看起來沒有做什麼解釋,實際上圖像相似性度量就像它的名字一樣容易理解,通過度量的方式測度兩幅圖像到底有多麼一樣。

02圖像相似性度量能做什麼

目前學術中最常用的場景是做目標追蹤、位置獲取,在一些算法如blobTracking,Meanshift,Camshift和粒子濾波等都需要圖像相似性度量做理論支撐。市場應用是Google的以圖搜圖,就是根據已有圖像搜索更多類似的圖像。谷歌已經開發出圖像搜索,但是性能很不好,遠遠低於文字檢索質量。國內百度也做了圖像搜索,她的方法更像是擦邊球,通過搜索圖像的標籤給出類似或者完全不同的圖像。下面是兩個搜索網站對同一幅圖像的搜索,結果如下。

網絡上找的經過截切後的圖片
百度搜索川普圖像
谷歌搜索川普圖像

很顯然,圖像搜索方向無論百度還是谷歌都還有很長的路要走。其實圖像搜索一直是科技界努力攻關的熱點。但每一幅圖像尺寸都不小,對百度和谷歌而言,在海量圖片中搜索對伺服器和算法的要求太高了,做得不好也可以理解。

03圖像相似性搜索的哈希算法

圖像相似性搜索有直方圖方法,測量圖像灰度的概率分布;圖像模板匹配:對比的兩幅圖像大小不一致,採用滑動窗口度量;PSNR峰值信噪比:基於像素點之間的誤差做圖像質量評價;ssim的結構相似性檢測,從亮度、對比度、結構三方面度量圖像相似性。SSIM取值範圍[0,1],值越大,表示圖像失真越小.。最後一種是我們重點介紹的感知哈希算法,具體來說哈希算法包括了三種:均值、差異和感知,由於三種算法原理非常相似,這裡只介紹感知哈希算法。

感知哈希算法(perceptual hash algorithm),它的作用是對每張圖像生成一個「指紋」(fingerprint)字符串,然後比較不同圖像的指紋。結果越接近,就說明圖像越相似。得到圖像的「指紋」啊,當我第一次看到這個詞的時候,非常激動。要是能夠提取出圖像獨一無二的指紋,很多問題就可以迎刃而解!

感知哈希算法流程非常簡潔,將圖像壓縮/擴張為32*32的灰度圖,灰度圖做離散餘弦變換,然後對變換後的圖像求灰度均值(np.mean(img))。將每個灰度和均值比大小。大於等於平均值,該位置記作1,否則記作0. 這樣就得到圖像的指紋。具體過程和算法如下圖。若大家感興趣可以找一幅圖像帶入看看,觀察圖像的指紋。

Python語言實現的感知哈希算法

04感知哈希算法的思考

感知哈希算法生成圖像指紋的方法中,如果該像素的灰度值小於平均值,則記為0,大於等於平均值則記為1. 這樣得到圖像長達64位、由{0,1}構成的圖像指紋。顯然從圖像到指紋是單射,而一個指紋可以對應多個圖像,不是一一對應的關係。根據同一個指紋生成的圖像具有某種共同的特點。是否可以修改指紋的記錄方式?比如採用模糊數學的思路,不直接記作0和1,而是記錄為f(Aij-Aavg),這樣得到的指紋具有什麼特點?能夠做什麼?上述的小問題供大家思考。

感知哈希算法是非常有意思的方法,今後我會持續關注,有什麼新的應用和體會及時和大家分享。

清華大學電子工程系章毓晉教授編寫的《圖像工程》這本書對圖形圖像做了非常深刻系統的梳理,是很多高校的指定教材,印刷多次,目前已經到了第四版。第4版增加了一項新的舉措。書中彩色圖片印刷後均為黑白的,可以通過手機掃描圖片旁的二維碼,調出存放在出版社網站上的對應彩色圖片,獲得更多的信息和更好的觀察效果。

從1996年開始編寫《圖像工程》第1版以來至今已20多年。期間,作者與許多讀者(包括教師、學生、自學者等)有過各種形式的討論和交流,除了與一些同行面談外,許多人打來電話或發來電子郵件。這些討論和交流使作者獲得了許多寶貴的意見和建議,在編寫這4版中都起到了不可或缺的作用,特別是在解釋和描述的詳略方面都結合讀者反饋意見進行了調整,從而更加容易理解和學習。值得指出的是,書中還匯集了多年來不少聽課學生的貢獻,許多例題和練習題是在歷屆學生作業和課堂討論的基礎上提煉出來的,一些圖片還直接由學生幫助製作,在選材上也從學生的反饋中受到許多啟發。藉此機會對他們一併表示衷心的感謝。

相關焦點

  • 常見距離度量方法優缺點對比!
    這些度量方法,如歐氏距離或餘弦相似度,經常可以在KNN、UMAP、HDBSCAN等算法中找到。理解距離測量領域比你可能意識到的更重要。以KNN為例,這是一種常用於監督式學習的技術。作為默認設置,它通常使用歐幾裡得度量。就其本身而言,是一個很好的距離測量方法。
  • 機器學習中的相似性度量總結
    文末贈書福利核函數的含義是兩個輸入變量的相似度,描述相似度的方法有很多種,就本人的項目經驗來說用的最多的是相關係數和歐氏距離。本文對機器學習中常用的相似性度量進行了總結。作者:蒼梧 https://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html在做分類時常常需要估算不同樣本之間的相似性度量(Similarity Measurement),這時通常採用的方法就是計算樣本間的「距離」(Distance)。
  • 數據科學中常見的9種距離度量方法,內含歐氏距離、切比雪夫距離等
    在本文中,數據科學家 Maarten Grootendorst 向我們介紹了 9 種距離度量方法,其中包括歐氏距離、餘弦相似度等。許多算法,無論是監督學習還是無監督學習,都會使用距離度量。這些度量,如歐幾裡得距離或者餘弦相似性,經常在 k-NN、 UMAP、HDBSCAN 等算法中使用。了解距離度量這個領域可能比你想的更重要,以 k-NN 為例,它常被用於監督學習中。
  • 收藏 | 機器學習最常見的 9 種距離度量方法,含歐氏距離、切比雪夫距離等
    在本文中,數據科學家 Maarten Grootendorst 向我們介紹了 9 種距離度量方法,其中包括歐氏距離、餘弦相似度等。許多算法,無論是監督學習還是無監督學習,都會使用距離度量。這些度量,如歐幾裡得距離或者餘弦相似性,經常在 k-NN、 UMAP、HDBSCAN 等算法中使用。了解距離度量這個領域可能比你想的更重要,以 k-NN 為例,它常被用於監督學習中。
  • [乾貨]漫談:機器學習中距離和相似性度量方法
    在機器學習和數據挖掘中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。在上面的例子中,用 M11 表示兩個用戶都看過的電影數目,M10 表示用戶 A 看過,用戶 B 沒看過的電影數目,M01 表示用戶 A 沒看過,用戶 B 看過的電影數目,M00 表示兩個用戶都沒有看過的電影數目。Jaccard 相似性係數可以表示為:
  • 常用的相似性度量算法(原理,實現,優缺點,適用場景...
    內容導讀對相似性算法的了解起源於最近在做 使用協同過濾原理 的推薦系統中, 基於鄰域的推薦算法 (User-Based CF和 和 Item-Based CF)需要估算不同樣本之間的 相似性度量(Similarity Measurement) ,這也是機器學習中在做 分類 的時候的一個常見場景。
  • 機器學習中距離和相似性度量方法
    根據數據特性的不同,可以採用不同的度量方法。向量內積向量內積是線性代數裡最為常見的計算,實際上它還是一種有效並且直觀的相似性測量手段。向量內積的定義如下:直觀的解釋是:如果 x 高的地方 y 也比較高, x 低的地方 y 也比較低,那麼整體的內積是偏大的,也就是說 x 和 y 是相似的。
  • 數據科學中常見的9種距離度量方法(內含歐氏距離、切比雪夫距離等)
    在本文中,數據科學家 Maarten Grootendorst 向我們介紹了 9 種距離度量方法,其中包括歐氏距離、餘弦相似度等。許多算法,無論是監督學習還是無監督學習,都會使用距離度量。這些度量,如歐幾裡得距離或者餘弦相似性,經常在 k-NN、 UMAP、HDBSCAN 等算法中使用。
  • 機器學習中的相似性度量:距離,原來還有這麼多類
    來自:蒼梧 - 博客園連結:http://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html在做分類時常常需要估算不同樣本之間的相似性度量(SimilarityMeasurement),這時通常採用的方法就是計算樣本間的「距離」(Distance)。
  • 巧解圖像處理經典難題之圖像配準
    經過精確圖像配準的圖像對,通常可獲得更好的融合效果。一、定義圖像配準是使用某種算法,基於某種評估標準,將一副或多副圖片(局部)最優映射到目標圖片上的方法。根據不同配準方法,不同評判標準和不同圖片類型,有不同類型的圖像配準方法。
  • 9個數據科學中常見距離度量總結以及優缺點概述
    它可以用來確定二進位字中失真的數目,作為估計誤差的一種方法。此外,您還可以使用漢明距離來度量分類變量之間的距離。曼哈頓距離 Manhattan Distance例如,如果兩個集合有1個共同的實體,而總共有5個不同的實體,那麼Jaccard索引將是1/5 = 0.2。要計算Jaccard距離,我們只需從1中減去Jaccard指數:
  • 圖像匹配幾種常見算法與實踐
    應用:遙感(製圖更新),計算機視覺應用程式,醫療用圖像註冊。圖像匹配主要可分為以灰度為基礎的匹配和以特徵為基礎的匹配。模板匹配是基於像素的匹配,用來在一副大圖中搜尋查找模版圖像位置的方法。和 2D 卷積一樣,它也是用模板圖像在輸入圖像(大圖)上滑動,並在每一個位置對模板圖像和與其對應的輸入圖像的子區域進行比較。OpenCV 提供了幾種不同的比較方法。
  • 【深度度量學習系列】MSloss及GPW框架是什麼?
    一、背景度量學習(Metric Learning)也叫距離度量學習(Distance Metric Learning),是一種傳統的機器學習方法,隨著深度學習的興起,將深度學習結合在度量學習這種傳統方法上也逐漸成為一種趨勢,即Deep Metric Learning。本文將解讀一篇深度度量學習論文,從中可以看到一種通用的樣本對加權框架,及一種度量學習損失函數。
  • 為損失函數定個框架,碼隆CVPR 2019提出圖像檢索新範式
    但在碼隆科技的這篇論文中,研究者探索了圖像搜索的核心問題:即如何為損失函數的設計提供一個標準框架,從而通過深度度量學習實現更優質的圖像檢索。(深度度量學習)。此外,如果不能將三種相似性都構建進去,那麼度量方法總會有一些缺陷,效果也就達不到最優。MS Loss 表達式前面已經了解到,MS Loss 採用採樣和加權交替迭代的訓練策略來實現上述三種相似性。
  • Meta Learning 2: 更多基於度量的方法
    接著系列文章上一篇Meta Learning 1: 基於度量的方法介紹的孿生網絡Siamese Network模型,本篇繼續介紹更多基於度量的Meta Learning元學習方法。基於度量的方法:編碼Encode,歸納Induction,相似度RelationMatching Networks (Vinyals, 2016)Matching Networks[1]嚴格遵守Meta Learning一個任務作為一個樣本的訓練思路,構造了和推斷時一致的訓練任務。
  • 使用python+sklearn實現成對度量、相關性和核函數
    此模塊包含距離度量和內核。這裡對這兩個問題作了簡要的總結。距離度量是函數d(a, b),如果對象a和b被認為比對象a 和c「更相似」,則 d(a, b) < d(a, c)。兩個完全相似的對象距離為零。使用最為廣泛的距離度量是歐幾裡德距離,要成為「真實的」度量,它必須遵守以下四個條件:1. 對於所有的 a 和 b,d(a, b) >= 02.
  • 推薦系統中的相似度度量
    在另一種方法中,推薦系統會考慮與您的口味相似的其他人的喜好,並向您推薦他們所觀看的電影。與第一種方法相反,給你的推薦是基於多個用戶的行為,而不是基於正在觀看的內容的屬性。這種方法稱為協同過濾。在我們考慮的示例中,這兩種方法最有可能向您推薦科幻電影,但它們將採取不同的途徑得出結論。
  • 業界丨Facebook 爆錘深度度量學習:該領域13年來並無進展!網友:滄海橫流,方顯英雄本色
    論文下載地址:https://arxiv.org/pdf/2003.08505.pdf在綜述論文開頭,FB和康奈爾先肯定了深度度量學習的重要性,他們表示:深度度量學習已成為近年來機器學習最具吸引力的研究領域之一,如何有效的度量物體間的相似性成為問題的關鍵。度量學習試圖將數據映射到一個嵌入空間,在這個空間中,相似的數據靠得很近,類型不同的數據離的很遠。
  • 上海交通大學CVPR Spotlight論文:利用形態相似性生成人體部位解析...
    在傳統的語義分割方法中,我們需要提供手工標註的標籤,以便使用全卷積網絡(FCN)進行端到端的訓練。雖然過去的方法能達到不錯的效果,但它們的性能高度依賴於訓練數據的數量和質量。在本文中,我們提出了一種獲得訓練數據的新方法,它可以使用容易獲得的人體關鍵點的數據來生成人體部位解析數據。