CLIP-EBC:通過增強的逐塊分類,CLIP能夠準確計數

摘要

https://arxiv.org/pdf/2403.09281v1
CLIP(Contrastive Language-Image Pretraining,對比語言-圖像預訓練)模型在識別問題中表現出了卓越的性能,如零樣本圖像分類和對象檢測。然而,由于其固有的挑戰——即將計數(一項回歸任務)轉化為識別任務,CLIP在計數方面的能力仍然研究不足。在本文中,我們研究了CLIP在計數方面的潛力,特別是聚焦于人群規模估計。現有的基于分類的人群計數方法遇到了包括不恰當的離散化策略在內的問題,這些問題阻礙了CLIP的應用并導致性能次優。為了解決這些挑戰,我們提出了增強的分塊分類(Enhanced Blockwise Classification,EBC)框架。與以往方法不同,EBC依賴于整數值的箱(bins),這有助于學習穩健的決策邊界。在我們的與模型無關的EBC框架內,我們引入了CLIPEBC,這是第一個能夠生成密度圖的完全基于CLIP的人群計數模型。通過對不同人群計數數據集的綜合評估,我們方法的先進性能得到了證明。特別是,EBC可以使現有模型的性能提升高達76.9%。此外,我們的CLIP-EBC模型超越了當前的人群計數方法,在上海科技大學A部分和B部分數據集上分別實現了55.0和6.3的平均絕對誤差。代碼將公開提供。

一、引言

人群計數涉及對圖像或視頻中個體數量的自動估計。近年來,由于其在管理流行病[1]和避免人群擁擠崩塌[2]等關鍵領域的潛在應用,這一任務受到了廣泛關注。準確量化人群密度對于提升公共安全、城市規劃和事件管理至關重要。

目前最先進的人群計數方法依賴于圖像中個體頭部中心的標注二維坐標。這些方法通常將點標注轉換為二進制密度圖,其中值1表示該像素對應于一個標記的頭部中心,而0則表示不是。大多數方法[3]-[9]采用編碼器-解碼器框架,旨在直接回歸密度圖。通常,這些模型輸出的密度圖具有由模型特定的縮減因子確定的空間尺寸。密度圖中的每個元素估計圖像中對應塊中的計數值。然而,這些方法忽略了這樣一個事實,即計數值呈現出長尾分布,其中大值區域存在嚴重的采樣不足。

為了應對這一挑戰,一些工作[11]、[12]通過將計數值合并到箱(類別)中來將人群計數重新定義為分類任務,從而增加了稀有值的樣本量。與基于回歸的方法類似,這些方法也基于分塊預測,但輸出的是減小了空間尺寸的概率圖,其中每個空間位置的向量表示箱的概率得分。在推理階段,這些方法通過聚合每個箱的平均值(每個值根據其相關的概率得分進行加權)來計算預測的密度圖。然后通過對得到的密度圖進行積分來得出最終的預測計數。然而,這些方法遇到了幾個挑戰,導致它們的性能不佳。

值得注意的是,與許多基于回歸的方法[3]、[4]、[8]一樣,這些分類方法也在預處理真實密度圖時采用了高斯平滑,這引發了一個關鍵問題:選擇合適的高斯核寬度。由于圖像中個體常因透視畸變而以不同尺度呈現,理想情況下應將核寬度與頭部大小相匹配,但遺憾的是,計數任務并未提供這些頭部大小信息。因此,現有的基于分類的方法會在標簽中引入噪聲,從而導致性能下降。此外,高斯平滑將最初的離散計數值轉換為連續空間 [ 0 , ∞ ) [0, \infty) [0,),這需要使用一系列相鄰的實值區間作為箱。這種量化策略使得邊界附近的樣本特別難以分類,使得模型難以學習最優的決策邊界。當前基于分類方法的另一個局限性是它們僅關注分類錯誤,而沒有考慮預測計數值與真實值之間的接近程度。這一缺陷會在測試中損害性能,因為兩個具有相同分類錯誤的概率分布可能表現出不同的期望值。

盡管CLIP[1]在各種與識別相關的下游任務(如目標檢測[13]和語義分割[14])中取得了成功,但其計數能力在很大程度上仍未被探索。這一差距源于兩個主要挑戰:1) 原本為識別任務設計的CLIP與構成回歸任務的人群計數之間存在固有的不匹配;2) 現有基于分類的計數方法的局限性和次優結果。為了彌合這一差距,本文專注于人群計數,并提出了一種增強的分塊分類(EBC)框架,該框架專門設計用于解決當前基于分類方法所面臨的挑戰。通過最小的修改,現有的基于回歸的方法可以無縫地集成到我們的EBC框架中,從而顯著提高其性能。此外,在EBC框架的基礎上,我們探索了利用CLIP原始結構進行人群計數的潛力,并引入了CLIP-EBC(如圖1所示)。與其他方法[15]、[16]相比,CLIP-EBC是第一個能夠生成人群熱圖的完全基于CLIP的模型。在四個數據庫上的實驗結果強調了我們的EBC框架相比現有基于回歸方法的顯著改進。EBC展現出了顯著的有效性,在NWPU[17]數據集上,將CSRNet[3]的RMSE降低了高達76.9%。此外,我們提出的CLIP-EBC模型超越了最先進的人群計數方法,展示了其有效性。具體來說,CLIP-EBC在上海科技大學[18]數據集A部分實現了55.0的平均絕對誤差,在B部分實現了6.3的平均絕對誤差。這些結果表明,在EBC的支持下,CLIP能夠準確地估計人群密度圖。

