cv論文(Low-rank相關)


    最近把以前的幾篇關於Low-rank的文章重新看了一遍,由於之前的一些積累,重新看一遍感覺收獲頗多。寫這篇博文的時候也參考了一些網上的博客,其中數這篇博文最為經典http://blog.csdn.net/abcjennifer/article/details/8572994。Rachel-zhang這個博客牛人,相信搞CV的都不陌生吧,研究生期間能有這么多積累確實難得,能把自己所學一點一滴的記錄下來,這就更不容易了。科研無止境,希望以后我的博客也能像各位前輩一樣,越寫越好。如有人讀了我的博客感覺受益匪淺,那就更是我莫大的榮幸了。好了閑話不說,還是來擺擺今天的幾篇文章吧。

    第一篇:RASL: Robust Alignment by Sparse and Low-rank Decomposition for Linearly Correlated Images ,這是我接觸Low-rank的第一篇文章,文章利用Low-rank的算法進行圖片的對齊(Alignment)同時還可以有效的去遮擋,從實驗的效果來看,算法的對齊效果和去遮擋效果還是很好的。不過這種算法只能對批量的圖片進行處理,不能對單張圖片處理,這也局限了它的應用場景,下面我來簡單的介紹下文章的實現過程。

    首先矩陣里面秩的概念相信大家都很熟悉,假設給定我們同一個人的10張圖片,如果這10張圖片表情,光照,人臉的偏斜角度都是一模一樣的,並且沒有受到任何噪聲的干擾沒有任何的遮擋。那么把這10張圖片拉成列構成一個矩陣,理想的角度來講,這個矩陣的秩應該是1,我們可以認為這10張圖片是完全對齊的的。如果這10張圖片中只有少數圖片不是對齊的,被遮擋了,位置偏移了或者受到了光照的影響,那么把這10張圖片放在一起構成的矩陣,矩陣的秩肯定就不為1。如果這10張人臉的圖片,相互的差異都非常大,那么把它們放在一起構成的矩陣,秩就可能是滿紙的。從這個角度來說,我們可以認為low-rank是圖片對齊的一種數學上的表示。由於實際情況中,對齊的圖片不可能完全一樣,所以不可能為1,但是我們可以放寬條件,當樣本所組成的矩陣,秩比較小時,可以認為樣本對齊的效果是比較好的。這就是文章的主要數學思想,貌似很簡單是吧,不過要實現卻不是那么容易,其中涉及到了大量的數學運算。

                                             image

    由於實際情況中,我們處理的樣本都會引入噪聲,樣本本身也可能有一些遮擋,所以這里我們引入一個誤差E。

                                                                       image

    其中image是一個low-rank的矩陣,也就是說A可視化的樣本是對齊好的,image

    imageimage, 矩陣E是誤差,由於圖片中噪聲或者遮擋區域只占很少一部分,所以我們可以認為矩陣E是稀疏的。也就是說對於一類訓練樣本,我們拉成列組成矩陣D后,D可以分解為一個low-rank的矩陣A和誤差矩陣E。這樣我們可以認為A是對齊好了的矩陣,E是一個稀疏的誤差矩陣。那么接下來的問題就是,怎么才能完成這樣的一個分解,得到我們想要的對齊矩陣A呢?

    首先我們把矩陣D到A+E看成是通過一種變換得到的,那么上式就可以寫成這樣:image。其中image是一種變換,通過這種變換,D可以轉換為A+E,使得A的秩非常小,E非常稀疏。於是問題就轉化為求解這樣一個最小化問題:

                                                                     image

    矩陣D是已經給定的了,需要找到這樣的一個變換image,使得rank(A)足夠小,誤差矩陣E足夠稀疏。試驗中image的初始值我們可以給定,通過不斷的迭代來修正image,從而求出A和E。但是問題就來了,這個式子是“非凸的”,我們找不到其求解辦法。於是我們采用近似求解,也就是所謂的“凸松弛”。利用求nuclear norm代替求rank(A),利用求1-norm來代替求0-norm,並且引入parameterimage來均衡A的低秩性和E的稀疏性,至於參數image的取值大小可以參考馬毅的那篇文章:Robust Principal Component Analysis。於是問題就變成了下面這樣:

                                                                       image

    這個式子的求解難點在於限制條件image的非線性。但是如果每次image的增加都非常的小,我們就可以認為限制條件是線性的,上式就可以寫成這樣:

                                                                         image

    其中image是一個雅克比行列式,上式的得來其實就是泰勒級數展開的前兩項。那么我們最終的優化式子就變成了這樣:

                                                                        image

    剩下的工作就是如何來求解這樣的一個公式,找出最好的A和E了。文中介紹了兩種種算法,以及完整的數學證明(證明去看原文),這里我就直接粘貼下來:

                    imageimage

    Algorithm 1 是針對image的,Algorithm 2是針對image的。用這兩種算法,我們就可以找到想要求解的A和E了。下面我們來看一下利用這樣的低秩算法處理圖片對齊的效果:

                                                             image

    從圖中可以看出對於x和y方向偏離0~0.4距離內,算法能很好的對齊,對偏移角度0~60°內,算法也能很好的對齊。

    下面是對沒有遮擋,關照角度變化較大情況的處理情況:

                                                               image

    下面是對dummy head的處理效果,可以看出對去遮擋的效果還是很好的

                                                                  image

    下面是對自然圖片的處理情況:

                                            image

    可以看出算法的實驗效果是非常好的,其應用場景也是非常的廣泛,可用於圖像矯正與去噪,圖像標簽精華,文本分析,音樂詞曲分離等場景。

 

    第二篇:TILT: Transform Invariant Low-rank Texture,這篇文章的主要貢獻是提出了一種從2D圖像中提取3D結構的方法從而對圖片進行矯正。其主要思想是:對於未加旋轉的圖像,由於圖像的對稱性與自相似性,我們可以將其看做是一個帶噪聲的低秩矩陣。當圖像由端正發生旋轉時,圖像的對稱性和規律性就會被破壞,也就是說各行像素間的線性相關性被破壞,因此矩陣的秩就會增加。低秩紋理映射算法(TILT)是一種用低秩性與噪聲的稀疏性進行低秩紋理恢復的算法。它的思想是通過幾何變換τ把D所代表的圖像區域校正成正則的區域,如具有橫平豎直、對稱等特性,這些特性可以通過低秩性來進行刻畫。

    對於單張圖片,比如說一張歪了的人臉,怎樣才能矯正它讓它左右對稱,變得規整(也就是我要說的“正則”)呢。傳統的方法是提取一種invariant feature(如SIFT),然后利用特征找出圖中突出的地方(如人眼,鼻子,嘴角),然后利用這些points/regions來矯正圖片,但是這種方法很不魯棒,對光照,遮擋比較敏感。並且,嚴格來說,並不曾存在invariant feature under projective transformations or homographies。於是本文提出了一種,不經過任何仿射變換或者投影變換從2D圖片中提取一種3D結構的方法,對圖片進行“正則化”。上一篇文章提出的RASL算法能很好的對圖片進行矯正對齊,去遮擋,去光照。但是這種算法的局限在於只能對批量的同類圖片進行處理,對於單獨的一張非“正則”的圖片,RASL算法是無法處理的。那么有沒有算法能解決這個問題,對單張“非正則”的圖片進行對齊矯正呢?本文的出現就是要解決這樣的一個問題,首先文章提出來一種“Low-rank Textures”的概念。

                                                         image

    在這種“Low-rank Textures”的概念下,如果一張圖片是“正則”的,那么這張圖片的矩陣就具備“Low-rank Textures”性質,否則就不具備“Low-rank Textures”的性質。確定了這點,我們只需利用凸優化算法,是給定的圖片具備Low-rank Textures,我們便完成了對這正圖片的矯正了。那么這種概率是什么樣的呢,這里我還沒看懂,直接貼出原文:

                                                               image

    在這種“Low-rank Textures”概念下,vertical和horizontal和slope可以看成秩1texture,corner可以看成秩2的texture,如下圖所示:

                                                              image    

    a圖是input image,處理前rank = 11, 處理后rank = 1. b和f一樣,處理后變成了一個Corner,rank = 2。那么給定一張“非正則”的圖片,怎么才能recovery the Low-rank Texture呢? 給定一張圖片image,我們可以把它看成是它的“Low-rank Textures”圖片經過變換得到的image。在文中,我們可以認為變換image是仿射變換或者單應性變換。也就是說我們所看到的非“非正則”圖片,可以看成是“正則”圖經過這兩種變化得到的,所以非低秩。由於噪聲和遮擋的影響,我們引入誤差矩陣E,於是

                                          image   求解這樣的“Low-rank Textures”矩陣就變成了解下面這個式子:

                                                              image

    剩下的就和文章一如出一轍了,在此我就不多講了,本文和上文最大的不同就是提出來一種“Low-rank Textures”概念,對單張圖片進行低秩處理,進行矯正。算法直接貼下:

                                                               image

    下面展示實驗的效果:

                                                             image

    從圖中可以看出,此算法能很好的矯正單張圖片,文章也提供的代碼。本人跑過代碼,效果還是可以的,但有時候矯正效果也不如傳統的方法,如人臉對齊中的仿射變換。

     第三篇:Robust Principal Component Analysis? 這篇文章僅在此提一下,文章中設計大量的數學公式實在看不下去,大家可以去看這個微博:http://blog.csdn.net/abcjennifer/article/details/8572994


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM