對ResNet和DenseNet的一點比較

之前的文章中,我曾經詳細的分析過DenseNet。隨着時間的推移,越來越多的人開始關注DenseNet並且把它應用到實際的項目中(我從百度搜索的統計上得到這個結論 😃)。所以我決定也在應用這方面寫一點。

當前卷積網絡使用最廣泛的兩種結構是ResNet和Inception,當然還有各種衍生系列以及它倆的合體Inception-Resnet。從結構特點上,它們都是某個小結構的組合,包括DenseNet也是這樣,這也符合一般的規律。但是ResNet和DenseNet有一點顯著的不同,那就是Residual Block比Dense Block要小得多。這個不同使Residual Block更容易靈活的拼接組合到各種不同的網絡裏,不見得一定要使用整個ResNet101或者ResNet152什麼的,單獨用幾個Residual Block也能見效,比如CycleGAN風格的生成器就使用了這種結構。Inception塊比殘差塊要大一些,但是作爲一個單獨的模塊使用也沒什麼問題。

而Dense Block就不一樣了,由於Dense的結構,每一層的Channel都不能太多,所以只能使用比較多的層數,典型的一個block要12層。根據我的試驗,縮減層數(爲保持平衡而)適當增加每層Channel的Dense Block效果很差,基本沒有使用價值。這也是DenseNet用的不如ResNet廣泛的一個原因。

這篇文章就是寫這一點 😃

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章