總結來說,我們的貢獻如下:

  • 我們提出了一種創新的增強分塊分類(EBC)框架,該框架在離散化、標簽校正和損失函數三個方面顯著改進了先前的基于分類的方法。
  • 在EBC的基礎上,我們提出了第一個完全基于CLIP的人群計數模型CLIP-EBC。CLIP-EBC最大限度地保留了CLIP的原始結構,展示了其不僅能夠估計人群規模,還能夠生成詳細的分布密度圖的能力。
  • 我們在多個數據集上進行了廣泛的實驗,以展示EBC在增強現有方法方面的有效性,以及CLIP-EBC作為最先進人群計數方法的競爭力。

II、相關工作

A. 基于回歸的方法

人群計數主要由多種基于編碼器-解碼器的模型主導,這些模型通過回歸密度圖來進行計數。一些模型專注于解決由透視畸變引起的尺度變化問題。Zhang等人[18]引入了一種多列CNN結構,每個分支提取不同感受野大小的特征圖,隨后通過拼接進行融合。相比之下,Liu等人[4]提出了一個基于VGG-16[20]的單分支模型,該模型包含一個多尺度模塊,用于跨尺度提取和融合特征。認識到擴大感受野的重要性,Li等人[3]提倡在生成密度圖時使用空洞卷積。由于真實密度圖通常比較稀疏,使用高斯核進行平滑是一種常見的策略,以促進模型優化。然而,這種方法帶來了選擇合適核寬度的挑戰,理想情況下核寬度應與尺度相匹配。不幸的是,在人群計數任務中通常不提供頭部大小信息。因此,高斯平滑不可避免地會在標簽中引入誤差和噪聲:如果核大小設置得太小,則在密度圖中對應于個體頭部的像素將被設置為0;相反,如果核大小設置得太大,則對應于背景的像素可能會被誤認為是行人。為了解決這個問題,Wang等人[6]通過利用離散最優傳輸理論引入了DMCount損失函數。這種損失函數不需要高斯平滑,并且使用它訓練的模型可以具有增強的性能。
B. 基于分類的方法

現有的基于分類的方法源于糾正計數值長尾分布(如圖2所示)的動機,其中大值被嚴重低估,對基于回歸的模型性能產生不利影響。為了解決這個問題,基于分類的方法將支持范圍[0, ∞)劃分為不重疊的區間,以增加每個類別的樣本量。在推理過程中,將每個區間的中點(根據概率分數加權)相加作為預測的計數。例如,Xiong等人[12]引入了DCNet,它通過使用相同的一組區間來預測多個級別的計數。然而,這種方法忽略了這樣一個事實,即大值在局部層面出現的可能性較小,從而加劇了類別不平衡。為了處理這個問題,Liu等人[11]提出了基于塊分類的概念,該模型輸出概率圖,其中每個像素的向量表示預測的概率分數。然而,與基于回歸的方法類似,這些方法也用高斯核對真實密度圖進行平滑處理,從而引發以下問題:1)如第II-A節所述,高斯平滑可能會在標簽中引入噪聲;2)高斯平滑將計數從離散的整數空間轉換為連續的實數空間,因此區間必須相互鄰接(例如,(0,0.5]和(0.5,1]))。這種量化策略使得難以對邊界附近的樣本點進行分類。此外,這些方法僅關注分類結果,忽略了兩個概率分布可能具有相同的分類誤差但期望不同的事實,從而在測試期間嚴重影響性能。

C. 人群計數中的CLIP

對比語言-圖像預訓練(CLIP)模型[10]在下游任務中表現出了卓越的性能,如下游零樣本圖像分類[10]、目標檢測[13]和[14],但在人群計數方面的研究卻相對較少。Liang等人[15]提出了一種基于排序的無監督方法。他們的方法利用嵌套圖像塊序列和預定義的計數數字序列作為輸入,目的是最小化相似性的排序損失。然而,該方法的一個局限性是無法生成密度圖,這對于疫情控制和公共安全監控等應用至關重要。Jiang等人[16]介紹了一種文本引導的零樣本計數方法,該方法利用CLIP生成文本指導,但仍以密度圖回歸為基礎,導致在人群計數任務中的性能次優。相比之下,我們是第一個研究僅使用CLIP來估計人群密度圖潛力的團隊。為此,我們引入了CLIP-EBC,這是第一個完全基于CLIP的人群計數方法,并證明了CLIP可以在盡可能保留其結構的同時,準確地估計人群分布。

III、方法

在本節中,我們首先描述我們的增強塊分類(EBC)框架以及我們在離散化、標簽校正和損失設計三個方面的貢獻。然后,基于這個與主干網絡無關的框架,我們介紹了如何利用CLIP進行密度圖估計,并提出了CLIP-EBC。

A. 增強型分塊分類(EBC)

