# Abstract CCTrans - 一種新的人群計數方法 1. 方法簡介: - 目前,大多數人群計數方法都依賴卷積神經網絡(CNN),用以萃取局部特徵。 - 然而,由於有限的感知範圍,CNN無法很好地建模全局上下文。 - 本論文提出 CCTrans 方法,旨在簡化設計流程,並利用變換器模型輕鬆建模全局上下文。 2. 主要組件: - 金字塔視覺變換器骨幹:用於捕捉全局人群信息。 - 金字塔特徵聚合(PFA)模型:用於結合低級和高級特徵。 - 高效回歸頭部:採用多尺度膨脹卷積(MDC)以預測密度圖。 3. 損失函數: - 針對本方法定制的損失函數,以進一步優化性能。 4. 實驗結果: - 在多個弱監督和全監督人群計數基準上,CCTrans 方法均取得了新的最佳效果。 - 此外,我們目前在 NWPU-Crowd 排行榜上排名第一。 5. 代碼: - 本論文作者將提供相關代碼,以供其他研究者使用。 # Introduction **標題:** CCTrans - 簡化人群計數的新方法 **1. 背景** - 人群計數是計算機視覺的研究熱點,用於估計場景中的人群數量,廣泛應用於城市規劃和交通監控等領域。 - 主流方法通常使用卷積神經網絡(CNN)來設計,但仍存在一些挑戰。 **2. 挑戰** - 地點靠近攝像機的人群規模較大,密度較低,反之亦然,導致圖像內出現劇烈的規模和密度變化。 - CNN-based模型在建模全局上下文時,由於感知範圍有限,無法很好地解決此問題。 **3. 研究方向** - 過去的方法嘗試通過多列架構或引入輔助任務來改進CNN-based模型,但存在效率低下和複雜性高的問題。 - 最近的研究著重於使用不同的注意機制,但需要調整敏感的超參數。 **4. 新方法 - CCTrans** - 使用變換器(transformer)簡化人群計數流程,構建名為CCTrans的高性能模型,能提取帶有全局上下文信息的語義特徵。 - 設計有效的特徵聚合塊和多尺度感知範圍的簡單回歸頭部,以增強特徵捕捉並獲得準確的回歸結果。 - 定制弱監督和全監督方式下的損失函數,使用平滑加權損失和平滑L1損失。 **5. 實驗結果** - 在五個流行的基準測試中,包括UCF CC 50、ShanghaiTech Part A和Part B、UCF QNRF和NWPU-Crowd,CCTrans在弱監督和全監督設置下均實現了新的最佳效果。 - 在NWPU-Crowd排行榜上,CCTrans排名第一。 **結論:** CCTrans通過使用變換器簡化人群計數流程,並優化模型結構和損失函數,實現了優越的性能,成為人群計數領域的新亮點。 # Proposed Method ![image](https://hackmd.io/_uploads/B1aav-Jwa.png) 首先,輸入圖像被切割成固定大小的圖像區塊。然後,輸出被扁平化成一維向量序列。接下來,使用金字塔變換器主幹來從序列中提取全局特徵。然後,每個階段的一維序列被重新塑形成二維特徵圖並上採樣至相同解析度。接著,在這些特徵圖上進行逐元素相加操作。最後,應用一個具有多尺度接收域的簡單迴歸頭,以迴歸密度圖。最終的密度圖和其所有像素值的總和被用來分別構建弱監督和全監督方式的損失函數。 **提議方法的筆記** 1. **架構總覽** - 參見圖1。 2. **處理步驟** - **步驟1**: 輸入圖像被切割成固定大小的圖像區塊。 - **步驟2**: 將輸出扁平化成一維向量序列。 - **步驟3**: 使用金字塔變換器主幹從序列中提取全局特徵。 - **步驟4**: 將每個階段的一維序列重新塑形成二維特徵圖,並上採樣至相同解析度。 - **步驟5**: 在特徵圖上進行逐元素相加操作。 3. **輸出處理** - 應用具有多尺度接收域的簡單迴歸頭以迴歸密度圖。 4. **損失函數** - 使用最終密度圖和其所有像素值的總和來構建弱監督和全監督方式的損失函數。 # 2D Image to 1D Sequence 一張圖像在進入變換器之前被轉換為一維序列。我們將輸入圖像表示為 I ∈ R^H×W×3^,其中 H、W 和 3 分別代表其高度、寬度和通道大小。然後,我們將其切割成 H/K × W/K 的圖像區塊,每個區塊的大小為 K × K × 3。我們將這個二維區塊陣列扁平化為一維區塊序列 x ∈ R^N×D^,其中 N = HW/K², D = K × K × 3。我們通過應用一個可學習的投影 f : x~i~ → e~i~ ∈ R^D^ (i=1,...,N) 來對序列 x 進行區塊嵌入,以獲得序列 e ∈ R^N×D^。通過這種方式,第 i 個圖像區塊 x~i~ 的空間和通道特徵被轉換成第 i 個嵌入向量 e~i~ 的嵌入特徵。 **圖像轉換為一維序列的筆記** 1. **圖像表示** - 圖像 I ∈ R^H×W×3^,其中 H、W、3 分別為高度、寬度、通道大小。 2. **區塊切割** - 將圖像切割成 H/K × W/K 的區塊,每個區塊大小為 K × K × 3。 3. **扁平化處理** - 將二維區塊陣列扁平化成一維區塊序列 x ∈ R^N×D^。 - N = HW/K², D = K × K × 3。 4. **區塊嵌入** - 透過可學習的投影 f : x~i~ → e~i~ ∈ R^D^ (i=1,...,N),對序列 x 進行區塊嵌入,得到序列 e ∈ R^N×D^。 5. **特徵轉換** - 第 i 個圖像區塊 x~i~ 的空間和通道特徵被轉換為第 i 個嵌入向量 e~i~ 的嵌入特徵。 # Transformer Backbone 變換器主幹 我們採用了金字塔變換器主幹 Twins(Chu等人,2021a),其特點是採用局部和全局注意力交替的方案。擁有局部和全局接收域,能捕捉短距離和長距離的關係。由於這種特定設計,Twins在多個基準測試中相較於其同類產品,展現出卓越的表現。此外,它更易於部署,方便實際應用。 基於標準變換器模組,Twins提出了空間可分離自我注意力(SSSA)模組,以減少計算量。為了實現此目的,第l層的輸入序列 Z^l−1^ 首先被重塑成二維特徵圖。接著,每個特徵圖可以在局部窗口內進行空間分組,以計算所謂的局部分組自我注意力(LSA)。在全球降採樣注意力(GSA)階段,Twins採用關鍵元素的降採樣作為每個窗口的代表,以減少成本。 具體來說,在LSA階段,特徵圖被均等劃分為 k~1~ × k~2~ 的子窗口。自我注意力計算在每個子窗口內局部進行。這樣,局部特徵可以有效地獲得。由於子窗口之間沒有通信,接下來的全局注意力就起作用了。在GSA階段,每個子窗口通過卷積操作產生一個代表。這個代表概括了子窗口的關鍵信息。然後,在所有子窗口的代表上進行自我注意力計算。這樣,子窗口可以通過它們的代表進行相互通信,從而捕捉全局特徵。交錯使用必要的多層感知器(MLP)模組、層標準化(LN)和殘差連接,可定義 Twins 變換器中第l層的結構如下所示: Z^'^~l~ = LSA(LN(Z~l−1~)) + Z~l−1~, (1) Z^''^~l~ = MLP(LN(Z^'^~l~)) + Z^'^~l~, (2) Z^'''^~l~ = GSA(LN(Z^''^~l~)) + Z^''^~l~, (3) Z~l~ = MLP(LN(Z^'''^~l~)) + Z^'''^~l~. (4)。 **變換器主幹 (Twins) 筆記** 1. **主幹概述** - 使用金字塔變換器主幹 Twins (Chu等人,2021a)。 - 特點:交替使用局部和全局注意力。 - 優勢:捕捉短距離和長距離關係,優異基準測試表現,易於部署。 2. **SSSA模組** - 空間可分離自我注意力(SSSA)模組降低計算量。 - 第l層輸入序列 Z^l−1^ 重塑成二維特徵圖。 3. **局部分組自我注意力 (LSA)** - 特徵圖在局部窗口內進行空間分組。 - 劃分為 k~1~ × k~2~ 子窗口,每個子窗口內進行局部自我注意力計算。 4. **全球降採樣注意力 (GSA)** - 在每個窗口中使用關鍵元素的降採樣來減少成本。 - 每個子窗口產生一個代表,通過卷積操作概括關鍵信息。 - 所有子窗口的代表上進行自我注意力計算,實現子窗口間的全局通信。 5. **層結構** - 包含多層感知器(MLP)模組、層標準化(LN)和殘差連接。 - 定義了 Twins 變換器第l層的結構。 # Pyramid Feature Aggregation 儘管變換器主幹能提取全局特徵,但高層的特徵圖仍缺乏細節信息,這些信息無法通過上採樣重建。這些高級特徵太模糊,無法區分不同物體的邊界,這使得人群計數模型難以學習人群的準確位置信息。為了解決這個問題,我們構建了一個模型來充分利用高級和低級信息。 對於編碼的特定階段 s,我們使用輸出序列 Z~s~ ∈ R^N×d^(s=1...T),其中包含全局上下文。然後我們將一維序列 Z~s~ 重塑為嵌入向量的二維網格,其高度和寬度都是 √N。考慮到淺層的特徵圖包含豐富的細節信息但缺乏語義,而深層的特徵圖則正好相反。我們構建了一個特徵金字塔,將高層的語義信息與低層的細節信息聚合起來。具體而言,我們將所有階段的特徵圖上採樣到輸入圖像大小的1/8,這是大多數工作中的常見選擇(Li、Zhang 和 Chen 2018)。這種解析度也有助於與其他方法進行公平比較。金字塔特徵聚合(PFA)的結構如圖1所示。 **金字塔特徵聚合 (PFA) 筆記** 1. **問題背景** - 高層特徵圖缺乏細節信息,難以區分不同物體邊界。 - 人群計數模型難以學習人群的準確位置信息。 2. **解決方案** - 構建模型以充分利用高級和低級信息。 3. **特定編碼階段** - 使用輸出序列 Z~s~ ∈ R^N×d^(s=1...T),包含全局上下文。 - 一維序列 Z~s~ 重塑為二維網格,高度和寬度均為 √N。 4. **特徵圖分析** - 淺層特徵圖:含豐富細節信息但缺乏語義。 - 深層特徵圖:含豐富語義但缺乏細節信息。 5. **特徵金字塔聚合** - 聚合高層的語義信息與低層的細節信息。 - 所有階段特徵圖上採樣到輸入圖像大小的1/8。 - 便於與其他方法進行公平比較。 6. **PFA結構** - 金字塔特徵聚合的結構展示於圖1。 # Regression Head with Multi-scale Receptive Fields ![image](https://hackmd.io/_uploads/rJS6uzkPa.png) 關於我們基於變換器的主幹和PFA區塊已經捕獲了足夠的全局信息。因此,我們只使用一個簡單的迴歸頭來迴歸準確的密度圖。具體來說,我們構建了一個具有多尺度接收域的模塊,以檢測全局尺度和密度變化。一種直接的方法是堆疊擴張卷積(DConv)層,如(Li、Zhang 和 Chen 2018;Yan、Yuan 和 Zuo 2019)。DConv層可以擴大接收域,同時保持空間分辨率。然而,這種設計需要在每一層仔細設計擴張係數,以避免網格效應(Fang等人,2020),其中一些像素在後續的卷積中被遺漏(見圖2)。網格效應對人群計數的結果有很大影響。因為超出捕獲範圍的人群尺度非常小,高層特徵圖中的一個丟失像素會使迴歸頭忽略幾個人。此外,深度堆疊層而非寬度堆疊(Szegedy 和 Ioffe 2016)有點耗時。這會增加訓練成本,並使模型難以擴展到實時場景。表5中的實驗結果顯示,這種設計比寬度堆疊要差。 受到DeepLabv3+(Chen、Papandreou 和 Kokkinos 2018)和RFB(Liu、Huang 和 Wang 2018)的啟發,我們設計了一個多尺度擴張卷積(MDC)區塊,通過並行堆疊不同擴張率的DConv層。但與ASPP(Chen、Papandreou 和 Kokkinos 2018)不同,MDC更加輕量但足夠強大,能夠獲得良好的性能。 具體來說,它包含三個列(C1、C2、C3)和一個快捷路徑。每個列由一個卷積層和一個擴張卷積層組成。我們將相應的核大小和擴張率設置得盡可能小,以適應充滿小尺度物體的人群計數場景。每個卷積層後跟一個批量歸一化(BN)層和一個ReLU激活函數。我們將每個列的輸出特徵圖連接起來,並與快捷路徑相加,以利用多尺度特徵。最後,我們使用1×1卷積層來迴歸密度圖。結構如圖1所示。 **基於變換器的主幹和PFA區塊筆記** 1. **基本設計** - 使用簡單的迴歸頭來迴歸準確的密度圖。 - 旨在檢測全局尺度和密度變化。 2. **擴張卷積(DConv)層** - 可擴大接收域,同時保持空間分辨率。 - 需要仔細設計擴張係數以避免網格效應。 3. **網格效應的影響** - 對人群計數結果有顯著影響。 - 高層特徵圖中丟失的像素可能導致忽略多個人。 4. **多尺度擴張卷積(MDC)區塊** - 由三個列(C1、C2、C3)和一個快捷路徑組成。 - 每個列包含一個卷積層和一個擴張卷積層。 - 核大小和擴張率設置為小尺度,適合人群計數場景。 - 每個卷積層後跟批量歸一化(BN)層和ReLU激活函數。 5. **特徵融合與迴歸** - 將每列的輸出特徵圖連接並與快捷路徑相加。 - 利用1×1卷積層進行密度圖迴歸。 - 較輕量但足夠強大,以獲得良好性能。 6. **結構展示** - 結構展示於圖1。 # Loss Function Design ## Loss function design for the fully-supervised setting. 我們的設計基於(Wang等人,2020)提出的一個流行的損失函數,該函數通過計數損失、最佳運輸(OT)損失和總變異(TV)損失的加權總和來表達。對於預測的密度圖 D 及其真實值 D₀,損失函數定義為: L~dm~ = L~1~(P, G) + λ~1~L~OT~ + λ~2~L~TV~(D, D^'^),(5) 其中 P 和 G 分別表示 D 和 D^'^ 的人群數量。λ~1~ 和 λ~2~ 是損失係數,它們在 DM-Count(Wang等人,2020)中設置為0.01和0.1。 OT損失有助於模型強大的擬合能力,以最小化預測密度圖和真實值之間的分佈差異。然而,Wang等人(2020)指出,它無法很好地近似人群稀疏區域的分佈,並另外使用額外的TV損失來穩定。但是,TV損失使用真實值的原始頭部標注,這不足以建立對人群的穩健表徵。特別是在一些稀疏場景中,人群具有較大的尺度,用一個像素來表示一個人是不合理的。為了解決這個問題,我們使用均方誤差,即L2,來規範預測和平滑標注圖之間的差距。通過應用自適應高斯核(Li、Zhang 和 Chen 2018)產生平滑特徵圖。總損失寫作, L~d~ = L~1~(P, G) + λ~1~L~OT~ + λ~2~L~2~(D, D^'^)。 (6) 在我們的實驗中,我們將 λ~1~ 固定為 0.01(如 Wang等人,2020),並僅微調 λ~2~。儘管這對我們的方法可能是次優的,但它仍然在幾個基準數據集上表現出良好的性能。 **基於變換器的密度圖迴歸損失函數筆記** 1. **損失函數定義** - L~dm~ = L~1~(P, G) + λ~1~L~OT~ + λ~2~L~TV~(D, D^'^)。(5) - 其中 P 和 G 分別代表 D 和 D₀ 的人群數量。 - λ~1~ 和 λ~2~ 為損失係數,在 DM-Count 中分別設為 0.01 和 0.1。 2. **OT損失(最佳運輸損失)** - 強化模型以最小化預測密度圖和真實值之間的分佈差異。 - 需要額外的 TV 損失來穩定稀疏區域的處理。 3. **TV損失(總變異損失)** - 使用真實值的原始頭部標注,但可能不足以建立穩健的人群表徵。 4. **改進方法** - 使用均方誤差(L2)來規範預測和平滑標注圖之間的差距。 - 應用自適應高斯核以產生平滑特徵圖。 - 新的總損失公式:L~d~ = L~1~(P, G) + λ~1~L~OT~ + λ~2~L~2~(D, D^'^)。(6) 5. **實驗設置** - λ~1~ 固定為 0.01,僅微調 λ~2~。 - 雖然可能是次優設計,但在多個基準數據集上仍展現良好性能。 ## Loss function design for the weakly-supervised setting 弱監督設置的損失函數設計。 為了增強魯棒性,我們使用平滑 L~1~ 損失而非 L~1~。因為在不同圖像中,人群數量變化巨大,而 L~1~ 對異常值敏感。我們的弱監督損失函數定義為: L~c~ = smooth~L1~(D, D^'^)。(7) 表6中的實驗結果也顯示,這種設計可以帶來性能的提升。 ![image](https://hackmd.io/_uploads/S10qkg6x0.png)