1. 關於Shift-and-stitch的一點解釋
FCN原文如下:Process each of these f2 inputs, and interlace the outputs so that the predictions correspond to the pixels at the centers of their receptive fields。
翻譯過來大致就是處理每個 f2 輸入,並交錯輸出,以便預測與其接受字段的中心的像素相對應
關於這個簡書上有一個詳盡的解釋並給出了具體的示例圖。但是我有點笨,stitch過程沒讀明白。後來注意到這個原文的交錯輸出才恍然大悟
那就也舉那個例子吧
簡書這個例子如下圖:
回家去補圖。
前面的就不多說了。簡書上說的很明白,生成了4張pool圖。下面單講stitch過程。注意交錯輸出幾個字。目的是上採樣,將圖像擴大。根據小圖3*3可以知道原圖大小爲6*6.但是真正的原圖是5*5啊,捨棄最左側一行一列即可。
下面開始交錯輸出:
第一次:相當於擴大原圖A的A(0,0)部分,就去小圖的各個(0,0)部分取值交錯填入吧。完成了第一次交錯輸出。A(0,0)有4個像素點哦,把A看成分塊矩陣更好理解。
7 | 12 | ||||
25 | 25 | ||||
第二次: 擴大原圖A的A(0,1)部分。就去取小圖的各個(0,1)部分填入吧。填入結果就是
7 | 12 | 12 | 12 | ||
25 | 25 | 75 | 75 | ||
第三次:擴大原圖A的A(0,2)部分。就去取小圖的各個(0,2)部分填入吧。填入結果就是
7 | 12 | 12 | 12 | 2 | 2 |
25 | 25 | 75 | 75 | 45 | 11 |
第四次:擴大原圖A的A(1,0)部分。就去取小圖的各個(1,0)部分填入吧。填入結果就是
7 | 12 | 12 | 12 | 2 | 2 |
25 | 25 | 75 | 75 | 45 | 11 |
27 | 27 | ||||
68 | 86 | ||||
依次類推,最終結果如下
7 | 12 | 12 | 12 | 2 | 2 |
25 | 25 | 75 | 75 | 45 | 11 |
27 | 27 | 75 | 75 | 54 | 11 |
68 | 86 | 86 | 54 | 54 | 20 |
98 | 98 | 86 | 65 | 41 | 20 |
98 | 98 | 65 | 65 | 19 | 19 |
最終的最終 原圖大小是5*5啊 那就捨棄一行一列好了。與簡書的結果一致了吧。
7 | 12 | 12 | 12 | 2 |
25 | 25 | 75 | 75 | 45 |
27 | 27 | 75 | 75 | 54 |
68 | 86 | 86 | 54 | 54 |
98 | 98 | 86 | 65 | 41 |
2.反捲積的解釋:
嗯,網上資料很多。理論就不說了,只關心實現過程吧。說白了就
a.一次上池化,在縮小圖中插入行 列,值爲0.。
b.用一個卷積覈對上池化的圖像進行卷積。就得到反捲積的最終結果了。