劉 通, 胡 亮, 王永軍, 初劍峰
(1. 吉林大學 計算機科學與技術學院, 長春 130012; 2. 長春市公安局 網安支隊, 長春 130051)
衛星遙感技術廣泛應用于軍事偵察、 地表分析和資源勘察等領域. 在衛星遙感圖像的處理過程中, 由于單幅圖像的視角有限, 因此常需要將兩幅或多幅圖像進行拼接以獲取更寬廣視野的圖像. 遙感影像拼接也稱為影像鑲嵌, 是指對兩幅或兩幅以上含有重疊區域的圖片, 將相同部分交疊在一起, 而其他部分保持不變, 從而合并成一幅整體圖片. 衛星遙感影像拼接的關鍵在于: 1) 如何使計算機識別出不同遙感圖像中的相同部分; 2) 在拍攝過程中, 由于相機的移動不能做到完全穩定, 兩幅圖片的相同區域也會存在平移、 縮放、 扭曲變形等問題, 因此需要對圖片進行調整, 使對應部分達到理想效果.
目前主流的衛星遙感圖像拼接方法是以尺度不變特征轉換(scale-invariant feature transform, SIFT)為代表的傳統經典算法[1-4], 該方法基于尺度不變性, 包括圖像配準和幾何變換兩部分. 圖像配準是指在每幅圖像中檢測出特征關鍵點及其局部特征描述子[5], 以此實現圖像中特征點的匹配; 幾何變換是指對圖像進行一定的變形, 使對應特征點在最大程度上達到重合. 以SIFT為代表的傳統方法在一定程度上對圖像匹配進行了較好的實現, 但該方法也存在不足. 如果遙感影像來自不同視角的衛星, 而視角差別又較大時, 圖像中的物體可能會發生較大形變. 在這種情況下, 傳統方法通常不能獲得正確的拼接效果. 近年來, 隨著人工智能與深度學習的發展, 深度學習在計算機視覺應用方面取得了優異的成績[6]. 因此本文考慮通過引入深度學習實現衛星遙感圖像拼接.
本文采用卷積神經網絡(convolutional neural network, CNN)模型[7]代替SIFT經典方法實現圖像配準與幾何變換, 設計一種卷積神經網絡模型, 并通過人工合成圖像對的方法生成適用于它的訓練數據集. 該模型可以端到端地進行訓練以學習圖像配準的能力, 并取代SIFT方法估計出圖像的幾何變換參數. 相比于傳統方法, 卷積神經網絡模型對發生較大形變的衛星遙感圖像具有更好的拼接效果.
目前通常采用SIFT算法及其改進算法進行衛星遙感圖像的拼接, 如加速魯棒性特征(speeded up robust features, SURF)算法, 這些算法的原理基本一致, 拼接方法一般分為圖像配準和幾何變換兩部分.
1) 圖像配準: 選擇一種特征檢測器(如SIFT特征檢測器), 通過特征檢測器可從一幅圖像中提取出關鍵點(標準局部特征). 首先, 將特征檢測器分別作用于要匹配的兩幅圖像, 提取出兩幅圖像各自的關鍵點集; 其次, 分別對兩個關鍵點集計算描述子——選擇同類型的描述子提取器(如SIFT描述子提取器), 由此獲得兩幅圖像各自關鍵點集對應的局部描述子; 然后選擇一種匹配器, 通過將兩幅圖各自的描述子集合輸入匹配器, 得到一組初步的試探性匹配結果; 最后對初步匹配結果進行篩選, 只保留高質量的匹配, 刪除低質量的匹配, 并按照匹配程度由高到低排序.
2) 幾何變換: 即通過旋轉和平移使兩幅圖像的對應特征點達到重合. 通過兩幅圖像中相對應的特征關鍵點, 找出兩幅圖像相同部分的幾何變換參數(如Homography矩陣), 一般采用的方法是隨機抽樣一致性(random sample consensus, RANSAC)算法或Hough投票法[8].
利用經典方法實現的衛星遙感圖像拼接效果一般較好, 但也有失效或出現較大誤差的情況, 通常是由于圖像中主體對象的外觀描繪發生了較大變化. 遙感影像常來自不同視角的衛星, 當視角存在較大差異時, 圖像中的物體難免發生較大形變. 在這種情況下, 傳統方法通常不能獲得正確的拼接效果.
深度學習廣泛應用于計算機視覺領域, 在行人檢測[9]、 對象分類[10]、 圖像分割[11]等領域都有優異表現. 深度學習已被用于學習功能強大的圖像特征[12-14]. 相比于經典方法, 深度學習對外觀變化具有更高的魯棒性[15]. 卷積神經網絡在深度學習領域應用廣泛, 其具有可實現提取特征、 降維、 加速、 減少運算、 提高泛化能力和包容形變等諸多優點, 相比全連接網絡運算量小很多, 因此可用卷積神經網絡提取圖像特征. 本文采用深度學習的方法, 設計一種卷積神經網絡模型并進行訓練, 代替經典方法實現對衛星遙感圖像的拼接.
英國牛津大學視覺幾何組(visual geometry group, VGG)提出了一種經典的卷積神經網絡模型VGG-Net, 其是在ImageNet[16]上進行訓練用于圖像分類的卷積神經網絡模型. VGG-Net使用5個卷積組, 一般有11~19層, VGG-Net模型的幾種常見結構如圖1所示. 其中具有16層的結構稱為VGG-16模型, 它是VGG-Net的經典模型之一. VGG-16模型的5個卷積組層數分別是2,2,3,3,3, 共有13層卷積層. 數字16表示13層卷積層與3層全連接層, 不包括下采樣層(即池化層).

