# Free-Form Image Inpainting with ++Gated Convolution++ (直譯:門捲積) #### reference: [Image Inpainting for Irregular Holes Using Partial Convolutions](https://arxiv.org/pdf/1804.07723.pdf) [Free-Form Image Inpainting with Gated Convolution](https://arxiv.org/pdf/1806.03589.pdf) [Generative Image Inpainting with Contextual Attention](https://arxiv.org/pdf/1801.07892.pdf) [Gated Convolution 圖像修復任務](https://xiaosean5408.medium.com/gated-convolution-%E5%9C%96%E5%83%8F%E4%BF%AE%E5%BE%A9%E4%BB%BB%E5%8B%99-deepfillv2-free-form-image-inpainting-with-gated-convolution-b84a44a3cf5b) [Partial Convolution 圖像修復任務](https://xiaosean5408.medium.com/partial-convolution-%E5%9C%96%E5%83%8F%E4%BF%AE%E5%BE%A9%E4%BB%BB%E5%8B%99pconv%E7%B0%A1%E4%BB%8B-image-inpainting-for-irregular-holes-using-partial-convolutions-81e6259b8e5f) - mask 可以是不規則的(Free-form)讓模型進行修補 - ### Convolution network v.s partial Convolution v.s Gated Convolution ##### Convolution network - 執行過程 將正常的pixels與空洞的pixels視為同樣的方式去處理 ![](https://i.imgur.com/GZ3gi0w.png) 黃色為3x3大小的Kernel,kernel會慢慢掃過整張圖片 可能的情況只區分為三種: 1. 都是需要填補的pixel。 2. 都是不需填補的pixel。 3. 有需要填補以及不需填補的pixel。 ##### Partial Convolution - 執行過程 概念上,是一般的CNN搭配上Mask Mask代表一張圖片哪邊是需要修補的空洞(1表示不需要修補;0表示為空洞需要修補) 讓CNN在傳遞十有Mask,Mask用來區分空洞與否,來做輔助,可以知道目前的pixel是正常還是不正常 ![](https://i.imgur.com/NAMzCjA.png) 框框表示Kernel,在Kernel中有Mask Value(0 or 1) 1. 紅框:Kernel中所有Mask Value皆為1,不需要修補,使用一般的Convolution正常處理 2. 綠框:雖然Kernel中右下角的Mask Value為0,但可以透過附近的1來學習顏色、紋理等,使其修補,整個Kernel的Mask Value變成1 3. 藍框:全部皆為0,先不處理,等傳遞到後面的Layer中有較多的資訊時再修補 直到整張圖片皆為1,修補完成 ##### Gated Convolution - 執行過程 Partial Convolution的進階版本,更改了當出現上圖綠框情況(有1有0)時,Partial Convolution會把整個Kernel轉成全部都是1,然而,如果有一個5x5的kernel,只有最左上角的mask value為1,其餘皆為0,但Partial convolution會把所有的kernel變成1,有點不合理。 因此,Gated Convolution的概念為下: 1. Layer 1:64個空間的原圖 2. Layer 2:Layer 1經過CNN後修補的結果 3. 將兩層Layer 相乘 ![](https://i.imgur.com/PzhbrsA.png) ![](https://i.imgur.com/h8wZPd0.png) 即使在深層我們還是可以發現有塗鴉的資訊存留在該 layer 的某個 Channel, 比較最下方的 PConv, 其塗鴉資訊會逐漸消失。 比較圖 ![](https://i.imgur.com/INLvVB7.png)