如果我會發光,就不必害怕黑暗; 如果我自己是那麼美好,那麼一切恐懼就可以煙消雲散 當然,如果我可以做到
2017年9月10號
然而今天是9月17號了,不知道上週幹嘛去了。。。。
接着看paper了
《Cascade Residual Learning: A Two-stage Convolutional Neural Network for Stereo Matching》
這篇paper在related work裏介紹了其他幾個相關工作,其實都還是值得一讀的:FlowNet1.0,DispNet,GC-Net,Flownet2.0
No.1 flownet1.0——two insights
- 首先將cnn用於光流預測;
設計了新的網絡結構;
- 一是對pair image先單獨進行特徵提取,即針對兩張圖分別訓練兩個單獨網絡;
- 設計了計算disparity的correlation層,而且該層不涉及訓練;
增加了refine-net,雖然是簡單的unpooling+conv,但同時每層都會輸出預測,並將上層的預測結果進行線性插值後和本層的feature map進行concat,同時前幾層提取特徵的相應尺寸特徵圖也會和refine-net相應層的特徵圖進行concat,以獲取更多的全局信息。
No.2 Flownet2.0。這篇文章前邊的blog有講過(flownet2.0_blog),和flownet1.0最大的不同就是提出了stacked-network。當然,文中也提出了很多具有一定普適性的訓練trick。
No.3 Dispnet。網絡結構如下圖所示。和flownet的不同之處在於:
- 它在upconv層之間增加了conv層,使得視差預測結果變得更加的平滑。
- 提出了新的correlation layer;
- 每個upconv層輸出結果都會求loss,底層網絡的梯度更新不再只是輸出層的loss梯度,還有本層loss的梯度。
最後,就講講開篇paper了。這篇paper的網絡結構和flownet很像,最大的區別在於網絡的輸入變得更加的豐富了。
- Disfullnet——full強調的是hourglass網的輸出輸入同尺寸大小;
- DisResnet——Res強調的是在Disfullnet的輸出結果上進行rectifine;
- 重點四DisResnet的輸入包括了左圖、右圖、利用disfullnet的輸出視差圖對右圖進行warp操作生成一張左圖、然後就是原始左圖好生成左圖的差值圖、再就是disfullnet的輸出的視差圖。一般操作是將上層的輸出作爲下層的輸入,再進一步就是上一網塊的中間層輸出skip作爲下一塊的輸入。那麼這裏爲什麼還會有個誤差圖和生成圖作爲輸入呢?
- 生成圖作爲輸入比較不好理解,因爲它包含的信息原始左圖都有,而且生成圖就相當於包含噪聲的原始左圖;
- 最重要的是誤差圖,這個也是爲什麼將後一個網叫做resnet的一大原因。而且誤差圖和生成左圖必須有一個。當然,有了誤差圖,相當於給了後邊網絡一個很強的先驗,要是隻給生成左圖,網絡還需要自己去發現錯誤,但有了錯誤圖,後續網絡的訓練就會變得更加的簡單了。
- 還有一點值得一提,那就是會將disfullnet的輸出做尺寸縮放,和disresnet的各個upconv層輸出的對應尺寸加起來,然後參與dieresnet的loss計算。