[CV] 通俗理解『卷積』——從傅里葉變換到濾波器
轉自我的公眾號: 『數據挖掘機養成記』
引子
因研究興趣不在圖像處理,所以對圖像中的『卷積』操作未做深入思考,直到某天,靈光一閃,我突然意識到
圖像『卷積』應該可以和『信號處理』聯繫起來
更進一步
圖像卷積的本質,是提取圖像不同『頻段』的特徵
然而放眼望去,市面上大談特談『卷積』的文章,各種雷同,互相『借鑒』,都是在講解卷積的不同方式、卷積的參數共享、卷積的具體操作、卷積在圖像上的效果,竟鮮有一篇像樣的文章,真正觸及『卷積』的本質、探索『卷積』和『信號處理』的聯繫!
作為一個EE科班出生、當年『信號系統』『數字信號處理』課程接近滿分的人,我決定剖析卷積本質,彌補市場空白!
所以本文的目的是
從信號系統角度,通俗講解圖像卷積的本質 (不涉及公式)
<刪除線>讓你在面試時從容應對諸如『卷積層作用』之類的套路問題,甚至對弱雞面試官實現反殺!<刪除線>
前言
因本文偏科普性質,會有失嚴謹性,所以在這裡先補充一些信號處理的基本概念,後面章節為簡化起見,將省略這些關鍵概念。有興趣的讀者可以深究,其他讀者請直接跳過本節
一般來講,我們涉及到的系統都是『時不變系統』(time invariant system),即 輸入響應不隨激勵時間的改變而變化,並且是『線性系統』(linear system)。而我們所處理的時間信號一般分為四種情形:
- 連續非周期
- 連續周期
- 離散非周期
- 離散周期
這四種信號對應的頻譜也是各有特點,時域的『周期』性質對應到頻域是頻譜『離散』,『非周期』對應『連續』,而時域的『連續』和『離散』對應到頻域則是『非周期』和『周期』。圖像可以看做是『離散非周期信號』(因為圖像的像素點是離散的且大多沒有周期性),更嚴謹地說,是『有限長離散非周期序列』,其頻譜是連續周期性的,且z變換和傅里葉變換都存在。
說到『傅里葉變換』,其實傅里葉變換的本質是實頻域分析,但對於某些信號(比如不穩定信號)並不存在這樣的變換,所以更通用的做法是『z變換』,映射到復頻域進行分析。更多內容,見參考資料[1]和[2]
一維信號
我們最常接觸到的『信號』是一維時間信號,比如人的聲音、樂曲、無線電波等,橫坐標是時間t,縱坐標是信號的幅度,代表不同時刻的信號強度。而在教科書上,最常見的是如下正弦波
時域頻域
以聲音信號為例,女生的聲音比男生『尖』,說白了就是『頻率』更高,也就是聲音信號在t軸上的『震蕩』更快。而一個複雜的聲音信號,通常包括很多『頻段』,最直觀的就是錄音棚里調節各個分量的旋鈕,把低頻分量旋鈕調高,聲音更『渾厚』,有重低音的效果,而把高頻分量旋鈕調高,則變得尖細。
如果我們把一個信號各個頻段的成分也畫出來,橫坐標是頻段的『大小』,縱坐標是對應頻段成分的『幅度』,這樣一個坐標系,我們把它叫做『頻域』。把信號從『時域』映射到『頻域』的手段,就是大家耳熟能詳的『傅里葉變換』。
不嚴謹地說,任意信號都可以由一組不同頻率不同幅度的正弦信號疊加而成
而這組正弦波,就是我們上面說的,一個信號不同『頻段』的成分。更形象的圖,如下所示(轉載出處見水印)
給大家簡單解釋下這幅圖,時域圖像是一個典型的一維信號——一個近似的方形波,它是由一系列正弦信號疊加而成(餘弦信號是正弦信號相移產生,所以是廣泛意義上的正弦信號)。
卷積
卷積的概念我就不多說了,已有大把平庸的博文給大家做鋪墊了。這裡我只給大家提一個最最最核心的概念(也是這麼多年過去了,我對信號系統留下的最最最深刻的概念)
時域卷積=頻域相乘
重要的概念說三遍
時域卷積=頻域相乘
時域卷積=頻域相乘
這個概念的背後是一個嚴謹的推導過程,但這裡我們略過(有興趣的讀者一定不要錯過這個推導,可以閱讀參考資料[1]),這裡給大家通俗解釋一下,假設兩個時域信號f1和f2『卷積』的結果是f3,則f3的頻譜,是f1的頻譜函數和f2的頻譜函數,對應頻率『相乘』的結果
小小地拓展一下,與本文無關 這種頻域相乘的特性可以用於快速求一些特定函數的積分,因為『卷積』的本質是積分,而很多特定函數存在傅里葉變換和反變換,所以與其直接求解積分函數,不如把他們變換到頻域,直接進行頻譜函數『相乘』,然後再反變換回來,就得到積分結果了
濾波器
濾波器這個名詞想必大家也不陌生,比如帶有『降噪』功能的麥克風,說白了就是把高頻的噪音信號給過濾掉。更專業一點,濾波器是能過濾某些特定頻段,留下需要信號的部件,比如低通濾波器(只留下低頻分量)、高通濾波器(只留下高頻分量)、帶通濾波器(只留下特定範圍內的分量)。這裡就不展開講了,免得大家回憶起那些年被『電子電路』『信號系統』等專業課所支配的恐懼。
那濾波跟卷積的有什麼關係么?別忘了我們剛剛特彆強調的概念
時域卷積=頻域相乘
假設時域信號f1和f2做卷積,從f1的角度看,它的頻譜函數要跟f2對應的頻譜函數相乘,而如果f1的某些頻率分量,在f2上是沒有的,那麼相乘之後的結果是0,所以得到的f3信號,在這些頻率上值為0,於是對f1而言,f2把它的某些分量『過濾』掉了,所以f2是『濾波器』,f1是原始信號,f3是過濾之後的信號。
一個理想的低通濾波器如下所示
它的橫坐標是頻率,幅值為1,這是典型的『低通濾波器』,如果有信號跟它做卷積,那這個信號只會留下在0附近的低頻信號,其他高頻分量都被過濾掉了。
更形象一點,我們再回顧下剛剛的方波信號(注意,這裡的方波信號橫坐標是時間t,不是上面的低通濾波器)
它是由不同頻率、相位、幅度的正弦信號組成。如果我們現在通過某種『低通濾波器』,過濾掉一些高頻的正弦信號,則這個方波信號將變成下面的形狀
我們發現,這個方形信號沒那麼『方』了,兩邊尖銳的『稜角』變緩和了,也沒有稜角附近小幅度高頻振動的波形了。我們繼續加大濾波力度,將得到下面結果
我們可以看到,方形波的『稜角』基本被磨平了。所以
波形里的『稜角』其實是一種突變信號,它裡面包含了很多高頻分量
上面這個發現非常重要,將有助於我們後面理解圖像的『卷積』和『濾波』。
二維空間
雖然我們一直在強調『時間信號』,但不知大家注意到沒有,其實這裡的時間t,完全可以換成其他符號比如x,從而所謂的時間信號f(t),可以寫成f(x),進而,圖像可以看成一個離散的二維函數f(x,y),x 和 y 決定了圖像的像素點,f是像素點在該處的取值。更形象地理解,圖像就彷彿是一個『水池』,像素點就是『水分子』,像素點的取值大小,從視覺上看代表圖像亮度的強弱,而類比到水池裡,就是不同位置水分子的運動幅度,在水池裡泛起漣漪。
進而,我們很自然地想到,一維函數的『傅里葉變換』,能否擴展到二維呢?
答案是肯定的。不過二維空間的傅里葉變換公式我們就不貼出來了,大家有興趣可以詳細閱讀參考資料[3]。一維函數f(x)的頻譜函數F(w),是一維信號的不同頻率分量,而二維函數f(x,y)的頻譜函數,是一個二維函數F(w,v),也反應了二維函數的頻率特性(不過理解起來不那麼直觀,這裡略過,有興趣的同學請閱讀參考資料[2])。這裡我們直接結合前面說的『濾波器』來理解卷積過程
卷積核本質上是一個二維函數,有對應的頻譜函數,因而可以看成某種『濾波器』
下面是幾種常見卷積核的頻譜圖像(摘自參考資料[4])
這是一個低通濾波器,頻率接近原點附近的幅值很大(頻率低的通過),越往兩邊越小(頻率高的過濾)。下面這個高通濾波器恰恰相反
濾波器的概念有了,那麼問題來了,我們該如何理解『圖像卷積』和『濾波』的關係呢?
回顧下我們上節的發現——『波形里的「稜角」其實是一種突變信號,它裡面包含了很多高頻分量』。我們沿用上面『水池』的類比,圖像像素值變化陡峭的地方,反映在圖像上,就是那塊區域明暗變化明顯,而類比到『水池』里,就是水波在該區域快速振動,『稜角』分明。所以
當我們將圖像跟『高通濾波器』做卷積時,明暗變化會被保留,而緩和的變化會被過濾
反映到圖像上,就是『銳化』效果,即圖像的邊緣被加強,大色塊的背景被過濾。同理,跟低通濾波器做卷積,效果相反。我們看看直觀的效果(摘自參考資料[3])
當我們把圖像跟多種卷積核作用時,就能得到不同頻段的信號,這也就是卷積神經網路中,『卷積層』的本質作用。
至此,我們完美闡釋了開篇提到的結論
圖像卷積的本質,是提取圖像不同『頻段』的特徵
參考資料
- <信號與系統> 鄭君里 等
- <數字信號處理> 奧本海默
- http://www.robots.ox.ac.uk/~az/lectures/ia/lect2.pdf
- 10句話讀懂圖像頻域濾波--不能不知道的信號與系統基本理論 - iracer的博客 - CSDN博客
推薦閱讀:
※?直播預告丨今日頭條李磊:談機器人創作的技術實現與行業未來
※【相剋相生】國美公司名稱變更, 淺談新零售前景
※Alpha Zero 碎碎念
※要做的事情太多,蘋果在AI領域已落於下風
※傳奇NLP攻城獅成長之路(一)
TAG:深度学习DeepLearning | 计算机视觉 | 人工智能 |