由于點標簽中存在的固有噪聲,使得在像素級別預測密度圖變得具有挑戰性。因此,我們的EBC框架采用了分塊預測的方式,類似于最新的方法[3]、[5]、[6]、[11]、[12]。然而,由于基于回歸的方法在大計數值上存在欠采樣問題(如圖2所示),EBC將計數值分組到不同的區間(bins)中,以增加每個區間的樣本量,從而緩解樣本不平衡的問題。設 { B i ∣ i = 1 , ? , n } \left\{\mathcal{B}_{i} \mid i=1, \cdots, n\right\} {Bi?i=1,?,n}為預定義的 n n n個區間,使得 ? i ≠ j , B i ∩ B j = ? \forall i \neq j, \mathcal{B}_{i} \cap \mathcal{B}_{j}=\emptyset ?i=j,Bi?Bj?=?,且 S ? ∪ i = 1 n B i \mathcal{S} \subset \cup_{i=1}^{n} \mathcal{B}_{i} S?i=1n?Bi?,其中 S \mathcal{S} S是計數值的支持集。設 X ∈ R + C × H × W \boldsymbol{X} \in \mathbb{R}_{+}^{C \times H \times W} XR+C×H×W?為輸入圖像,其中 C C C表示通道數, H H H W W W分別表示空間高度和寬度。EBC輸出一個維度為 ( n , H / / r , W / / r ) (n, H // r, W // r) (n,H//r,W//r)的概率圖 P ? \boldsymbol{P}^{*} P?,其中 / / // //表示向下取整除法運算符,整數 r r r是與模型相關的縮減因子。對于空間位置 ( i , j ) (i, j) (i,j)處的 n n n維向量,即 P : , i , j ? \boldsymbol{P}_{:, i, j}^{*} P:,i,j??,它表示圖像區域 ( r ( i ? 1 ) : r i , r ( j ? 1 ) : r j ) (r(i-1): ri, r(j-1): rj) (r(i?1):ri,r(j?1):rj)內各個區間的概率分數。在推理過程中,對于每個區間 B i \mathcal{B}_{i} Bi?,設 a i a_{i} ai?為該區間的代表計數值。從預測的概率圖 P ? \boldsymbol{P}^{*} P?中,我們可以通過加權平均得到預測的密度圖:

Y i , j ? = ∑ k = 1 n a k ? P k , i , j ? \boldsymbol{Y}_{i, j}^{*}=\sum_{k=1}^{n} a_{k} \cdot \boldsymbol{P}_{k, i, j}^{*} Yi,j??=k=1n?ak??Pk,i,j??

Y i , j ? \boldsymbol{Y}_{i, j}^{*} Yi,j??進行求和,可以得到整個圖像的預測計數。圖4比較了基于回歸的方法(左)和我們的EBC框架(右)。現有的基于回歸的方法只需改變輸出維度,就可以很容易地適應EBC。

  1. 離散化:遵循先前的基于回歸的方法[3]、[4]、[18],現有的基于分類的方法[11]、[12]使用高斯核對真實密度圖進行平滑處理。這將支持集 S ? N \mathcal{S} \subset \mathbb{N} S?N轉換為 R + \mathbb{R}_{+} R+?的子集。相應地,為了覆蓋新的支持集,這些方法使用邊界區間作為區間: 0 , ( 0 , 0.05 ] , ( 0.05 , 0.1 ] ? {0},(0,0.05],(0.05,0.1] \cdots 0,(0,0.05],(0.05,0.1]?。這種策略使得標簽接近邊界(例如,0.05)的樣本難以分類。此外,由于人群計數中通常不提供頭部大小,高斯平滑可能會在標簽中引入額外的噪聲。如圖3a和圖3b所示,當內核大小設置不當時,高斯平滑會創建錯誤的類別標簽。為了解決這些問題,我們提出繞過高斯平滑,采用類似YOLO[21]的方法(見圖3c):如果某個個體位于特定塊內,我們僅強制該塊預測該個體的存在,同時排除其他塊進行此類預測。這種策略保留了計數的固有離散性。我們的計數值支持集是 S = 0 , 1 , ? , m \mathcal{S}={0,1, \cdots, m} S=0,1,?,m,其中 m m m表示允許的最大計數值。我們提出了三種不同粒度的區間策略:精細、動態和粗略。在精細級別,每個區間只包含一個整數;動態區間策略創建大小不同的區間;在粗略級別,每個區間包含多個整數。

先前工作[11]、[12]的另一個缺點是它們使用每個區間的中點作為代表計數值,這忽略了計數值并不遵循均勻分布的事實。為了處理這個問題,我們提出使用每個區間內的平均計數值作為代表點:

a i = 1 ∣ B i ∣ ∑ k = 1 M 1 ( c k ∈ B i ) ? c k a_{i}=\frac{1}{\left|\mathcal{B}_{i}\right|} \sum_{k=1}^{M} \mathbb{1}\left(c_{k} \in \mathcal{B}_{i}\right) \cdot c_{k} ai?=Bi?1?k=1M?1(ck?Bi?)?ck?

其中, ∣ B i ∣ \left|\mathcal{B}_{i}\right| Bi?是區間 B i \mathcal{B}_{i} Bi?的基數, M M M是數據集中所有塊的數量, 1 \mathbb{1} 1是指示函數, c k c_{k} ck?是塊 k k k中的計數值。

  1. 標簽校正:上述所有方法都忽視了一個關鍵的實踐挑戰:在人口密集的圖像區域內的標注可能極其錯誤和嘈雜,導致與可觀察到的人數和位置存在顯著差異(如圖5所示)。這個問題可能由兩個因素引起:1) 分辨率較低的圖像,標注者難以在擁擠區域中精確確定頭部數量;2) 在標注后調整數據庫大小以優化存儲和訓練時間。這些錯誤可能會向人群計數模型提供錯誤的反向傳播信號,嚴重降低其實際性能。因此,我們提出將固定大小圖像塊中可觀察人數的最大計數限制為一個僅由塊大小決定的小常數。具體來說,我們假設一個人的最小可識別大小為 s × s s \times s s×s像素。因此,最大允許計數值可以通過 m = ( r / / s ) 2 m=(r // s)^{2} m=(r//s)2獲得。例如,當 s = 8 s=8 s=8時,包括圖5中封閉區域在內的所有 64 × 64 64 \times 64 64×64塊的最大允許計數值被限制為 ( 64 / / 8 ) 2 = 64 (64 // 8)^{2}=64 (64//8)2=64,而不是196。

  2. 損失設計:在先前的塊分類方法中,Liu等人[11]在損失公式中僅考慮了預測概率圖 P ? \boldsymbol{P}^{\boldsymbol{*}} P?與真實值 P \boldsymbol{P} P之間的差異。Xiong等人[12]引入了一個額外的項用于分而治之。然而,這些方法忽略了預測計數值與真實值之間的差異。由于兩個概率分布可能產生相同的分類錯誤但具有不同的期望值,因此使用這些損失函數訓練的模型在測試時無法保證表現良好。為了應對這一挑戰,我們提出了距離感知交叉熵(DACE)損失:

L D A C E = L class? ( P ? , P ) + λ L count? ( Y ? , Y ) = ? ∑ i = 1 H / / r ∑ j = 1 W / / r ∑ k = 1 n 1 ( P k , i , j = 1 ) log ? P k , i , j ? + λ L count? ( Y ? , Y ) , \begin{aligned} \mathcal{L}_{\mathrm{DACE}}= & \mathcal{L}_{\text {class }}\left(\boldsymbol{P}^{*}, \boldsymbol{P}\right)+\lambda \mathcal{L}_{\text {count }}\left(\boldsymbol{Y}^{*}, \boldsymbol{Y}\right) \\ = & -\sum_{i=1}^{H / / r} \sum_{j=1}^{W / / r} \sum_{k=1}^{n} \mathbb{1}\left(\boldsymbol{P}_{k, i, j}=1\right) \log \boldsymbol{P}_{k, i, j}^{*} \\ & +\lambda \mathcal{L}_{\text {count }}\left(\boldsymbol{Y}^{*}, \boldsymbol{Y}\right), \end{aligned} LDACE?==?Lclass??(P?,P)+λLcount??(Y?,Y)?i=1H//r?j=1W//r?k=1n?1(Pk,i,j?=1)logPk,i,j??+λLcount??(Y?,Y),?
其中, 1 \mathbb{1} 1是指示函數, P \boldsymbol{P} P是獨熱編碼的真實概率圖, P ? \boldsymbol{P}^{*} P?是預測概率圖, Y \boldsymbol{Y} Y是真實密度圖, Y ? \boldsymbol{Y}^{*} Y?是預測密度圖,可以通過方程(1)和方程(2)獲得。計數損失 L count? \mathcal{L}_{\text {count }} Lcount??(由 λ \lambda λ加權)可以是測量兩個密度圖之間差異的任何函數,但在本文中,我們主要考慮使用DMCount Loss[6],因為真實值沒有被平滑處理。
B. CLIP-EBC的結構

圖1展示了我們的CLIP-EBC模型結構,其中包含了精細的箱子{0},{1},…,{m}。由于CLIP-EBC的機制建立在我們提出的EBC框架之上,因此這里我們主要關注如何生成預測概率圖 P ? \boldsymbol{P}^{*} P?。第三節A部分將提供更多關鍵細節,包括人群密度圖的生成、推理過程以及訓練損失函數。

CLIP-EBC的圖像編碼器由一個特征提取器和一個 1 × 1 1 \times 1 1×1卷積層組成。由于CLIP-EBC基于塊預測,我們移除了CLIP圖像編碼器的最終池化層和線性投影層,并使用剩余的骨干網絡來提取特征圖 H \boldsymbol{H} H,其維度為 c × ( H / / r ) × ( W / / r ) c \times (H // r) \times (W // r) c×(H//r)×(W//r),其中 c c c表示輸出通道數(對于ResNet骨干網絡)或嵌入維度(對于ViT骨干網絡)。隨后,我們不是使用多個投影層,而是采用一個 1 × 1 1 \times 1 1×1卷積層將 H \boldsymbol{H} H轉換到CLIP嵌入空間,得到 F img \mathbf{F}^{\text{img}} Fimg,其維度為 d × ( H / / r ) × ( W / / r ) d \times (H // r) \times (W // r) d×(H//r)×(W//r),其中 r r r表示降維因子(對于ResNet)或塊大小(對于ViT)。

對于文本特征提取,我們首先從輸入文本提示開始考慮。給定一組箱子 { B i ∣ i = 1 , ? , n } \left\{\mathcal{B}_{i} \mid i=1, \cdots, n\right\} {Bi?i=1,?,n},對于每個箱子 B i \mathcal{B}_{i} Bi?,我們根據以下規則生成一個文本提示:

  • 如果 B i = { b i } \mathcal{B}_{i}=\left\{b_{i}\right\} Bi?={bi?} b i < m b_{i}<m bi?<m,其中 m m m 表示最大允許計數,則文本提示為“'‘There is/are b i b_{i} bi? person/people’",其中“is/are”和“person/people”的選擇取決于 b i b_{i} bi? 是否大于1。
  • 如果 B i \mathcal{B}_{i} Bi? 包含多個元素(在這種情況下,這些元素必須是連續的整數且都小于 m m m),則文本提示變為“''There is/are between min ? ( B i ) \min \left(\mathcal{B}_{i}\right) min(Bi?) and max ? ( B i ) \max \left(\mathcal{B}_{i}\right) max(Bi?) person/people { }^{\prime \prime}”。同樣,“is/are”和“person/people”的選擇也是為了確保語法正確性。
  • 如果 B i = m \mathcal{B}_{i}=m Bi?=m,則文本提示為“‘‘There are more than m m m people’’”。

接下來,將得到的 n n n 個文本提示通過CLIP的分詞器進行分詞。然后,我們將分詞后的文本輸入到原始的CLIP文本編碼器中,在訓練過程中保持其參數不變。此過程生成了維度為 d × n d \times n d×n 的文本嵌入 F t x t \boldsymbol{F}^{\mathrm{txt}} Ftxt

有了圖像特征圖 F img? \boldsymbol{F}^{\text {img }} Fimg? 和文本特征 F t x t \boldsymbol{F}^{\mathrm{txt}} Ftxt,我們就可以計算概率圖 P ? \boldsymbol{P}^{*} P?。首先,我們計算圖像特征向量 F : , i , j i m g \boldsymbol{F}_{:, i, j}^{\mathrm{img}} F:,i,jimg? n n n 個提取的文本嵌入之間的余弦相似度。隨后,我們使用softmax對這些相似度進行歸一化,以獲得概率 P : , i , j ? \boldsymbol{P}_{:, i, j}^{*} P:,i,j??,它表示塊 ( i , j ) (i, j) (i,j) n n n 個箱子上的概率分數。為了獲得預測的人群密度圖 Y ? \boldsymbol{Y}^{*} Y?,我們使用方程(1),而用于訓練CLIP-EBC的損失函數則由方程(3)定義。

IV、實驗

我們利用四個公開的人群計數數據集進行了全面的實驗:ShanghaiTech A和B [18]、UCF-QNRF [19]和NWPU-Crowd [17]。

  1. 模型配置:為了與當前方法進行公平比較,我們主要關注塊大小為 r = 8 r=8 r=8的情況。利用雙線性插值來轉換特征圖的空間大小。我們將最小可識別尺度設置為 s = 4 s=4 s=4,因此每個塊中的最大允許計數值為 m = ( 8 ÷ 4 ) 2 = 4 m=(8 \div 4)^{2}=4 m=(8÷4)2=4。這種配置產生了五個細粒度的箱子: 0 , 1 , 2 , 3 , 4 {0},{1},{2},{3},{4} 0,1,2,3,4。此外,我們還探索了其他兩種塊大小: r = 16 r=16 r=16 r = 32 r=32 r=32。對于這兩個選項,我們考慮了具有不同粒度的三組箱子(詳見第IV-B節)。

  2. 訓練細節:我們使用CLIP [10]的權重來初始化CLIP-EBC模型。對于其余模型,我們使用在ImageNet上預訓練的權重來初始化編碼器,而解碼器(如果適用)則使用從正態分布中隨機抽取的值進行初始化。在提出的DACE損失(由方程(3)定義)中,我們將 λ \lambda λ設置為1,除非另有說明。我們使用Adam優化器[22]來訓練我們的所有模型,初始學習率為 1 e ? 4 1e-4 1e?4,該學習率通過余弦退火調度[23]進行調整。在整個訓練過程中,我們隨機裁剪大小為 448 u × 448 u 448u \times 448u 448u×448u的補丁,其中 u u u從均勻分布 U n i f o r m [ 1 , 2 ] Uniform[1,2] Uniform[1,2]中隨機抽取,然后將這些補丁調整到 448 × 448 448 \times 448 448×448大小。這種增強策略旨在增加較大箱子的樣本量。對于使用基于ViT的圖像主干的CLIP-EBC,輸入大小為 256 × 256 256 \times 256 256×256。對于所有數據集,批量大小固定為8。

  3. 評估指標:遵循現有方法,我們使用平均絕對誤差(MAE)和均方根誤差(RMSE)來評估我們的模型。這些評估指標定義如下:

MAE = 1 N ∑ i = 1 N ∣ C i ? C i ? ∣ , RMSE = 1 N ∑ i = 1 N ( C i ? C i ? ) 2 , \text{MAE}=\frac{1}{N} \sum_{i=1}^{N}\left|C_{i}-C_{i}^{*}\right|, \quad \text{RMSE}=\sqrt{\frac{1}{N} \sum_{i=1}^{N}\left(C_{i}-C_{i}^{*}\right)^{2}}, MAE=N1?i=1N?Ci??Ci??,RMSE=N1?i=1N?(Ci??Ci??)2 ?,

其中 N N N是測試集中的圖像數量, C i C_{i} Ci?是圖像 i i i的真實全局計數值, C i ? C_{i}^{*} Ci??是通過在預測的密度圖 Y ? \boldsymbol{Y}^{*} Y?上積分得到的預測計數值。值得注意的是,較低的分數表示更好的結果。

A. 與最先進方法的比較

我們將EBC和CLIP-EBC與最先進的人群計數方法進行比較。具體來說,我們重新實現了CSRNet [3]和DMCount [6],僅通過更改它們的輸出維度來使它們適應我們提出的EBC框架。修改后的模型分別表示為CSRNet-EBC和DMCountEBC。表I列出了結果并展示了我們的方法的有效性。根據CSRNet-EBC和DMCount-EBC所達到的性能,并與它們的基于回歸的版本進行比較,我們可以得出結論,我們的EBC框架可以提供顯著的性能提升。特別是在NWPU驗證集上,CSRNet和DMCount可以顯著提高性能:在MAE下分別提升 45.5 % 45.5\% 45.5% 43.8 % 43.8\% 43.8%,在RMSE下分別提升 76.9 % 76.9\% 76.9% 73.2 % 73.2\% 73.2%。我們的CLIP-EBC模型也可以達到與最先進方法相當的結果。特別是,我們基于ResNet的CLIP-EBC優于現有的人群計數方法,在上海科技數據集A部分上達到55.0 MAE,B部分上達到6.3 MAE,在NWPU上達到38.6 MAE。這些結果表明,原始的CLIP模型可以在人群計數中以顯著的性能得到利用。在UCF-QNRF和NWPU上,我們的DMCount-EBC表現最佳,分別達到了77.2 MAE和39.7 MAE。
B. 箱粒度的影響

由于計數變量在較大的塊中可以取不同的值,我們探索了箱粒度對EBC框架的影響,特別是在塊大小為 r = 16 r=16 r=16 r = 32 r=32 r=32的情況下。在本實驗中,我們研究了三個層次的粒度。細粒度箱被配置為每個箱僅包含一個整數。由于每個箱中的代表性計數值就是包含的整數本身,這種策略可以提供偏差最低的箱。對于粗粒度箱,每個箱包含兩個整數(不包括0,因為0自身構成一個箱)。這種方法承認了計數值的長尾分布,并旨在增加每個箱的樣本量。在構建動態箱時,我們采用了一種策略,即將小計數值視為單獨的箱,而將較大的計數值每兩個組合成一個箱。

表II展示了在UCF-QNRF數據集上的結果。對于 r = 16 r=16 r=16 r = 32 r=32 r=32,動態粒度提供了最佳性能。這是因為動態粒度可以在減少代表性計數值的偏差和增加樣本量之間取得良好的平衡。此外,在這兩種情況下,細粒度都優于粗粒度,這得益于代表性計數值的偏差較小。另外,在MAE指標下,使用較小的塊大小可以提供更好的結果,因為它可以創建更多的塊,因此模型可以在訓練過程中更好地利用每個人的位置信息。
C. 消融研究

在本節中,我們對EBC的三個關鍵組成部分進行了消融研究:離散化、標簽校正和損失函數。實驗特別在UCF-QNRF數據集[19]上進行,使用VGG-16[20]作為骨干模型。基于我們的離散化策略建立的模型具有細粒度的箱,每個箱僅包含一個整數。結果總結在表III中,其中“Enhanced Bins”表示使用我們提出的離散化策略,而 λ \lambda λ表示方程(3)中計數損失項的權重。特別是,當 λ = 0 \lambda=0 λ=0時,僅使用分類損失。基線模型Blockwise[11]將計數值分類為相鄰的連續區間,實現了140.6的MAE。然而,將連續區間替換為整數值的箱導致了顯著的改進,實現了88.3的MAE,即令人印象深刻的 37.1 % 37.1\% 37.1%的提升。這一結果強調了在我們的場景中,決策邊界可以被更有效地學習。進一步限制標簽中的最大允許計數值導致MAE降低到85.8。關于 λ \lambda λ,將其值從0.00增加到1.00會提高性能,最佳結果在 λ = 1 \lambda=1 λ=1時達到(77.9)。然而, λ \lambda λ的較大值(例如,2)會損害模型的泛化能力。

為了驗證性能改進與骨干網絡的獨立性,我們還使用ResNet[26]、MobileNetV2[27]和DenseNet[28]測試了我們的EBC框架。表IV中的結果表明,與基線的逐塊分類方法[11]相比,EBC無論選擇哪種骨干網絡,始終都能實現重要的性能改進。
D. 可視化

我們利用具有ResNet圖像骨干的已訓練CLIP-EBC模型,在上海科技大學數據集[18]上生成預測的人群密度圖。為了可視化目的,我們精心挑選了一組六張具有代表性的圖像——三張來自A部分,三張來自B部分。圖6中,第一行展示了這六張圖像,第二行展示了真實的人群密度圖(為了說明,已通過高斯核進行平滑處理),第三行展示了預測的人群密度圖(已調整至與圖像相同大小)。這六張圖像的選擇確保了覆蓋了一系列廣泛的人群密度范圍,從最稀疏的場景(例如,左列中的15人)到最擁擠的情況(例如,右列中的1111人)。這些結果共同展示了模型在不同人群密度水平上的穩健性能。

V、結論

在本文中,我們展示了CLIP在精確人群密度估計中的能力。通過將計數重新表述為逐塊分類問題,我們縮小了CLIP與人群計數之間的差距,并提出了增強的逐塊分類框架(EBC)。在EBC框架內,我們進一步提出了CLIP-EBC,這是第一個基于CLIP并具備密度圖生成功能的人群計數方法。為了將局部計數值分類到預定義的箱中,CLIP-EBC比較了相應局部圖像特征與每個文本特征之間的相似性,然后在其上使用softmax來生成概率分數。在多個數據庫上的實驗展示了EBC和CLIP-EBC的有效性。在未來,我們將研究使用CLIP-EBC來計數任何物體,以充分發揮CLIP的潛力。

1) 影響聲明
與其他許多人群計數方法一樣,我們的模型也分析人群圖像,這可能會引發隱私關注。在現實應用中,人們可能會感到不適,因為他們知道自己正在被監控和計數,而未經他們明確同意。此外,一些數據集可能存在偏差,而基于這些數據集訓練的模型可能在預測中表現出偏差。這可能導致某些人口群體被低估或高估,從而導致不公平的后果或加劇現有的社會差異。

2) 局限性
CLIP已經在數百萬個圖像-文本對上進行了預訓練,因此理論上應該能夠計算任何類型的物體,但本文僅關注了人類。在未來,我們計劃探索其在計算其他物體方面的應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41025.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41025.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41025.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Nettyの參數優化簡單RPC框架實現

