---
# System prepended metadata

title: Towards Real-world Shadow Removal with a Shadow Simulation Method and a Two-stage Framework
tags: [除陰影, 文獻閱讀, 專題討論]

---

ref: https://openaccess.thecvf.com/content/CVPR2022W/NTIRE/papers/Gao_Towards_Real-World_Shadow_Removal_With_a_Shadow_Simulation_Method_and_CVPRW_2022_paper.pdf
github: 
### First time
#### 解決問題
先進SR方法需要配對資料，但現有資料集缺乏數量和多樣性，故泛化能力差。

#### 採用方法
本篇提出簡單但穩健的S模擬方法模擬灰階的S。他可以應用於NS和M以產生S。透果此法作者生成了大規模、多樣化的資料集。

此外，作者引入兩階段框架，稱為Gray-to-Color Shadow Removal Network (G2C-DeshadowNet)，去進行SR。階段一為灰階強化網路，試圖在灰階上去除S。階段二維著色網路，試圖將灰階SF影像重新著色。

#### 成果
在ISTD+、SRD、SBU的實驗表明，該網路優於SOTA，且泛化能力好。

### Second
* Fig1: 提出的兩階段網路的架構
* Fig2: Patch self-attention block的架構
* Fig3: 模擬出的S影像範例
* Fig4: ISTD+上的視覺結果
* Fig5: SRD上的視覺結果
* Fig6: ISTD+的推論視覺結果(包含使用模擬資料訓練)
* Fig7: ISTD+外的視覺結果
* Fig8: 失敗的案例


* Table1: ISTD+上的RMSE結果
* Table2: SRD上的RMSE結果
* Table3: ISTD+上的RMSE結果(包含使用模擬資料訓練)
* Table4: 提出模型的消融研究(ISTD+)
* Table5: 模擬方法的消融研究(ISTD+)


### Third
#### Introduction整理
傳統SR方法使用物理模型(8、9、13、14、25、26、33、37)，將S視為照明和反射的組合。故SF像素可藉由估計照明參數從S像素還原。但參數需要使用者互動(3、37)以及大量時間，無法達到real-time和智能處理的要求。DL應用後有很多方法被提出(1、5、6、10、21、28、30)，很多透過使用公共資料集做端到端方式訓練。與傳統方法相比，推理更快、結果更好。但自然光照是連續變化，難以獲得配對資料。故SR資料集缺乏多樣性和規模，減低模型泛化能力。

為此，有常識使用不成對資料進行非監督的研究(22、32)，但S和NS之間可能存在spectral gap導致使用時有光譜失真的情況。也有研究從現存S影像生成S和SF補丁(21、23)，但這需要mask的指導下過濾S補丁。也有方法是用模擬模型擴大資料集(18)，但這種方法基於現有資料集的統計，無法涵蓋所有類型的S。

受single-band陰影模擬可以擺脫不同波段之間複雜關係的啟發，作者提出了簡單但穩健的single-band shadow simulation method。該方法是簡單的線性模型，參數是針對給定的NS影像和mask進行估計。此外，還提出兩階段框架G2C-SehadowNet，將SR分為single-band SR和著色。為了充分運用全局資訊，網路設計採用修改後的自注意力模塊(7)。階段一，給定S影像，以灰階S影像為輸入，希望在mask的指導下產生NS影像。而後階段二在殘留的彩色資訊指導下著色。

作者認為此篇貢獻如下
1. 簡單穩健的模擬方法，從Places2中產生大量資料。
2. 兩階段框架的採用。
3. ISTD+、SRD、SBU上的先進成果

#### Related Work整理
1. 使用現有資料集的SR
傳統方法制定物理模型使用的先驗知識有梯度(9、12)、光罩資訊(33、37)。近年成對資料集(28、32)造就學習方法(1、5、6、10、21、28)的研究。端到端方式顯著改進傳統方法。

* 28使用multi-context embedding network取得mask。
* 32受stacked generative adversarial network啟發提出了jointly shadow detection and removal framework。
* 考慮NS資訊，1提出contextual patch matching和transfer module，用於以NS區域作根據回復S區域。

但它們都嚴重依賴patch matching step的人工設計和其結果，故容易受到模糊的影響。

* 20介紹了shadow image decomposition workflow
* 10進一步提出auto-exposure fusion model

儘管這上述學習方法結果令人滿意，但大多數(10、20、28、32)都很少利用非局部資訊，而該資訊有助於促進影像恢復。

作者提出的框架中，透過插入patch self-attention module來獲取非局部資訊。這種設計有異於SR，這在消融研究中可以看出。此外，為降低solution space，作者提出兩階段架構，分離灰階SR和著色。

2. 使用廣泛資料集的SR
現有DS數量有限且多樣性低，故訓練結果泛化差。為擺脫此限制，有非監督方法被提出(16、21、22、23)

* 16提出生成S時同步去除，可以用不成對訓練
* 22改進16，透過學習光相關特徵圖引導SR。但S和NS之間的domain可能存在很大差距。使結果有光譜失真
* 21從與相同S影像中擷取出S和SF補丁作為訓練資料，降低domain gap。但它們使用S區域作為先驗並遭受高計算負載。

其他工作透過模擬來擴大DS(5、18、23)。

* 18根據ISTD的統計獲得S先驗資訊，利用先驗在收集的SF影像上模擬S。擴大後的DS能提高表在。
* 5使用ISTD訓練S模擬網路，根據給定mask的SF影像產生S影像
* 23提出基於CycleGAN的方法生成，在mask引導下在S影像的NS區中產生S。

