李 玲,崔溜洋,張文哲
(大連理工大學城市學院,大連 116600)
圖像處理算法的研究離不開數據集的支撐,而算法的效果和性能與訓練數據的規模和質量密切相關,因此數據集的制作工作也尤為重要。圖像數據來源的多樣性在提升數據的規模和豐富性的同時也增加了數據篩選的難度。以往的人工處理流程繁瑣復雜、效率低下,尤其是在大規模數據集的制作中,為保證準確度只能投入大量的作業時間。雖然也有部分工作會借助算法進行,但功能分散,自動化程度低,還有很大的提升空間。
基于以上背景,本文提出一種面向數據集制作的圖像相似性檢測方法,先對原始數據進行個性化的預處理,初步篩除不合格數據,然后使用感知哈希算法[1-2]結合k-means[3-4]聚類,對圖像特征進行散列化,計算數據簽名間的距離,過濾掉相似度高的重復圖像,圖像篩選的嚴格程度具有可調節性。經過本方法處理后的數據經由簡單復檢后,即可用于后續使用,大大提高數據的篩選效率和準確率。
相似度檢測是圖像處理中的基礎應用[5-7],目前主流的方法是哈希算法。圖像哈希算法的中心思想都是將圖像進行散列化,作用在于生成圖像的指紋信息,可通過比較兩圖像指紋信息的間距來判斷圖像的相似性,在圖像處理領域有著廣泛應用。例如,Randhir等[8]使用pHash算法計算平臺上傳內容的相似度,解決多媒體的版權侵權問題。Biswas等[9]對感知哈希算法進行改進,更好地提取人臉圖像的特征,應用于人臉分類任務。Verlekar等[10]通過計算用戶腿部區域上的感知散列并將其與針對訓練序列獲得的pHash 值進行比較來識別行走方向。Liu 等[11]提出深度哈希方法用于遙感圖像的分類和檢索。雖然感知哈希的處理時間最長,但由于其對于圖像細微變化的低敏感性,尤其是在角度旋轉情況下表現出的強魯棒性而備受青睞。
在數據集的制作中,也有團隊會使用相關算法對數據進行篩選。例如,鄧慶昌等[12]在做目標檢測數據集的過程中,采用直方圖法進行圖片去重。花明珠等[13]使用感知哈希算法對通過爬蟲技術在網絡中搜集大量珊瑚圖片形成的初始數據集中的圖像進行去重處理。但是這些方法功能單一,只完成了數據篩選的小部分工作,而且對于大規模數據的篩選速度和精度無法保證。
因此本文基于敏感哈希算法,提出針對數據集制作的綜合篩選方法,同時為了彌補時間缺陷,借鑒k-means 思想,先經過聚類后再計算指紋序列間的距離,以降低執行大規模數據過濾工作的時間復雜度。
本文提出的圖像重復性檢測方法旨在實現圖像數據集制作過程中圖像篩選部分的自動化處理,代替人工篩選,降低圖像過濾的時間成本,提高過濾質量。算法流程如圖1所示。

圖1 算法流程
算法整體分為三大部分:數據清洗、哈希計算和距離計算。首先將通過爬蟲等方式采集到的原始數據集作為算法的輸入,根據個性化要求進行數據清洗,初步篩除不符合要求的數據;其次使用pHash算法[14-15]對每張圖像進行簽名計算,得到代表圖像的散列化數據;最后對所有圖像的哈希值進行k-means聚類,在同一簇中兩兩計算漢明距離,過濾超過閾值的相似圖像。
數據清洗主要包括三部分內容:尺寸檢查、通道數檢查和圖像格式檢查。圖像數據的尺寸限制參數和格式限制參數可在配置文件中進行個性化設定,根據配置內容將范圍外的圖像數據“淘汰”。通道數檢查主要為了刪除灰度圖像,因為在很多圖像處理算法中,是無法對灰度圖像進行處理的。本算法刪除的數據不會直接刪除,而是會被收集至單獨的文件夾中,目的是保留原始數據,以供人工復檢比對或其他處理使用。
感知哈希的核心思想是無損DCT(離散余弦變換)。DCT 變換最早由Ahmed 等[16]于1974 年提出,其基本原理是對圖像進行壓縮,將空域信號轉到頻域,獲取更有效的表達。因計算開銷低,處理效率高,適應性強等優點在圖像處理中具有重要應用。二維DCT變換的公式為
其中:x、y為空間采樣值;u、v為頻率采樣值;f(x,y)為原始二維信號。
感知哈希的處理流程如圖2所示。先將圖像統一縮放至32 × 32 px,再轉換為單通道灰度圖,目的是為了進一步減小計算量,簡化DCT變換。經DCT 變換后的圖像信息主要集中在左上角,取8 × 8 的矩陣即可呈現圖片的低頻信息。計算矩陣中所有元素的均值,再依次將矩陣中的元素與均值進行比對,根據比對結果賦1或0,從而生成64 bit的指紋信息,即哈希值。