圖1 VGG-Net結構Fig.1 Structure of VGG-Net
在圖1中, 每個卷積層后邊的括號內都注明了該層所采用的卷積核大小與輸出通道數. 例如, (3-64)表示采用的卷積核大小為3×3, 輸出通道數為64. 圖1第二列中11層結構出現的局部響應標準化(local response normalization, LRN)是一種用于防止數據過擬合的函數. 由于本文研究采用的是16層結構, 故不對LRN進行說明.
VGG-Net原本用于圖像分類, 但其卷積層部分能很好地對圖像特征進行提取. 與以AlexNet為代表的其他架構相比, VGG-Net的層數更多, 通道數也更多, 因此可達到更高和更細顆粒度的準確性, 可提取更多有效信息, 非常適合遙感衛星圖像這類包含豐富細節的高分辨率圖像.
本文參考VGG-16的架構設計神經網絡. 在VGG-16的結構中, 全連接層部分對圖像特征提取未發揮作用, 因此只需使用其卷積層部分即可. 考慮到權重因子過多會減慢計算速度, 因此本文未將13個卷積層全部使用, 而是權衡后截取到第10個卷積層. 在每組卷積層結束后都進行一次批量標準化, 此外還在全連接層前添加一個Dropout函數以防止過擬合.
在回歸網絡結構設計上, 本文在最后添加兩個全連接層, 第一層設置1 000個神經元接收卷積層的輸出, 最后一層的神經元設置為8, 這是因為本文想得到的幾何變換參數是由8個數構成的4×2矩陣. 這樣設置的目的是將兩幅衛星遙感圖像拼接在一起, 使相同部分完全重合. 實際上, 僅通過移動幾乎不可能使兩幅圖像的共同區域完全重合, 這是因為在獲得不同圖像時一定會有條件差異. 遙感圖像可能來自于不同衛星, 導致兩幅圖像必然存在視角上的差異, 即使是由同一衛星獲得的兩幅圖像, 由于拍攝時間、 拍攝角度、 拍攝距離遠近等因素的變化, 也會使兩幅衛星遙感圖像的坐標系出現差異, 將導致圖像中拍攝對象的形狀發生一定的變化. 在這種情況下, 無法直接對衛星遙感圖像完成拼接, 必須先對圖像做幾何變換, 將兩幅遙感圖像調整到同一坐標系下, 才能完成后續的圖像拼接.
對于要進行匹配的兩幅圖像, 通過單應性矩陣可以將一幅圖像中每個位置上的點映射到另一幅圖像的對應位置上. 如果用IA和IB表示兩幅圖像, 則IA中位于(x,y,1)處的點通過單應性矩陣進行幾何變換后將映射到IB中位于(x′,y′,1)處的點, 如圖2所示.
單應性矩陣是一種常用的幾何變換方法, 其一般形式是一個3×3矩陣, 表示為

