【光流估计】无监督学习中的遮挡区域
本文目的在于記錄無監(jiān)督光流估計中遮擋區(qū)域的相關(guān)問題
本博文是光流估計的第二篇文章,因此一些提及的內(nèi)容不再贅述。
第一篇文章為無監(jiān)督損失
目錄
無監(jiān)督光流估計中的遮擋區(qū)域
估計遮擋區(qū)域
前后流一致性檢查 checking for consistent forward and backward flow
基于后向流的范圍圖 using the range map of the backward flow
基于學(xué)習(xí)的遮擋區(qū)域估計 learning a model for occlusion estimation
遮擋區(qū)域的處理
數(shù)據(jù)蒸餾 / 增強(qiáng)正則化損失(排除遮擋區(qū)的影響)
多幀約束(加強(qiáng)對齊約束)
其余方法
無監(jiān)督光流估計中的遮擋區(qū)域
? ? ? ? 本文依然是以《What Matters in Unsupervised Optical Flow》[1] 為主要參考。首先說說什么是遮擋區(qū)域,如下面這張圖,假如三角形是一個固定不動的前景,而圓形則是一個移動的物體,左右分別是前后兩幀。可以發(fā)現(xiàn),左半部分圓有一部分在第二幀中找不到了,同樣右半部分圓也有一部分在第一幀是找不到的,相互找不到的部分就可以說是遮擋區(qū)域。
????????那么接下來談?wù)務(wù)趽鯀^(qū)域為什么重要。首先物體的運動是通過光度的明顯變化反映在圖像上的,因此光流估計是反向利用這種關(guān)系建立流場的,因此這也是為什么無監(jiān)督學(xué)習(xí)中光度損失是基礎(chǔ)的原因。那么基于以上內(nèi)容,無監(jiān)督光流的一個核心思想就是物體在移動過程中外觀保持不變。而遮擋區(qū)域通俗一些理解就是某塊區(qū)域在下一幀突然消失或者突然出現(xiàn)了,這一問題對于光流估計是很麻煩的,首先它會錯誤的引導(dǎo)光度損失,另外還會影響密集光流的估計。遮擋區(qū)域也由此成為了幾乎每篇無監(jiān)督學(xué)習(xí)論文都需要考慮的地方(做的人多了就漸漸有了通用解法,另外也是提創(chuàng)新點的好地方)。
估計遮擋區(qū)域
? ? ? ? 前面一部分討論了感知區(qū)域的重要性,那么下一步就是要估計遮擋區(qū)域,要知道那一部分是遮擋區(qū)域。估計的方法目前有三類:
前后流一致性檢查 checking for consistent forward and backward flow
? ? ? ? 在具體說明該方法之前我們要知道:光流估計的估計結(jié)果是不對稱的。從第一幀到第二幀估計的光流為前向流,而反過來就是后向流。沒接觸過的小白有可能認(rèn)為,我估計出來了前向流,那相反數(shù)不就是后向流了嗎?其實并不是,想一想我前面提到的遮擋區(qū)域。
? ? ? ? 利用上述原理就可以查找遮擋區(qū)域。對于非遮擋像素,前向流應(yīng)該是第二幀中相應(yīng)像素處的后向流的相反數(shù)。每當(dāng)這兩個流之間的不匹配太大時,我們可以將像素標(biāo)記為被遮擋。相對應(yīng)的內(nèi)容可參照論文:《Occlusion aware unsupervised learning of optical flow》[2]。下面給出具體的公式:
其中和分別是估計的前向光流和后向光流,注意,計算時是相應(yīng)像素。?和??分別是兩個常量參數(shù)。這是一個約束公式,對于非遮擋像素,相應(yīng)像素處的前向流和后向流為相反數(shù),其向量加和應(yīng)該是為0的,那么對于這個公式左側(cè)應(yīng)該是越小說明兩向量越趨于相反。而公式右側(cè)則是一個判斷閾值。
? ? ? ? 這個方法理解起來很容易,并且效果也很好,現(xiàn)在的很多研究都是采用這個方法(甚至參數(shù)都固定了)。
基于后向流的范圍圖 using the range map of the backward flow
? ?? ?還是先補(bǔ)充一些前置的知識,warp翻譯過來叫翹曲,在圖像重建中非常重要,光流估計也離不開它。正如光度損失中需要計算圖像與翹曲得到的圖像比較,光流的估計結(jié)果往往是浮點數(shù),因此需要使用雙線性插值(也有使用三次插值,高斯插值的),基本原理就是用周圍四個網(wǎng)格上的點估計結(jié)果。那同樣可以利用后向流反向估計,即將一個點擴(kuò)散到周圍的四個點上,這也就是范圍圖的由來。
? ? ? ? 該方法的原理在論文:《Occlusion aware unsupervised learning of optical flow》[3]。如下圖,I1和I2之間只有第一行水平上的移動,先創(chuàng)建一個遮擋mask,全1填充。根據(jù)后向流將該mask重建(下面公式為重建公式,其中表示后向流,x,y分別表示水平和垂直方向),得到Range Map。原圖中A移動到了右上角遮蓋了B,范圍圖中右上角也變?yōu)榱?。得到了Range Map后需要設(shè)置一個閾值用來判斷誰是遮擋,原文很簡單的采用了1。
? ? ? ? ?該方法同樣是遮擋區(qū)域估計的很常用的一個方法,這個和前后流一致檢查的方法具體哪個更好也沒有明確的比較,只能說自己都試試。在 [1] 中作者默認(rèn)使用了范圍圖的方法,但在KITTI數(shù)據(jù)集中使用的前后流一致性檢查,據(jù)說效果有顯著提升。
基于學(xué)習(xí)的遮擋區(qū)域估計 learning a model for occlusion estimation
? ? ? ? 這個方法我就不想多說了,我認(rèn)為單在光流估計中這個沒什么太大意義。明明有簡單易操作的方法為什么還要不斷增加新的網(wǎng)絡(luò)呢(時間和算力在深度學(xué)習(xí)中都很重要)。
遮擋區(qū)域的處理
????????其實遮擋區(qū)域的處理大體分為兩步:排除遮擋區(qū)域的影響、改善加強(qiáng)對齊約束下的學(xué)習(xí)。從我看過的論文來講,這兩步既可以融合使用也可以獨立使用,大家也不用分的那么清。可能往往你都用了以后效果會更好,多進(jìn)行消融研究試試。
數(shù)據(jù)蒸餾 / 增強(qiáng)正則化損失(排除遮擋區(qū)的影響)
? ? ? ? 這是一種數(shù)據(jù)導(dǎo)向的訓(xùn)練方法。因為這一方法屬于自監(jiān)督的內(nèi)容,這里就簡單提一提。這一方法往往同時使用教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò),光度損失對非遮擋像素的效果非常好,因此教師網(wǎng)絡(luò)用來訓(xùn)練對非遮擋像素,并且將其當(dāng)做監(jiān)督信號用于指導(dǎo)學(xué)生網(wǎng)絡(luò)。學(xué)生網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)往往和教師網(wǎng)絡(luò)相同,但是在數(shù)據(jù)輸入和損失函數(shù)構(gòu)建會有不同。具體內(nèi)容后面的文章詳細(xì)介紹。(又挖了一遍自監(jiān)督的坑)
? ? ? ? 增強(qiáng)正則化損失在前一篇文章也簡單提過了,這里不多說的原因和數(shù)據(jù)蒸餾一樣,它也是自監(jiān)督的方法。其實這里可以看出自監(jiān)督是處理遮擋區(qū)域非常好用的一種方法。
多幀約束(加強(qiáng)對齊約束)
? ? ? ? 原文:《Unsupervised learning of multi-frame optical flow with occlusions》[4]。大多數(shù)光流估計都是只考慮了相鄰兩幀,這其實也是為了魯棒性考慮。這篇文章提出了多幀約束,即考慮了不止一幀,其實就是考慮了連續(xù)多對圖像的光流。而因為這個特點其實提出了兩種新的損失。網(wǎng)絡(luò)結(jié)構(gòu)如下:
? ? ? ? 從上面的網(wǎng)絡(luò)結(jié)構(gòu)可以看出其估計了兩個光流Up和Uf,另外值得一提的是這篇論文使用的就是基于學(xué)習(xí)的遮擋區(qū)域估計。其首先提出的一個損失就是等速損失,文章假設(shè)在進(jìn)行一個線性運動,因此其過去流和未來流在長度上應(yīng)該是相等的。
? ? ? ? 文章提出的第二個損失是針對遮擋區(qū)域的?,該文章的遮擋Mask是H*W*2的,即可以表示在兩個流的遮擋情況,例如(0.5, 0.5)表示在兩幀中均未被遮擋,(1, 0) 表示在前一幀被遮擋。可以看出這個函數(shù)的目的是讓像素盡可能都可以被看見。
? ? ? ? 這個解決方法確實有效,假設(shè)條件在短時是可以被肯定的,但是在長時間下是否會累計較大的誤差不好確定,另外在高速運動(且速度變化)的情況下,就會存在問題。?
其余方法
? ? ? ? 關(guān)于加強(qiáng)對齊的方法這里就不一一介紹了,因為它們太多了。遮擋區(qū)域本就是無監(jiān)督光流估計的核心瓶頸,目前絕大部分相關(guān)研究其實也是在針對這個問題,而它又不像光度損失那樣在一個基本函數(shù)上不斷改進(jìn),因此方法還有太多了。本文這里詳細(xì)說明多幀約束不代表這個方法就是最好或是使用最多的,僅僅是因為理解起來會更快更容易,旨在能給各位研究者一個清晰的實例。
? ? ? ? 下面給出一些其余方法的相關(guān)文獻(xiàn),各位如果有興趣深入研究,可自行閱讀:
- 極線約束:《Unsupervised deep epipolar flow for stationary or dynamic scenes》[5]
- 深度約束:《Df-net: Unsupervised joint learning of depth and flow using cross-task consistency》[6]
- 相似性約束:《Unsupervised learning of optical flow with deep feature similarity》[7]
? ? ? ? 這一部分到這里也算結(jié)束了,其實寫這篇博客我重點是想說無監(jiān)督光流估計中的遮擋區(qū)域是什么,遮擋區(qū)域為什么重要,怎么估計遮擋區(qū)域。至于怎么解決遮擋區(qū)域,目前而言并沒有統(tǒng)一的解決方法,也不該有統(tǒng)一的解決方法(畢竟無監(jiān)督光流估計的性能目前仍然有提升空間)。
參考文獻(xiàn)
[1] Jonschkowski R, Stone A, Barron J T, et al. What matters in unsupervised optical flow[C]//European Conference on Computer Vision. Springer, Cham, 2020: 557-572.
[2] Wang Y, Yang Y, Yang Z, et al. Occlusion aware unsupervised learning of optical flow[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 4884-4893.
[3] Wang Y, Yang Y, Yang Z, et al. Occlusion aware unsupervised learning of optical flow[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 4884-4893.
[4] Janai J, Guney F, Ranjan A, et al. Unsupervised learning of multi-frame optical flow with occlusions[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 690-706.
[5] Zhong Y, Ji P, Wang J, et al. Unsupervised deep epipolar flow for stationary or dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 12095-12104.
[6] Zou Y, Luo Z, Huang J B. Df-net: Unsupervised joint learning of depth and flow using cross-task consistency[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 36-53.
[7] Im W, Kim T K, Yoon S E. Unsupervised learning of optical flow with deep feature similarity[C]//European Conference on Computer Vision. Springer, Cham, 2020: 172-188.
光流估計我目前研究也不多,博客部分內(nèi)容可能有誤,如有問題歡迎指出討論!
總結(jié)
以上是生活随笔為你收集整理的【光流估计】无监督学习中的遮挡区域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: smarty 模板php,php的sma
- 下一篇: bzoj 4408: [FJOI2016