儘管DS有擴大，但產生的S和ISTD中S具有相似的模式。使用這種DS的模型無法處理ISTD以外的S影像。

針對未知S模式的真實世界SR，作者引入了穩健、直接的模擬策略，在灰階上模擬，減少通道之間複雜關係的建模。透過模擬策略，產生了大且多樣的DS。這個DS使提出的兩階段網路更好的適應複雜場景。

#### Methodology整理
不同波段上S有不同模式，且不同波段的關係難以建立(18)。考量這個問題，作者提出的架構分離SR為灰階SR和著色。階段一，將影像轉為灰階並回復輝街上的SF影像，透過灰階強化網路。階段二，則設計了著色網路則在殘差顏色資訊的引導下，將灰階SR結果著色。這種方法中，提出方法避免對不同波段的關係建模。架構如圖一。此外，作者引入了S模擬方法產生大DS去適應真實世界SR。

![Fig1](https://hackmd.io/_uploads/S1Z64cpr6.png)

1. Grayscale Enhancement Network(GEN)
此網路包含編碼器、數個patch self-attention blocks以及解碼器。編碼器先將輸入的灰階影像和mask編碼為高級特徵。patch self-attention blocks之後根據高集特徵獲得具有全局資訊的上下文特徵。最後上下文資訊送入解碼器重建。

編碼器包含
三組onvBatchNormalization-ReLU
三組殘差模塊(15)

解碼器包含
三組殘差模塊
三組Deconv-BatchNormalization-ReLU

 patch self-attention blocks是作者借鑒了35的自注意力想法，並將其修改為補丁版本以適應任務。此模塊可以降低計算成本，適配回復任務。解碼器特徵圖切割為補丁並拉成1陣列。而後三個捲基層獲得QKV，最後重塑回原始形狀。模塊如圖二，一共被堆疊四次，以充分利用非局部資訊。

輸入RGB轉為灰階

![Eq1](https://hackmd.io/_uploads/SyQMOc6B6.png)

則灰階SR表示維式二

![Eq2](https://hackmd.io/_uploads/HyjN_caHa.png)

階段一採用的損失包含(1)像素級損失L1、(2)生成對抗損失，用於產生細節資訊

![Eq3](https://hackmd.io/_uploads/BymodcpST.png)
![Eq4](https://hackmd.io/_uploads/Byvou9pBp.png)

鑑別器的架構使用Patch-GAN(19)的D，並替換batch-normalization為spectral-normalization

整體損失表示為

![Eq5](https://hackmd.io/_uploads/Sk4ktqTH6.png)

實驗中w1設為100

2. Colorization Network
著色網路除了輸入層以外都採用和GEN相同的架構。著色過程可以表示為

![Eq6](https://hackmd.io/_uploads/SJhqq9ara.png)

對於訓練在模擬結果上的模型，為避免模擬輸入的負面影響，著色過程為

![Eq7](https://hackmd.io/_uploads/S1Pxo5TSa.png)

優化主要使用RGB的L1

![Eq8](https://hackmd.io/_uploads/SkmQi9ar6.png)

3. Shadow Simulation
根據29，影像像素可以透過對應位置的照度和反射率決定，NS區域的像素可以表示為

![Eq9](https://hackmd.io/_uploads/rk-Osc6rp.png)

而S區域像素可以表示為

![Eq10](https://hackmd.io/_uploads/rkvtjc6r6.png)

Ld、La、alpha、R分別是直接光照、環境光罩、shadow matting、reflectance，x、lambda是位置和波段。故相同像素在S和NS情況的關係可以表示為一個經典的線性關係

![Eq11](https://hackmd.io/_uploads/ryvbn5pHT.png)

給定M下，11可改寫為

![Eq12](https://hackmd.io/_uploads/BJLX29aBa.png)

可再改寫為

![k](https://hackmd.io/_uploads/HJQu39aB6.png)
![Eq13](https://hackmd.io/_uploads/rJt8hqprp.png)

則給定M，只需要k去模擬lambda上的S。因此，RGB總共需要三組參數。然而，根據18，三種波段S上存在複雜關係，且難以對參數間關係建模。為了簡化，作者在灰階上模擬，則只需要一個參數

![Eq14](https://hackmd.io/_uploads/S1KXaqTSp.png)

訓練中，根據經驗，k可以藉於0.2-0.8之間。

值得注意的是，模擬灰階與真實灰階仍存在domain gap。為了減少gap，作者額外調整真實灰階S影像的S區域，並產生調整後的輸入。作者假設S區域和NS區域具有相似的分布。如下，提取SF周圍區域。原始mask M先根據經驗擴張7個像素為Md7。Md7和M之間的不同集合標示為周圍SF區域 Md。S區域的像素值在Md的指導下進行調整

![Eq1516](https://hackmd.io/_uploads/ryyU05TSp.png)

推理時，k固定為0.64。

作者透過places DS的SF模擬所有S，因為該DS有豐富多樣性和大規模。模擬結果和調整輸入的範例如圖三

![Fig3](https://hackmd.io/_uploads/BJI5RqTBT.png)

#### Experiments整理
實驗包含ISTD+、SRD、SBU。SRD的M是透過Otsu(27)的閾值來取得。SBU是SD DS，因此用來評估真實世界的泛化能力。

評估方法是計算256x256的LAB空間RMSE。(20、23)

<font color=red>訓練細節忽略</font>