本篇介紹Netty調優&#xff0c;在上篇聊天室的案例中進行改造&#xff0c;手寫一個簡單的RPC實現。 1、超時時間參數 CONNECT_TIMEOUT_MILLIS 是Netty的超時時間參數&#xff0c;屬于客戶端SocketChannel的參數&#xff0c;客戶端連接時如果一定時間沒有連接上&#xff0c;就會…

Spring Cloud 是什么?(Spring Cloud 組件介紹)

什么是 Spring Cloud&#xff1f; Spring Cloud 是微服務系統架構的一站式解決方案&#xff0c;是各個微服務架構落地技術的集合體&#xff0c;讓架構師、 開發者在使用微服務理念構建應用系統的時候&#xff0c; 面對各個環節的問題都可以找到相應的組件來處理&#xff0c;比…

二叉樹的遍歷算法:前序、中序與后序遍歷

在數據結構與算法中&#xff0c;二叉樹的遍歷是基礎且重要的操作之一&#xff0c;它允許我們按照某種順序訪問樹中的每個節點。常見的二叉樹遍歷方式有前序遍歷&#xff08;Preorder Traversal&#xff09;、中序遍歷&#xff08;Inorder Traversal&#xff09;和后序遍歷&…

React 19 競態問題解決

競態問題/競態條件 指的是&#xff0c;當我們在交互過程中&#xff0c;由于各種原因導致同一個接口短時間之內連續發送請求&#xff0c;后發送的請求有可能先得到請求結果&#xff0c;從而導致數據渲染出現預期之外的錯誤。 因為防止重復執行可以有效的解決競態問題&#xff0…

