图像对齐深度学习算法调研
參考博客:
曠視 R TALK:圖像對齊及其應(yīng)用
單應(yīng)性Homograph估計(jì):從傳統(tǒng)算法到深度學(xué)習(xí)
1. 傳統(tǒng)算法
大致流程:
難點(diǎn):
2. 深度學(xué)習(xí)算法
2.1 Deep Image Homography Estimation(2016)
論文地址
創(chuàng)新:
- 數(shù)據(jù)集
- 網(wǎng)絡(luò)結(jié)構(gòu)
??直接預(yù)測出單應(yīng)性矩陣參數(shù)比較困難,因此網(wǎng)絡(luò)預(yù)測的是4個(gè)頂點(diǎn)的位移量(右邊回歸網(wǎng)絡(luò)),然后再計(jì)算單應(yīng)性矩陣。
??文中說沒有置信度會(huì)限制一些應(yīng)用,就搞了左邊的分類網(wǎng)絡(luò),將4個(gè)頂點(diǎn)的位移范圍劃分為21個(gè)區(qū)間,輸出落在每個(gè)區(qū)間的概率值。
優(yōu)點(diǎn):
缺點(diǎn):
2.2 Unsupervised Deep Homography: A Fast and Robust Homography Estimation Model(2017)
論文地址
代碼地址
創(chuàng)新:
- 網(wǎng)絡(luò)結(jié)構(gòu)
??圖(a)為2.1的監(jiān)督算法,圖(b)為傳統(tǒng)算法,圖(c)為此文無監(jiān)督算法。
??H~4pt\mathrm{\tilde{H}_{4pt}}H~4pt? 為預(yù)測的4個(gè)頂點(diǎn)位移向量,結(jié)合4個(gè)頂點(diǎn)的位置坐標(biāo) C4ptA\mathrm{C^A_{4pt}}C4ptA?,通過 Tensor DLT(Direct Linear Transform)得到單應(yīng)性矩陣 H~\mathrm{\tilde{H}}H~;之后通過空間變換層得到圖像 P~B\mathrm{\tilde{P}^B}P~B,并與實(shí)際圖像 PB\mathrm{P^B}PB 計(jì)算光度損失(像素點(diǎn)間的 L1 損失)。
??其中,Tensor DLT(代替 SVD 奇異值分解)和空間變換層都是為了便于梯度計(jì)算,使網(wǎng)絡(luò)得以訓(xùn)練。
優(yōu)點(diǎn):
缺點(diǎn):
2.3 Content-Aware Unsupervised Deep Homography Estimation(2019)
論文地址
代碼地址
創(chuàng)新:
-
數(shù)據(jù)集
制作了一套數(shù)據(jù)集分為5大類,并為了量化評估,手工標(biāo)注了5000張圖像作為ground truth; - Regular(RE):紋理豐富,單平面遠(yuǎn)景適合用單個(gè)單應(yīng)性矩陣對齊
- Low texture(LT):紋理少
- Low light(LL):低光圖像
- Small Foregrounds(SF):小前景
- Large Foreground(LF):大前景
-
網(wǎng)絡(luò)結(jié)構(gòu)
令 β∈{a,b}\beta \in \{a,b\}β∈{a,b}
??此文認(rèn)為直接用像素值當(dāng)特征不太好,通過 f(?)f(\cdot)f(?) 獲取深層特征 FβF_{\beta}Fβ?,并通過 m(?)m(\cdot)m(?) 生成 mask MβM_{\beta}Mβ?。這里的特征和 mask 都和原圖 IβI_{\beta}Iβ? 分辨率相同,其中 m(?)m(\cdot)m(?) 的作用與 RANSAC 相似,生成的 mask 可以看作是特征的權(quán)重,來衡量特征的重要性,從而可以忽略一些干擾的特征(如干擾前景)。Gβ=FβMβG_{\beta}=F_{\beta}M_{\beta}Gβ?=Fβ?Mβ? 輸入給后續(xù)的單應(yīng)性估計(jì)網(wǎng)絡(luò),同樣預(yù)測4個(gè)位移向量,并通過一個(gè)線性系統(tǒng)得到單應(yīng)性矩陣 Hab\mathcal{H}_{a b}Hab?。損失計(jì)算:
min?m,f,hLn(Ia′,Ib)+Ln(Ib′,Ia)?λL(Ia,Ib)+μ∥HabHba?I∥22\min _{m, f, h} \mathbf{L}_{\mathbf{n}}\left(I_{a}^{\prime}, I_\right)+\mathbf{L}_{\mathbf{n}}\left(I_^{\prime}, I_{a}\right)-\lambda \mathbf{L}\left(I_{a}, I_\right)+\mu\left\|\mathcal{H}_{a b} \mathcal{H}_{b a}-\mathcal{I}\right\|_{2}^{2} m,f,hmin?Ln?(Ia′?,Ib?)+Ln?(Ib′?,Ia?)?λL(Ia?,Ib?)+μ∥Hab?Hba??I∥22?
其中,
Ln(Ia′,Ib)=∑iMa′Mb?∥Fa′?Fb∥1∑iMa′Mb\mathbf{L}_{\mathbf{n}}\left(I_{a}^{\prime}, I_\right)=\frac{\sum_{i} M_{a}^{\prime} M_ \cdot\left\|F_{a}^{\prime}-F_\right\|_{1}}{\sum_{i} M_{a}^{\prime} M_}Ln?(Ia′?,Ib?)=∑i?Ma′?Mb?∑i?Ma′?Mb??∥Fa′??Fb?∥1??,iii 表示特征圖和mask中的像素索引L(Ia,Ib)=∥Fa?Fb∥1\mathbf{L}\left(I_{a}, I_\right)=\left\|F_{a}-F_\right\|_{1}L(Ia?,Ib?)=∥Fa??Fb?∥1?
Hba\mathcal{H}_{b a}Hba? 通過將 IaI_aIa? 和 IbI_bIb? 的特征位置互換得到
??損失函數(shù)前兩項(xiàng)最小化變換后圖像特征的差異,第三項(xiàng)是為了避免全零解最大化原始圖像特征差異,第四項(xiàng)則是讓兩個(gè)單應(yīng)性變換盡可能可逆。
??(2021.10.25)后續(xù)發(fā)現(xiàn)提供的代碼用 torch.nn.TripletMarginLoss() 替代了論文描述的損失函數(shù)(TripletMarginLoss解析),基本就是只保留上面損失的1、3項(xiàng),第4項(xiàng)在 utils.py 里留了個(gè)口 getBatchHLoss();主要問題在于 mask 的訓(xùn)練,從 loss 分析如果 mask 是全為0那么 loss 會(huì)最低,這顯然不對;mask 加入訓(xùn)練時(shí),github 上說用一個(gè)小學(xué)習(xí)率微調(diào)網(wǎng)絡(luò),結(jié)合反向傳播和數(shù)據(jù)來看,前景差異大,背景差異小,則 mask 的前景部分會(huì)更快地趨向于0,那么 mask 是有效的,但是關(guān)鍵在于這個(gè)數(shù)據(jù)集是分割視頻生成的,背景部分差異很小,后面發(fā)現(xiàn)很多對齊用的公開數(shù)據(jù)集即使是背景差異也非常大,這個(gè) mask 的策略基本就是無效的了。
優(yōu)點(diǎn):
缺點(diǎn):
2.4 DeepMeshFlow: Content Adaptive Mesh Deformation for Robust Image Registration(2019)
論文地址
Mesh Flow 大致就是把圖像劃分為網(wǎng)格,每個(gè)網(wǎng)格對應(yīng)一個(gè)單應(yīng)性矩陣,從而適應(yīng)圖像中的不同深度平面來對齊。
創(chuàng)新:
-
網(wǎng)絡(luò)結(jié)構(gòu)
??ResNet-34 后面連接 KKK 個(gè)分支(K=3K=3K=3),每個(gè)分支從一個(gè)自適應(yīng)池化層開始,并通過卷積層生成一個(gè)特定大小的 mesh flow:M1′→(Hg16+1)×(Wg16+1)×2=2×2×2\mathcal{M}_{1}^{\prime} \to \left(\frac{H_{g}}{16}+1\right) \times\left(\frac{W_{g}}{16}+1\right) \times 2=2 \times 2 \times 2M1′?→(16Hg??+1)×(16Wg??+1)×2=2×2×2
M2′→(Hg4+1)×(Wg4+1)×2=5×5×2\mathcal{M}_{2}^{\prime} \to \left(\frac{H_{g}}{4}+1\right) \times\left(\frac{W_{g}}{4}+1\right) \times 2=5 \times 5 \times 2M2′?→(4Hg??+1)×(4Wg??+1)×2=5×5×2
M3→(Hg+1)×(Wg+1)×2=17×17×2\mathcal{M}_{3} \to \left(H_{g}+1\right) \times\left(W_{g}+1\right) \times 2=17 \times 17 \times 2M3?→(Hg?+1)×(Wg?+1)×2=17×17×2
然后將粗尺度 M1′\mathcal{M}_{1}^{\prime}M1′? 和 M2′\mathcal{M}_{2}^{\prime}M2′? 上采樣至 M3\mathcal{M}_{3}M3? 分辨率,并融合 M1\mathcal{M}_{1}M1?、M2\mathcal{M}_{2}M2?、M3\mathcal{M}_{3}M3?。
??mesh flow 的融合通過一個(gè)場景分割網(wǎng)絡(luò)將圖像 III 分割為 KKK 個(gè)類別,輸出大小為 (Hg+1)×(Wg+1)×K\left(H_{g}+1\right) \times\left(W_{g}+1\right) \times K(Hg?+1)×(Wg?+1)×K,融合方式是直接按分類結(jié)果選擇每個(gè)點(diǎn)的位移向量用哪個(gè) mesh flow 的對應(yīng)值,最終得到 M?\mathcal{M}^{*}M?。之后的 loss 計(jì)算與 2.3 相同。
優(yōu)點(diǎn):
2.5 RANSAC-Flow: generic two-stage image alignment(2020 ECCV)
論文地址
代碼地址
論文代碼詳細(xì)分析
創(chuàng)新:
- 單應(yīng)性(粗對齊)與光流法(細(xì)對齊)結(jié)合
- 迭代方式做對齊
優(yōu)點(diǎn):
??按論文中的說法,單應(yīng)性對圖像細(xì)節(jié)對齊的不好,而光流法對差異較大的圖像無法對齊,而此方法可以對差異大的圖像細(xì)節(jié)也對齊好,揚(yáng)長避短地結(jié)合兩種對齊方法。
缺點(diǎn):
??論文中展示的為相對效果較好(較容易對齊)的結(jié)果,下圖為挑選的幾種不同角度的缺點(diǎn),由于最終的對齊參數(shù)為一個(gè)像素級(jí)對齊矩陣,所以主要缺陷還是與光流法類似。
無法判斷需要對齊的部分
??此例,原始圖像為目標(biāo)圖像右上一小塊區(qū)域,但是算法會(huì)盡可能將全圖都對上。
光流法的圖像局部扭曲現(xiàn)象
??像素級(jí)對齊通常在低分率的特征圖上做對齊然后插值到原圖的高分辨率,目前判斷扭曲現(xiàn)象是插值造成的。
前景遮擋
??前景遮擋情況下的肉眼觀感很差,存在大面積扭曲,不如 2.3 的效果(無視前景做對齊)。
慢
??1660Ti的筆記本上約10s一對圖像。
2.6 GLU-Net: Global-Local Universal Network for Dense Flow and Correspondences(2020 CVPR)
論文地址
代碼地址
總結(jié)
以上是生活随笔為你收集整理的图像对齐深度学习算法调研的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【安全知识分享】五星级酒店员工入职安全培
- 下一篇: 深度学习基础算法梳理