圖2 感知哈希算法示意圖
當數據規模很龐大時,對指紋信息兩兩比較并計算距離是十分耗時的過程。為解決該問題,本文引入了聚類思想。聚類是一種無監督學習方法,無需準備數據集,將一個龐雜數據集中具有相似特征的數據自動歸類到一起,稱為一個簇,簇內的對象越相似,聚類的效果越好[17]。
使用k-means 算法將所有圖像數據的哈希值先聚成k簇,此時相似的圖像在很大概率下會被聚在同一簇中,然后在同一簇中兩兩計算距離,大大減少計算量。k-means聚類具有隨機性,可能收斂到局部最小值,手動設定的k值也會影響最終的聚類效果。在配置文件中提供了設定k值的接口,可根據數據的實際情況進行設定,從而提高方法的泛化性能。另外,對于最佳k值,在3.2節中進行了對比實驗。
距離計算選用漢明距離[18],對圖像的哈希值進行異或運算,統計結果為1 的個數。其公式為
其中:xn、yn表示兩個N位的字符串,⊕符號表示進行XOR運算。
為了有效地對算法進行定量評價和對比實驗,本文構建了一個具有已知不合格圖像和相似圖像數量的實驗數據集。通過網絡爬蟲的方式,采集了約20000張圖像作為原始數據。人工挑選了5000 張合格圖像作為基礎樣本(命名為DATA-BASE)。通過對DATA-BASE 中的圖像進行加噪、尺寸變更、圖像旋轉、灰度轉化、格式變換等處理進行數據集的擴展,具體的處理數量和參數見表1。

表1 實驗數據處理
從DATA-BASE 中隨機選取數量列對應數量的圖像,按照對應的處理方法和參數進行處理,最終得到共13000 萬張圖像的擴展數據集(命名為DATA-L)。再從DATA-L 中隨機選取2000 張圖像構成DATA-S,均作為對比實驗的數據支撐。以一張圖像為例,進行處理后的效果說明,如圖3所示。

圖3 擴展數據集處理示例
在本節中將進行兩組對比實驗,第一組是驗證選取的最佳k值,第二組是驗證對于不同數據規模,進行聚類后再計算圖像間的距離和直接計算距離的時間優化結果。
選取合適的聚類中心,不僅能減少聚類的時間,還能提高聚類的準確度。一般的聚類中心數在3~10之間,對于數據篩選來說,聚類的目的是使類似的圖像被聚到同一簇中,過多的聚類中心更易使數據分散,達不到良好的聚類效果。因此,在本組實驗中選取的聚類中心數的范圍為2~8。使用DATA-L 數據集進行實驗,聚類結果的分析方法使用經典的“手肘法”,即通過計算不同簇數下的聚類誤差平方和(SSE)來確定最佳k值。實驗結果如圖4 所示,可以看出k=4時是拐點位置,因此最佳k值取4。

圖4 最佳k值實驗結果
選用k-means 的目的是為了減少圖像簽名比對的計算時間,尤其是在數據規模龐大的情況下。為了驗證該方法的有效性,進行了時間對比實驗。分別計算在兩種數據規模下,不使用k-means 直接進行漢明距離計算、進行聚類后再進行距離計算所需要的時間,聚類中心數均設置為4,本實驗的結果見表2。

表2 時間對比實驗結果
從表2可以看出,在所有數據規模下,進行聚類的時間均比不進行聚類的時間短,且數據規模越大,效果越明顯,這充分表明了融合聚類能夠減少哈希簽名比對的時間。
本節實驗,我們將通過人工方式篩選的結果和通過本文方法的篩選結果進行比較。為了使實驗數據更具說服力,人工過濾流程與算法過濾流程保持一致,圖像清洗部分需要人工調用多個程序進行,過濾標準與配置文件中設置的條件一致。圖像相似度檢測的方法,通過人工進行肉眼比對,根據人的主觀判斷進行相似數據的篩除。
評價從時間和準確率兩方面進行,準確率采用以下兩個評價指標進行計算:
其中:ri代表被正確保留的數據數量,rall表示應該被保留的數據總數,ei表示被正確篩除的數據數量,eall表示應該被篩除的數據總量。該部分的實驗結果見表3。

表3 算法評價實驗結果
根據以上實驗結果,人工篩選2000 張圖像的時間就已經達到了約6小時,隨著數據規模的增大,對于人工篩選的挑戰性更高,人工篩選的效率更低,準確率也會隨之降低。而使用本文提出的方法,僅需不到3 分鐘即可完成13000張圖像的過濾工作,且過濾效果較好,能夠滿足數據集制作的篩選需求。
本文針對數據集制作的特定場景,提出了圖像重復性檢測方法,實現數據篩選的“一站式”服務,解決了數據篩選效率低下、準確率不佳等問題,具有實際應用價值。通過實驗驗證了算法在處理時間和篩選精度上的表現,與傳統人工處理流程的時間和性能進行比較,證明了算法的有效性和優越性。
圖像處理技術將繼續發展,數據集的制作也會趨向自動化。數據集的制作還包括標注、分類等部分,在后續的工作中,我們也將探討和研究其余部分的自動化處理方法,考慮采用深度學習方法,盡可能降低數據集制作的人工成本,這也對圖像處理技術的發展有著至關重要的影響。