聊天廣場(Vue+WebSocket+SpringBoot)

由于心血來潮想要做個聊天室項目 &#xff0c;但是仔細找了一下相關教程&#xff0c;卻發現這么多的WebSocket教程里面&#xff0c;很多都沒有介紹詳細&#xff0c;代碼都有所殘缺&#xff0c;所以這次帶來一個比較完整得使用WebSocket的項目。 目錄 一、效果展示 二、準備工…

html+css+js圖片手動輪播

源代碼在界面圖片后面 輪播演示用的幾張圖片是Bing上的&#xff0c;直接用的幾張圖片的URL&#xff0c;誰加載可能需要等一下&#xff0c;現實中替換成自己的圖片即可 關注一下點個贊吧&#x1f604; 謝謝大佬 界面圖片 源代碼 <!DOCTYPE html> <html lang&quo…

內存對齊宏ALIGN的理解

內存對齊宏ALIGN的理解 在Android Camera HAL代碼中經常看到ALIGN這個宏&#xff0c;主要用來進行內存對齊&#xff0c;下面是v4l2_wrapper.cpp中ALIGN的一些定義 //v4l2_wrapper.cpp中內存分配進行對其的操作和定義#define ALIGN( num, to ) (((num) (to-1)) & (~(to-1)…

【Android】自定義換膚框架03之自定義LayoutInflaterFactory

