1.Contribution

主要是研究了segmentation的mask如何作用於counting,會獲得更好的效果

2.Model

(1)backbone

Part1:

C(1, 64, 3)-C(64, 64, 3)-MP-C(64, 128, 3)-C(128, 128, 3)-MP-C(128, 128, 3)

C(輸入通道,輸出通道,卷積核尺寸),MP代表max pooling

Part2:

part2是兩個串聯起來的模塊,模塊結構就是上圖的(b)

(2)mask prediction和density map prediction

mask prediction的結構就是兩層卷積C(256, 256, 3)-C(256, 1, 1). density map分支由於mask作用的策略不同,而不同。

(3)關於mask分支的ground truth的製作

本文對counting分支的ground truth採用的是固定高斯核的方法,而mask分支的ground truth就是把counting的ground truth非0的值都變成1,變成一個分割的ground truth

3.5種使用mask的方案

結構說明,a1代表backbone產生的feature map,有256層,b1代表mask分支產生的feature map 256層,最後通過一個1x1的卷積產生1層的mask,c1跟b1一樣,是通過跟mask分支一樣結構的counting分支產生的256層的feature map,也要經過一個1x1的卷積產生1層的density map,d1和e1在方案四中解釋

5種方案:

①方案一

train時,直接用ground truth作為mask作用於counting分支,test時,才用mask分支predict的二值化mask作用於counting分支

②方案二

train時,將mask分支輸出的,還沒有經過二值化的mask作用於counting分支,兩個map點乘的,獲得組後的density map,這樣好處在於mask的作用比二值化來的smooth,同時counting分支的反向傳播可以更新mask分支

③方案三

同方案二,唯一的不同在於predict的mask經過二值化再去作用於counting分支,但是由於二值化問題,counting分支的loss無法傳播到mask分支,所以中間加了個STE操作,STE的解釋要看paper:

《Estimating or propagating gradients through stochastic neurons for conditional computation》

這樣的話,counting分支的loss依舊可以反向傳播到mask分支

④方案四

不直接將mask乘到density map上,而是將mask通過C(1,256,1)轉化為與a1一樣256層的feature map,即d1,然後與a1 concat起來,變成512層的feature map,最後經過C(512, 256, 3)-C(256, 256, 3)-C(256, 1, 1),變成1層的density map輸出

在train時,直接用segmentation的ground truth作為mask去產生256層feature,test時,用的是mask分支產生的二值化的mask去轉化為256層的feature

⑤方案五

結構同方案四,只是train時用的不是ground truth,而是用mask分支預測的沒有二值化的mask去轉化為feature,預測時,也是如此。

4.Experiment

(1)loss

Lm是mask分支分割用的loss,為每個點作為二分類的BCEloss,Lr是density map的loss,就是MSE, α沒說是多少

(2)訓練細節

Adam,lr=1e-5,Adam訓練11個epoch後,轉用SGD,每20個epoch,lr*0.1。採用固定size的patch,隨機從training data中crop出來,同時採用鏡像對稱護理

(3)5種方案的實驗結果對比

baseline1是隻有backbone+counting分支

baseline2是更深版本的baseline1

可以發現方案1用二值化的mask,效果反而變差了,方案2說明mask是有用的,方案3效果差是因為採用二值化的mask,儘管counting的loss可以傳播到mask分支,但是二值化後傳播效果也不好,方案4說明儘管採用了二值化的mask,但是轉化為feature的方式要更好,方案5則進一步說明瞭不用二值化的mask,以及轉化為feature的效果

(4)mask分支的作用

為了排除不是因為雙路網路結構,而確實是因為mask的作用,所以設置了這個實驗,baseline3跟方案5的結構很像,但是取消了segmentation的訓練,整個網路就是一個單純的雙路網路,上面實驗證明,加了mask的訓練是有用的

(5)公開數據集上的結果

①ShanghaiTech

②UCF_CC_50

③WorldExpo10

④MALL

5.Comment

本文最大的貢獻在於探究了mask如何作用於counting是最好的,也證明瞭相比於直接將mask和density map相乘,將mask轉化為feature map要更好


推薦閱讀:
相關文章