(1)
其能將一幅圖像中每個位置(x,y)上的點映射到另一幅圖像的對應位置(x′,y′)上, 表示為

(2)
單應性矩陣除這種3×3矩陣的形式外, 還有一種4×2矩陣形式, 其為基于角點位置變化得到的[17], 如圖3所示.將視角1得到的圖像記為圖A, 視角2得到的圖像記為圖B. 在這種情況下, 圖A中四邊形的4個角點映射為圖B中的一個四邊形.

圖2 同一對象在不同視角下的位置對應關系Fig.2 Position correspondence of same object in different perspectives

圖3 4個角點在不同視角圖像中的映射Fig.3 Mapping of four corner points in images from different perspectives


(3)

單應性矩陣的這兩種形式是等效的, 一旦知道兩幅圖像中4個角點的偏移量, 即可將H4points轉換為3×3的H矩陣.由于單應性矩陣的4×2形式表示的是4個角點的偏移量, 而通過偏移量可直觀查看網絡模型估計出的結果, 因此本文以4×2形式單應性矩陣的值作為模型的回歸結果.
訓練模型包含數據集與標簽集.對于神經網絡模型, 輸入為一組圖像IA和IB, 而輸出為IA到IB的幾何變換參數, 即單應性矩陣H.因此, 所需的數據集應該是由大量圖像對構成的, 而數據對之間對應的單應性矩陣H已知, 實驗中需要用矩陣H作為標簽集.但在機器學習領域廣泛采用的數據集中并沒有這種形式的數據集.本文的方法是: 選擇一個圖片數據集, 使用隨機生成的單應性矩陣H對數據集中的圖片進行變換, 并將變換后的圖像與原圖像組成一對, 即得到了訓練的特征值, 而隨機生成的單應性矩陣則作為訓練的真實標簽值, 記為HGT.回歸網絡產生8個數字, 即模型估計出的8個偏移量, 將其與HGT中的8個數字進行比較, 計算它們的歐氏距離, 作為模型的損失函數.
歐氏距離是指m維空間中兩個點之間的距離.以二維空間為例, 若點A為(x1,y1), 點B為(x2,y2), 則A,B兩點間的歐氏距離計算公式為

(4)
其中d表示二維空間中點A與點B之間的歐氏距離.若以三維空間為例, 點A為(x1,y1,z1), 點B為(x2,y2,z2), 則A,B兩點間的歐氏距離計算公式為

(5)
其中d表示三維空間中點A與點B之間的歐氏距離.推廣到n維空間, 若點A為(p1,p2,…,pn), 點B為(q1,q2,…,qn), 則A,B兩點間的歐氏距離計算公式為

(6)
即