AppCompatActivity是如何創建View的 Activity通過LayoutInflater解析出XmlLayout相關信息LayoutInflater內部維護了一個InflaterFactory對象InflaterFactory接口包含了一個onCreateView方法&#xff0c;用于創建View將解析出的Xml信息轉為AttributeSet&#xff0c;交給Inflate…

安全測試之使用Docker搭建SQL注入安全測試平臺sqli-labs

1 搜索鏡像 docker search sqli-labs 2 拉取鏡像 docker pull acgpiano/sqli-labs 3 創建docker容器 docker run -d --name sqli-labs -p 10012:80 acgpiano/sqli-labs 4 訪問測試平臺網站 若直接使用虛擬機&#xff0c;則直接通過ip端口號訪問若通過配置域名&#xff0…

PyQt多線程詳解

PyQt多線程是在PyQt框架中利用多線程技術來提高應用程序的響應性和性能的一種方法。下面將詳細說明PyQt多線程的基本概念、應用場景以及實現方式。 一、PyQt多線程的基本概念 在PyQt中&#xff0c;多線程指的是在單個程序實例內同時運行多個線程。每個線程都可以執行不同的任…

第十五章 Nest Pipe(內置及自定義)

NestJS的Pipe是一個用于數據轉換和驗證的特殊裝飾器。Pipe可以應用于控制器&#xff08;Controller&#xff09;的處理方法&#xff08;Handler&#xff09;和中間件&#xff08;Middleware&#xff09;&#xff0c;用于處理傳入的數據。它可以用來轉換和驗證數據&#xff0c;確…

