# CSPNet
###### tags: `paper` `已公開`
[toc]
## Introduction
作者認為推理計算過高。使因為網路優化中的梯度訊息重複導致的。
主要是改進DenseNet,減少計算量又可以保有準確率(或者略有提升)
1. Strengthening learning ability of a CNN,輕量化後準確率大福下降,因此希望加強CNN學習能力,使其輕量化後同時保持足夠的準確率。
2. Removing computational bottlenecks,太高的計算bottleneck會導致更多的週期來完成推理。因此,我們希望能夠將CNN中每一層的計算量平均分配,從而有效提升每個計算單元的利用率,從而減少不必要的能耗。
3. Reducing memory costs,動態隨機存取存儲器的晶圓製造成本非常昂貴,而且佔用大量空間。 為了減少記憶體使用,我們在特徵金字塔生成過程中採用跨通道池化來壓縮特徵圖。
## Method
### 多層感知機倒傳遞
一般來說,多層感知機的倒傳遞,其實可以理解為輸入為L損失函數的值往回傳(target-predict),
$$
h_{1} = W_{1}*x \\
h_{2} = W_{2}*W_{1}x \\
y = W_{3}*W_{2}W_{1}x
$$
`*`的右邊可以理解為該層的輸入流大小,左邊為該層輸入的權重大小。
倒傳遞$W_{1}$要更新的值為$W= W- \eta \Delta W$,
$$
\Delta W_{1}=L(\cdot)W_{3}W_{2}* x \\
\Delta W_{2}=L(\cdot)W_{3}*h_{1} \\
\Delta W_{3}=L(\cdot)*h_{2} \\
$$
$L(\cdot)$ 為原始梯度流
`*`的前面可以理解為梯度流(對比原先的輸入流)大小,右邊為該梯度流的權重大小,只是方向相反了
> 由此可知越淺的層數經過層層權重相乘,梯度越小

### DenseNet
將DenseNet的 transition 分成兩個part,一個part跟著原先的操作流向Dense Block,另一個直接與下一階段的transition 做結合。

原先的DenseNet 可以被表示成,以下

$$
h_{1} = W_{1}*x \\
h_{2} = W_{2}*[x, h_{1}] \\
h_{k} = W_{k}*[x, h_{1}, ..., h_{k-1}]
$$
倒傳遞可以這樣表示

### Cross Stage Partial DenseNet.

$x_{0} = [x_{0}^{'}、x_{0}^{''}]$
可以看出來自Dense block 的梯度是單獨的。另一方面,沒有經過密集層的特徵圖$x_{0}^{'}$也被單獨整合。對於更新權重的梯度信息,雙方不包含屬於另一方的重複梯度信息
總體而言,所提出的 CSPDenseNet 保留了 DenseNet 特徵重用特性的優勢,但同時通過截斷梯度流來防止過多的重複梯度信息。
這個idea是通過設計層次特徵融合策略實現的,並用於部分過渡層

### Partial Dense Block
設計Partial Dense Block的目的是為了
1.)增加梯度路徑:通過分裂合併策略,梯度路徑的數量可以增加一倍。由於採用了跨階段策略,可以緩解使用顯式特徵圖副本進行級聯帶來的缺點;
2.) 各層的平衡計算:通常,DenseNet 的基礎層中的通道數遠大於增長率。 由於部分密集塊中密集層操作所涉及的基礎層通道僅佔原始數量的一半,因此可以有效解決近一半的計算瓶頸;
3.)減少記憶體流量:假設一個DenseNet中一個dense block的base feature map size is $w×h×c$,增長率為d,並且總共有m dense layer。
那麼,那個密集塊的ConvolutionalInput/Output (CIO)是 $(c*m) + ((m^2+m)*d)/2$,部分密集塊的CIO是 $((c*m)+(m^2+m)*d)/2$
。 雖然m、d通常遠小於c,但部分密集塊最多可以節省網絡一半的記憶體流量。
### Partial Transition Layer
設計部分過渡層的目的是最大化梯度組合的差異。
部分過渡層是一種分層特徵融合機制,它使用截斷梯度流的策略來防止不同層學習重複的梯度信息。
在這裡,我們設計了 CSPDenseNet 的兩種變體來展示這種梯度流截斷如何影響網絡的學習能力
- Apply CSPNet to ResNeXt

### Exact Fusion Model (EFM)
##### Looking Exactly to predict perfectly
尋找精確預測完美。我們提出了 EFM,它可以為每個錨點捕獲適當的視野,從而提高單級目標檢測器的準確性。
- 對於分割任務,由於像素級標籤通常不包含全局信息,通常更可取的是考慮更大的補丁以獲得更好的信息檢索。
- 然而,對於圖像分類和對象檢測等任務,從圖像級和邊界框級標籤觀察時,一些關鍵信息可能會模糊不清。
[它的研究表示](https://arxiv.org/abs/1802.10171)**發現CNN在從圖像級標籤中學習時經常會分心,並得出結論認為這是兩階段目標檢測器優於單階段目標檢測器的主要原因之一**。聚合特徵金字塔。提出的EFM能夠更好地聚合初始特徵金字塔。
##### Aggregate Feature Pyramid
提出的 EFM 能夠更好地聚合初始特徵金字塔。EFM基於 YOLOv3 ,它為每個ground truth 物件準確分配一個邊界框。 每個 groundtruth 邊界框對應一個超過閾值 IoU 的錨框。如果一個anchor box的大小等於grid cell的FoV,那麼對於$s^{th}$ scale的grid cell,對應的bounding box的下界是$(s-1)^{th}$,上界是$(s+1)^{th}$ scale。因此,EFM 從三個尺度組裝特徵
##### Balance Computarion
由於來自特徵金字塔的級聯特徵圖是巨大的,它引入了大量的記憶體和計算成本。 為了緩解這個問題,我們結合了 Maxout 技術來壓縮特徵圖。
![Uploading file..._i0kf5zk5n]()