(7)
其中d(A,B)表示n維空間中點A與點B之間的歐氏距離.
本文設計的回歸網絡輸出4×2形式單應性矩陣中的8個數字, 將其與真實單應性矩陣中的8個數字比較, 計算他們的歐氏距離作為損失函數. 模型通過使用反向傳播和隨機梯度下降(stochastic gradient descent, SGD)最大程度地減小損失函數, 以學習神經網絡的權重.
訓練卷積神經網絡模型通常需要大量數據, 但現有的公共數據集中符合實驗要求的類型較少, 即以發生幾何變換的一對圖像作為特征, 以它們的幾何變換關系作為標簽. 因此, 需通過自行合成數據進行訓練. 本文實驗的方法是: 下載一個圖像數據集, 然后對其中的圖像數據做隨機幾何變換, 即在一定范圍內隨機生成一個單應性矩陣H, 并通過H將數據集中的原圖像做幾何變換, 將變換后的圖像與原圖像構成一個圖像對, 作為訓練的特征值, 而隨機生成一個單應性矩陣H即為與其對應的特征值. 將該操作應用于下載圖像數據集中的每張圖像, 即得到了實驗需要的整個數據集.
本文采用PASCAL VOC數據集, 對其圖像進行處理后用于訓練. PASCAL VOC原是一個用于目標檢測和分割模型的數據集, 共包括14 961張JPG格式的圖片. 事實上, 任何數量足夠多的數據集都可使用這種合成數據集方法用于訓練. 在尺寸大小滿足要求的前提下, 可以將任意一張圖像經過處理后作為訓練樣本, 通過該方法可以根據需要收集盡可能多的訓練實例, 也可以在訓練達到一定程度后更換新的圖像數據集進行訓練, 使模型更好地學習不同類型的圖像特征, 甚至可以自行拍攝照片, 經過處理后的照片同樣可以作為模型訓練的數據集. 合成訓練數據過程如下.
步驟1) 為減少計算量, 首先將圖像轉換為單通道灰度圖. 參考VGG-16模型的輸入要求, 實驗中使用的并不是原始尺寸的圖像, 而是在原圖像上隨機裁剪出一個224×224尺寸的正方形部分, 將該正方形部分的圖像記為A, 將其作為訓練輸入特征的圖像對之一.
步驟2) 記錄下A的4個角點位置, 然后選定一個范圍對4個角點進行隨機位移, 本文設隨機范圍為[-56,56]. 通過4對點橫縱坐標的8個偏移量, 可得到一個單應性矩陣H.該算法可通過OpenCV軟件庫中的getPerspectiveTransform( )實現.
步驟3) 求出矩陣H的逆矩陣H′, 然后將H′應用于原始尺寸的灰度圖, 以產生幾何變換后的新圖像.在新圖像中找到與矩形A相同的位置, 裁剪出一個與A尺寸相同的224×224的正方形部分, 將該正方形部分的圖像記作B, 將其作為訓練輸入特征圖像對中的另一個元素.
步驟4) 將兩個224×224×1的正方形灰度圖A和B堆疊, 生成一個224×224×2的圖像, 將其作為輸入卷積神經網絡模型的特征值, 并將步驟2)中的8個偏移量作為訓練的標簽值.
由于本文實驗設計的模型輸入要求為224×224×2, 不同于VGG-16模型要求的224×224×3, 因此不能直接載入VGG-16模型訓練好的權重, 而需要從頭開始訓練模型. 為減少訓練中的計算量, 本文實驗對模型做進一步修改, 在對圖片進行卷積提升通道數過程中, 通道數達到128時保持這一通道數不變. 如果繼續擴大通道數到256甚至512, 或許能使模型具有更好的學習能力, 但更大的計算量會使訓練模型花費更多的時間. 本文最終設定128通道數, 而不再繼續擴大. 經過調整后最終確定的模型結構如圖4所示, 每個卷積層后都有一個ReLU激活函數(未標出).