【Linux進階】文件系統5——ext2文件系統(inode)

1.再談inode (1) 理解inode&#xff0c;要從文件儲存說起。 文件儲存在硬盤上&#xff0c;硬盤的最小存儲單位叫做"扇區"&#xff08;Sector&#xff09;。每個扇區儲存512字節&#xff08;相當于0.5KB&#xff09;。操作系統讀取硬盤的時候&#xff0c;不會一個個…

記錄excel表生成一列按七天一個周期的方法

使用excel生成每七天一個周期的列。如下圖所示&#xff1a; 針對第一列的生成辦法&#xff0c;使用如下函數&#xff1a; TEXT(DATE(2024,1,1)(ROW()-2)*7,"yyyy/m/d")&" - "&TEXT(DATE(2024,1,1)(ROW()-1)*7-1,"yyyy/m/d") 特此記錄。…

charles使用教程

安裝與配置 下載鏈接&#xff1a;https://www.charlesproxy.com/download/ 進行移動端抓包&#xff1a; 電腦端配置&#xff1a; 關閉防火墻 Proxy–>勾選 macOS Proxy Proxy–>Proxy Setting–>填入代理端口8888–>勾選Enable transparent http proxying 安裝c…

俄羅斯方塊的python實現

俄羅斯方塊游戲是一種經典的拼圖游戲&#xff0c;玩家需要將不同形狀的方塊拼接在一起&#xff0c;使得每一行都被完全填滿&#xff0c;從而清除這一行并獲得積分。以下是該游戲的算法描述&#xff1a; 1. 初始化 初始化游戲界面&#xff0c;設置屏幕大小、方塊大小、網格大小…

昇思25天學習打卡營第1天|初識MindSpore

# 打卡 day1 目錄 # 打卡 day1 初識MindSpore 昇思 MindSpore 是什么&#xff1f; 昇思 MindSpore 優勢|特點 昇思 MindSpore 不足 官方生態學習地址 初識MindSpore 昇思 MindSpore 是什么&#xff1f; 昇思MindSpore 是全場景深度學習架構&#xff0c;為開發者提供了全…

女生學計算機好不好?感覺計算機分有點高……?

眾所周知&#xff0c;在國內的高校里&#xff0c;計算機專業的女生是非常少的&#xff0c;很多小班30人左右&#xff0c;但是每個班女生人數只有個位數。這就給很多人一個感覺&#xff0c;是不是女生天生就不適合學這個東西呢&#xff1f;女生是不是也應該放棄呢&#xff1f;當…

ubuntu 進入命令行

在Ubuntu中&#xff0c;有幾種方法可以進入命令行界面&#xff1a; 啟動時選擇命令行模式&#xff1a; 在計算機啟動時&#xff0c;如果安裝了GRUB引導加載器&#xff0c;可以通過GRUB菜單選擇進入命令行模式。這通常涉及到在啟動時按下Shift鍵或其他指定鍵來顯示GRUB菜單&…

常見算法和Lambda

常見算法和Lambda 文章目錄 常見算法和Lambda常見算法查找算法基本查找&#xff08;順序查找&#xff09;二分查找/折半查找插值查找斐波那契查找分塊查找擴展的分塊查找&#xff08;無規律的數據&#xff09; 常見排序算法冒泡排序選擇排序插入排序快速排序遞歸快速排序 Array…

SpringBoot新手快速入門系列教程二:MySql5.7.44的免安裝版本下載和配置,以及簡單的Mysql生存指令指南。

我們要如何選擇MySql 目前主流的Mysql有5.0、8.0、9.0 主要區別 MySQL 5.0 發布年份&#xff1a;2005年特性&#xff1a; 基礎事務支持存儲過程、觸發器、視圖基礎存儲引擎&#xff08;如MyISAM、InnoDB&#xff09;外鍵支持基本的全文搜索性能和擴展性&#xff1a; 相對較…