圖4 修改后的卷積神經網絡架構Fig.4 Modified CNN architecture
本文實驗選擇Adam優化器對模型進行訓練, 動量設為0.9, 學習速率設為0.005. 初步設定訓練50 000輪, 每輪在訓練集中隨機選擇5 000個樣本進行訓練, 每次批量傳入50個樣本. 50 000輪訓練完畢后, 將學習速率減小為0.000 5, 再次訓練50 000輪, 使模型最終達到收斂.
本文實驗設計的模型實現了圖像拼接的圖像配準與幾何變換, 即該模型具備了和傳統SIFT方法同樣的能力. 為檢驗訓練后模型對圖像的拼接效果, 將其與傳統經典算法進行比較. 本文選擇SIFT+RANSAC的經典算法進行比較, 以幾何變換部分所得到的單應性矩陣的歐氏距離作為評價指標. 將隨機生成的單應性矩陣作為真實值, 首先計算模型估計所得值與真實值的誤差(計算結果保留4位小數), 再計算經典算法所得值與真實值的誤差, 然后對兩種方法所得誤差進行對比. 為對兩種方法做出綜合性評價, 需在整個數據集上進行統計, 得出各自的平均誤差.
對于經典算法, 計算誤差值時選擇3×3單應性矩陣比4×2單應性矩陣更方便. 因此為便于對比, 在計算誤差值時, 先將模型估計值與真實值都轉換為3×3單應性矩陣形式再計算歐氏距離. 這樣可以更直觀地對兩種方法進行比較. 通過以3×3單應性矩陣的歐氏距離作為誤差, 對整個PASCAL VOC數據集進行統計后可得: 模型估計的平均誤差為61.060 4, 經典SIFT算法的平均誤差為75.111 5. 因此, 本文模型的效果更好.
模型訓練完畢后, 需要檢驗模型對圖像的處理效果. 由于模型最終完成了圖像配準與幾何變換兩個步驟, 因此不但可以通過誤差值進行評價, 還可以直接從視覺效果上進行對比觀察. 為驗證模型對不同圖像的適用能力, 選用不同于訓練數據集的其他數據集進行實驗.
選取dogs-vs-cats數據集進行檢驗. 從數據集中隨機抽取一幅圖片, 并隨機生成一個單應性矩陣H以對其做幾何變換, 組成一對圖像. 分別用CNN模型與傳統SIFT方法計算這對匹配圖像的幾何變換參數, 即單應性矩陣. 將CNN模型得到的單應性矩陣記為Hcnn, 將傳統SIFT算法得到的單應性矩陣記為Hsift. 不同算法在dogs-vs-cats數據集上的幾何變換效果如圖5所示, 其中: 圖5(A)為隨機抽取的原始圖像, 其中方框部分即本文隨機選定的區域, 隨機移動它的4個角點可得真實單應性矩陣HGT; 圖5(B)為通過真實單應性矩陣HGT對原始圖像選定區域做幾何變換后的效果, 它使原圖發生了扭曲; 圖5(C)為用CNN模型對圖像對做匹配, 預測得到單應性矩陣Hcnn, 通過Hcnn對原始圖像選定區域做幾何變換后的效果; 圖5(D)為用SIFT方法對圖像對做匹配, 計算得到單應性矩陣Hsift, 通過Hsift對原始圖像選定區域做幾何變換后的效果.

圖5 不同算法在dogs-vs-cats數據集上的幾何變換效果Fig.5 Geometric transformation effects of different algorithms on dogs-vs-cats data set
由圖5可見, 與圖5(B)的真實變換效果相比, 本文方法圖像與其更接近. 即使不借助計算得出的誤差數值, 僅憑視覺觀察也可見圖5(C)與圖5(B)的差異更小, 兩幅圖方框內的區域基本一致, 而圖5(D)中方框的右下角已經擴大到了邊界外. 圖5(C)計算得到的歐氏距離誤差為7.785 3, 圖5(D)圖像計算得到的歐氏距離誤差為31.290 7, 對比可知, 本文圖像的誤差更小, 卷積神經網絡模型得到的單應性矩陣Hcnn與真實值HGT更接近.
為實驗的嚴謹性, 本文在數據集上進行了多次測試, 模型預測的效果普遍強于傳統SIFT方法. 測試結果如圖6~圖8所示. 圖6為在dogs-vs-cats數據集上隨機抽取3張圖像進行測試的結果. 此外, 為驗證模型對不同圖像的適應能力, 分別在COCO2017數據集和ImageNet ILSVRC2012數據集上進行測試, 每個數據集隨機選擇3張圖片進行測試, 測試結果如圖7和圖8所示.

圖6 不同算法在dogs-vs-cats數據集上3次測試的幾何變換效果Fig.6 Geometric transformation effects of different algorithms are tested three times on dogs-vs-cats data set

由圖6~圖8可見, 相比于SIFT方法, CNN模型實現的幾何變換效果與真實幾何變換效果更接近, 其歐氏距離誤差值也普遍小于SIFT方法, 與視覺觀感一致. 在ImageNet ILSVRC2012數據集的第三個示例中, 即圖8的最后一組圖像中觀察到: 此時SIFT方法所得結果的誤差在數值上其實略小于CNN模型所得結果的誤差——CNN模型的歐氏距離誤差值為30.535 3, 而SIFT方法的歐氏距離誤差值只有29.375 7, 但在視覺效果上可明顯看出, 仍然是第三列圖像與第二列的真實結果更接近, 即CNN模型比SIFT方法得到的效果更好. 這是因為本文是通過比較3×3形式的單應性矩陣的歐氏距離計算誤差的, 因此需要比較9對數字. 當通過預測或計算得到的矩陣中的大部分數值與真實矩陣數值非常接近, 但有單一或少量數值偏差較大時, 就會導致數值偏差較小而視覺上形狀差異更大的情況. 因此歐氏距離應該作為衡量誤差參考的一個相對標準而不是絕對標準, 還應該對比視覺效果做綜合性的評價. 同時從這種特殊情況也可知, 當SIFT方法的歐氏距離誤差接近甚至低于CNN模型時, CNN模型依然能得到更好的綜合效果.
仍以3×3單應性矩陣的歐氏距離作為誤差, 分別在dogs-vs-cats測試集、 COCO2017測試集和ImageNet ILSVRC2012驗證集上統計兩種方法的平均誤差進行對比. 在dogs-vs-cats測試集上, CNN模型估計的平均誤差為63.247 3, 經典SIFT算法的平均誤差為74.709 3; 在COCO2017測試集上, CNN模型估計的平均誤差為61.690 7, 經典SIFT算法的平均誤差為74.957 7; 在ImageNet ILSVRC2012驗證集上, CNN模型估計的平均誤差為61.622 6, 經典SIFT算法的平均誤差為75.201 7. 因此, 在這幾個數據集上得到的數據較穩定, 與之前在訓練集上的所得結果基本一致, 波動較小. 說明CNN模型的平均誤差穩定小于SIFT方法的平均誤差, CNN模型能更好地實現圖像配準和幾何變換, 即對圖像具有更好的拼接能力.
本文實驗使用卷積神經網絡模型代替傳統SIFT方法實現衛星遙感圖像拼接, 克服了傳統算法不適用于較大形變的缺點. 下面通過一組視角差異較大的衛星遙感圖像進行測試, 分別使用這兩種方法對其進行拼接, 對比它們的拼接效果. 圖9為一組來自不同視角的衛星遙感圖像, 分別用CNN模型和傳統SIFT方法對這兩幅圖像進行拼接, 拼接效果如圖10所示. 由圖10可見, CNN模型明顯優于傳統SIFT方法. CNN模型實現了遙感圖像拼接, 而傳統的SIFT方法出現了明顯的錯誤, 右側上方的深色道路與中間扇形建筑物的邊緣都出現了兩次. 實驗中多次選取來自不同視角的衛星遙感圖像進行拼接測試, CNN模型均優于SIFT方法的圖像拼接能力. 因此, 相比于經典方法, 卷積神經網絡模型對外觀變化具有更高的健壯性, 在圖像發生較大形變的條件下也能取得較好的拼接效果.

綜上所述, 在衛星遙感圖像的拼接技術中, 傳統方法存在不適用于在不同視角下發生較大形變圖像的缺點. 為解決該問題, 本文采用深度學習方法代替傳統方法, 實現了該條件下的衛星遙感圖像拼接. 設計了一種端到端的卷積神經網絡架構, 其可通過訓練學習圖像間的特征與對應關系, 實現圖像配準并得到單應性矩陣, 完成圖像的拼接. 由于模型的訓練過程不依賴于傳統方法中對圖像特征點和描述子的提取, 而是以卷積提取的特征圖作為圖像特征, 因此能較好改善形變較大時特征提取不準確的情況. 對比實驗結果表明, 卷積神經網絡模型相比于傳統方法對衛星遙感圖像拼接能力更好.