摘要:太陽黑子的觀測與識別是太陽物理學的重要任務。透過對太陽黑子的觀測與分析,太陽物理學者可以更準確地分析以及預測太陽活動。隨著觀測儀器的不斷進步,太陽全日面影象資料量也在快速增長。為了快速、準確地進行太陽黑子的自動識別和標註,本文提出了一種兩層的太陽黑子識別模型。第一層模型採用深度學習模型YOLO,並使用基於交併比的k均值演算法最佳化YOLO的引數,最終的YOLO模型能夠識別絕大多數較大黑子和黑子群,僅有極少數孤立的本影較小的黑子未能識別。為進一步提高這類小黑子的識別率,第二層模型採用AGAST特徵檢測演算法專門識別遺漏的小黑子。在SDO/HMI太陽黑子資料集上的實驗結果表明,應用本文的層次化模型,各種形態的太陽黑子均能被有效識別,且識別速率高,從而能夠實現實時太陽黑子檢測任務。
關鍵詞: AGAST k均值演算法 YOLO 卷積神經網路 太陽黑子 目標識別
1、引言
太陽黑子是產生於太陽表面的,容易被觀測的太陽活動現象,其所在的太陽區域有強磁場的聚集。對太陽黑子的觀測和分析對於人類理解和研究太陽活動具有重大意義,如幫助天文學者研究耀斑的爆發與黑子群的相關性[1]。隨著太陽物理學以及觀測裝置的發展[2,3],人們對於太陽黑子觀測產生的資料量呈爆發式增長趨勢。然而,早期利用人工對太陽黑子進行識別的方法已經無法滿足快速增長的資料量帶來的資料處理效能的需求,因此,精確並高效地對太陽黑子進行識別已成為太陽物理學的迫切需要。
深度學習是人工智慧領域的一個子集,其核心模型神經網路的原理模擬了人腦思考的過程,即透過原始輸入自動提取更為抽象的高層特徵。深度學習中的卷積神經網路模型[4]已成功被應用於醫學、生物學以及日常生活等多個領域的目標識別[5,6],因此其同樣適合於太陽影象中黑子的識別。通常來說,深度學習演算法具有較高的資料依賴性或資料驅動性[7],即資料量越大、資料質量越好,神經網路的訓練效果便越佳。
在傳統目標識別演算法中,用於神經網路訓練的資料通常需要由大量正樣例和負樣例(通常包含數萬甚至數百萬的影象)組成。比如,在太陽黑子識別工作中,需要將全日面影象中太陽黑子區域的影象和太陽表面區域的影象分別擷取並形成單獨的影象,完成網路的訓練以後,透過滑動視窗的方式在全日面影象上判斷每個視窗是否為太陽黑子。換而言之,傳統目標識別方法是基於影象分類工作遍歷整個影象,且夾雜著大量的重複計算[8]。當今網際網路上公開的太陽黑子資料集皆為全日面影象,並沒有單獨的且高質量的太陽黑子區域性影象,使用傳統的目標識別演算法之前還應重視資料的採集和樣本擴充的過程。因此,使用傳統目標識別方法進行太陽黑子識別需要手動採集大量的樣本,無疑耗費了巨大的人力物力。
目前,針對太陽黑子識別問題,大多數工作主要採用傳統的影象處理技術。Nguyen等[9]提出了採用聚類的方法對太陽黑子進行自動檢測,將太陽黑子對映到二維笛卡爾座標系中,再透過無監督聚類分析標記出太陽黑子群,但黑子群的分割粒度較大;趙翠等[10]透過形態學頂帽變換自適應閾值的方法識別太陽黑子;Zharkov[11]提出了一種基於邊緣檢測演算法的太陽黑子識別方法。上述方法在數字影象處理領域被廣泛採用,然而其強烈依賴於資料本身的特徵資訊,識別速度和精度都具有一定限制。
對於目前提出的利用深度學習進行太陽黑子檢測的方法,付小娜等[12]提出了一種利用LeNet-5卷積神經網路進行自動識別的方法。其實驗主要步驟包括:製作太陽黑子樣本庫、訓練全卷積神經網路模型、檢測和標記全日面影象中的太陽黑子。使用該方法可以對SDO/HMI全日面太陽影象上各類黑子進行識別,尤其是較弱的磁孔(0.88倍平均光球強度),因此證明了基於深度學習的方法檢測太陽黑子是可行的。然而,該工作使用的資料集規模較小,且LeNet-5[13]網路結構單一,輸入大小有限(32×32),最初僅用於手寫體數字的識別,當黑子圖片輸入時會被壓縮,因此其在進行識別工作時降低了黑子影象的解析度,使得識別結果受到較大影響;此外,該方法需要首先進行資料集的切割工作,使得工作量較大;更為重要的是,該方法基於傳統的滑動視窗,並使用非極大值抑制演算法產生最佳候選框,時間複雜度很高,在實際應用中相當耗時,因而無法完成實時檢測工作。
在以上研究背景下,本文提出了一種兩層的層次化結構來識別各種尺度的太陽黑子。在第一層結構中,採用一種名為YOLO(youonlylookonce)的深度學習模型進行太陽黑子的識別。該模型基於迴歸(regression)的思想在影象中選取最佳候選框,以識別速度快著稱。模型訓練之前,僅需要框定出極少量圖片中太陽黑子的所在位置,即可作為訓練資料集,大大減少了資料集的準備工作。在通常的目標識別任務中,小物體的識別往往是一個難點。針對本影面積較小的太陽黑子,本文采用基於交併比(intersection-over-union,IOU)的k均值聚類方法,對YOLO網路中的Anchor引數進行最佳化,以提高小黑子的識別率。在經過第一層結構的識別後,有些較為獨立的小黑子仍然會被遺漏,因此設計了第二層結構,結合數字影象處理中的自適應通用加速分割檢測(adaptiveandgenericacceleratedsegmenttest,AGAST)演算法,專門識別YOLO檢測結果之外這類本影極小的太陽黑子。該層次化結構如圖1所示。
實驗使用700張源自SDO/HMI資料集中的連續譜強度影象進行標註並訓練YOLO網路。最終結果表明,整個處理流程在測試資料集上取得73.41%的交併比、約98.50%的識別率和0.60%的誤識別率,並且在識別速度上遠超傳統的太陽黑子識別演算法。本文提出的方法對太陽黑子的自動識別有著非常現實的意義,可以在一定程度上減少天文工作者的工作量,文中的方法也可以直接被應用於其他太陽表面活動的識別。
2、太陽黑子識別模型
2.1 層次化識別模型
太陽黑子影象是一種多粒度的資料,在太陽全日面影象中表現為不同的大小以及顏色深度。對於本影較大的黑子或黑子群,深度學習識別模型通常能夠達到較高的識別率,然而小目標的識別通常是一個難題。對於太陽黑子這一識別物件,其較難識別的小黑子通常指本影和半影較小的太陽黑子,在太陽全日面影象中表現為斑點狀。為了實現大物體和小物體的識別都能達到較高的準確率,且識別過程互不干擾,本文采用一種層次化的太陽黑子識別模型。第一層模型的本質是一個基於YOLO的深度神經網路,用於識別本影較大的黑子和黑子群這類較為明顯的目標;第二層模型採用數字影象處理中的AGAST演算法,針對斑點狀的本影較小的黑子進行專門的識別。最終彙總兩層模型的識別結果形成最終完整的識別結果。
2.2 YOLO模型基本原理
YOLO的最初版本YOLOv1的思想是使用單個神經網路整合目標檢測的所有元件,以達到端對端的訓練目的[14]。早期的目標檢測方法通常是透過提取影象的一些特徵(如Haar、SIFT、HOG等),使用形變部件模型(deformablepartsmodel,DPM),並用滑動視窗的方式來預測邊界框[15]。這種演算法具有相當高的時間複雜度,卻無法達到較高的檢測精度。後來的研究中誕生了OP(objectproposal)方法,其中選擇性搜尋(selectivesearch)為這類方法的典型代表[16]。相比於滑動視窗的窮舉方式,OP方法減少了大量的計算,同時在效能上也有很大的提高。利用選擇性搜尋的結果,結合卷積神經網路的R-CNN[17]出現後,目標檢測的效能有了質的飛越。基於R-CNN發展出來的SPPnet[18]、FastR-CNN[19]、FasterR-CNN[20]等方法,證明了OP方法應用於目標檢測的有效性。
相比於R-CNN系列的方法,YOLO提供了另一種思路,將目標檢測的問題轉化成一個迴歸問題。給定輸入影象,直接在影象的多個位置上回歸出目標的候選框以及其分類類別。YOLO是一個可以一次性預測多個候選框位置和類別的卷積神經網路,能夠實現端到端的目標檢測和識別,其最大的優勢就是速度快。
YOLOv1基於GoogleNet[21]網路。其首先將輸入圖片輸入大小壓縮為448pixels×448pixels,並將輸入圖片劃分為S×S個柵格,每個柵格負責檢測中心落在該柵格中的物體。每一個柵格預測B個邊界框,以及這些邊界框的置信度,而置信度反映了模型對這個柵格的預測:該柵格是否含有物體,以及對應邊界框座標預測的準確度。
圖1層次化的太陽黑子識別模型示意圖
YOLOv2[22]在YOLOv1的基礎上做了許多效能改進。首先,其使用BatchNormalization代替Dropout以提升模型收斂速度,提高了模型的泛化能力,減少了過擬合的可能性。其次,YOLOv2移除了YOLOv1中的全連線層而採用了卷積和Anchor來預測邊界框。為了使檢測所用的特徵圖獲得更高的解析度,YOLOv2還利用了DimensionClustering和Fine-GrainedFeature等技術。
YOLOv3[23]使用Darknet53作為特徵提取網路,輸出三個尺度的特徵圖進行預測。多尺度預測方式增強了YOLO對於不同尺寸的目標檢測的能力。此外,YOLOv3損失函式部分修改為二值交叉熵函式,並使用邏輯迴歸選擇評分最高的Anchor以減少損失函式的計算量。總而言之,由於YOLOv3在前兩個版本上的改進,其工作過程變得更加可靠,產生的結果也更加準確。因此本文采用YOLOv3為基礎模型進行太陽黑子識別的實驗。
2.3 資料預處理
實驗資料採用SDO/HMI[24,25]的全日面連續譜影象。該專案利用NASA太陽動力學天文臺(solardynamicsobservatory,SDO)產生每小時的高解析度太陽全日面連續譜強度圖、磁圖以及對比度增強的強度影象等。圖2展示了SDO/HMI各種型別的太陽全日面圖,本文實驗選用連續譜強度圖(continuumintensity)進行訓練,因為其通常比其他型別的影象具有更高的解析度,在卷積神經網路中能夠提取更加魯棒的特徵。
SDO/HMI太陽全日面影象尺寸為4096pixels×4096pixels,而其中含有太陽黑子的部分所佔面積比例極小。若直接將太陽全日面影象直接輸入YOLO,網路首先會對輸入的影象進行縮放處理,將4096的影象縮放到448pixels大小,黑子所佔的畫素數目也會大大減小,原有的小黑子甚至會直接消失。還有部分被縮放後的黑子與周圍的影象噪聲相似度較大,易受周圍噪聲影響。經過實驗檢驗,在上述原因的影響下,直接輸入原影象進行訓練會導致訓練發散,即損失函式無法到達全域性最優解。為了解決這一問題,我們將4096×4096大小的影象進行切割,得到多張416×416大小的影象,再對這些影象分別進行標註並訓練。訓練階段完成後,首先將目標4096×4096大小的全日面圖向外擴充套件黑色畫素形成4160×4160的影象,再將其分割為100張416大小的子影象,分割識別後再合為一張完整的影象。
由於太陽黑子存在著非常多種類的形態,如果將所有的黑子都標註為同一類別,會影響YOLO網路引數的最佳化方向。例如,在生活場景識別中若把“人”和“腳踏車”標為同種類別,將對損失函式的下降方向產生極大干擾。在太陽物理領域,目前最常用的太陽黑子蘇黎世分類方法是由瑞士蘇黎世天文臺瓦爾德邁爾在1938年提出的[26]。他按黑子群發展過程將其分為九個型別﹐用大寫拉丁字母A~J表示。然而,以蘇黎世分類進行太陽黑子的標註存在兩點問題:首先,許多觀測到的太陽黑子的半影十分模糊,進行蘇黎世類別的標註是一件困難的工作,通常需要領域專家的介入,並且會花費大量的時間;其次,由於太陽黑子的週期性變化,蘇黎世分類中九個型別的太陽黑子數目並不均衡,不均衡的訓練類別使得YOLO在訓練過程中資料較少的類別的損失函式減少不明顯,導致該類別無法達到預期的訓練效果。為了削減上述兩種問題的影響,我們分析了黑子形態差異,並提出將黑子標註為兩類,即適當尺度的黑子群和本影部分明顯的大黑子,其中黑子群中包括了一些較為孤立的小型黑子。圖3展示了資料預處理的過程。
圖2SDO/HMI各型別太陽全日面圖
2.4 網路結構
基於YOLO模型,我們設計瞭如圖4所示的網路結構。
該網路得到三個尺度的輸出結果,大小分別為[13×13×14],[26×26×14]以及[52×52×14]。其中,每個輸出的前兩個維度對應網格大小,如第一個尺度的前兩維代表將輸入影象劃分為13×13的網格,每個網格與輸出結果對應位置的網格相關聯。每個尺度輸出的第三維的分量“14”由網路中的部件計算得到。每個尺度對應兩個Anchorbox,每個Anchorbox輸出7個值:x,y,w,h(中心點座標和寬高),C(置信度)以及類別機率c1,c2,分別對應小黑子和黑子群。
2.5 最佳化處理及引數調整
原始YOLO的Anchor尺寸適合檢測大物體、多物體,而太陽黑子中小目標偏多,因此使用k均值聚類演算法獲取最佳的Anchor尺寸[24]。常用的k均值演算法使用歐氏距離作為最佳化目標,在獲取Anchor尺寸時容易引發“大框優勢”,故將聚類函式修改為d(bbox,ccentroid)=1-IOU(bbox,ccentroid)。多次執行聚類演算法,設定不同的k值。經過多次實驗進行YOLO效果的驗證,最終確定k值為6。因此,最終確定的YOLO網路結構輸出三個網格尺寸,每個輸出分別對應兩個Anchor尺寸。其中,13×13大小的網格對應[75,85]和[42,61]的Anchor尺寸,用於檢測較大目標;26×26大小的網格對應[31,27]以及[22,42]的Anchor尺寸,用於檢測中等體型目標;52×52大小的網格對應[11,18]和[17,42]的Anchor尺寸,用於檢測較小目標。
圖3資料預處理流程
圖4第一層模型:基於YOLO的深度神經網路
2.6 第二層太陽黑子識別模型
經過觀察,在YOLO識別結果中,存在著極少的、溫度較高且本影極小的太陽黑子未能被識別。原因是這類黑子的波長與太陽表面平靜區的波長相近,使得YOLO容易將其誤判為太陽表面的平靜區。為解決該問題,建立第二層太陽黑子識別模型,採用數字影象處理中AGAST特徵檢測演算法[27]標定出小黑子的位置。在效能上,第二層模型以增加識別時間為代價,提高了小黑子的識別率。
第二層模型以第一層模型的識別結果作為輸入,專門負責識別第一層模型中還未能被識別的小黑子。根據YOLO的識別結果,在416×416大小的太陽黑子影象中,本影較小的太陽黑子可看作影象中的特徵點進行處理,符合數字影象處理中特徵檢測問題的基本性質。Rosten等人[27]將FAST角點定義為:若某畫素點與其周圍足夠多的畫素點處在不同範圍內,則該畫素點可能為角點。考慮灰度太陽黑子影象,若某一點的灰度值比其周圍領域內數量較多的畫素點的灰度值大或者小,則該點可能為角點,即可以被認為是本影較小的太陽黑子。FAST演算法的基本原理如圖5所示,首先設定閾值t,對影象中的每一個畫素點p,考慮其以3為半徑的圓上的16個畫素點p1至p16與p的畫素差異。若16個畫素點中有9個及以上的畫素點與p的畫素差異超過t,則認為p是特徵點,最終採用非極大值抑制的方法進行篩選得到結果。
根據FAST演算法原理,為提升檢測速度,可以使用ID3演算法構建決策樹。2010年Elmar和Gregory等人[28]提出了自適應通用加速分割檢測(adaptiveandgenericacceleratedsegmenttest,AGAST)演算法,將FAST演算法中ID3決策樹改造為二叉樹,並能夠根據當前處理的影象資訊動態且高效地分配決策樹,提高了演算法的運算速度。為了高效率地進一步識別第一層模型遺漏的小黑子,第二層模型採用AGAST演算法,識別第一層模型標定的識別框之外的特徵點。經過多次對比和除錯,最終選用t=35作為畫素差異的閾值。
3、檢測實驗及分析
3.1 YOLO訓練過程
按圖4搭建了第一層太陽黑子識別模型後開始訓練。YOLO的訓練目標是最最佳化以下損失函式:
其中包括三個部分,前兩行為座標預測損失,第三和第四行為置信度損失,最後一行為類別損失。使用隨機梯度下降最佳化器對損失函式進行最佳化:
圖5FAST演算法的基本原理示意圖
YOLO模型完成15000輪訓練過程後,其損失函式值由935.12降至0.22。圖6展示了訓練過程中擷取的1000步訓練過程損失函式的變化。
圖6損失函式的部分變化過程
3.2 實驗結果
訓練完成後,使用SDO/HMI從2010至2014年內隨機挑選的影象,擷取太陽黑子較多的部分後形成416×416大小的子圖進行測試。部分識別結果如圖7所示。其中,綠色框代表本影和半影較為明顯的大黑子,紅色框代表黑子群以及部分獨立的本影較小的黑子,而黃色框代表第二層模型識別出的本影較小的小黑子。
與本文假設相符,在經過第一層識別模型後,有些本影較小的黑子未能被識別。經過第二層識別模型後,約96.72%的小黑子能夠被識別。最終,經過對該100張4096×4096大小的太陽全日面測試影象的結果分析,模型平均能夠達到73.41%的測試交併比,約98.50%的識別率以及約0.60%的誤識別率。測試交併比結果的分佈如圖8所示,可以看出交併比的分佈基本較為穩定且均大於等於55%。交併比在影象識別領域是常用的測試標準,通常交併比大於50%時便認為是一個優秀的識別結果,因此本文太陽黑子的識別結果具有精確性和健壯性。
3.3 結果分析
從執行結果時間複雜度的角度分析,首先設M和N分別為影象的寬和高,滑動視窗的寬和高分別為m和n。YOLO對於特徵圖上每個位置的元素只提取一遍,時間複雜度為O(MN)。AGAST演算法遍歷影象中的每個畫素,複雜度仍然為O(MN),因此兩層結構的網路總複雜度為O(MN)。基於R-CNN[19]方法提取的畫素的數量為(M-m)×(N-n)×M×N,時間複雜度為O((MN)2)。付小娜等人[12]基於滑動視窗的卷積神經網路需要控制影象的寬和高以及滑動視窗的寬和高,時間複雜度亦為O((MN)2)。因此,本文提出的兩層模型結構能夠在確保識別精度的條件下以非常快的速度進行太陽黑子的識別。
從執行結果的準確率(準確率=1-漏檢率)來分析,98.50%的識別準確率超過了付小娜[12]約80%的識別準確率、Zhao等[10]95%的準確率以及Zharkov[13]所得到的95%~98%的識別準確率結果。層次化模型的錯檢率約為0.6%,效果優於Zhao等[10]1.2%的錯檢率,而低於付小娜等[12]沒有漏檢率的情況。
可以看出,在多項指標上,該層次模型均能夠相對於其他工作取得更優良的效果。但該模型亦存在著一定的缺點:由於在識別時將整幅太陽黑子全日面影象等面積分為100份,因此有些較大的或狹長的太陽黑子會被截斷進入不同的子影象中,該現象導致這些黑子被模型識別為兩個或多個獨立的黑子,這對太陽黑子的識別不利。為此提出以下解決方法:在完成100份子影象的識別後,若在某個子影象中有識別框位於該子影象邊緣,則判斷其所在邊緣方向的相鄰子影象的鄰近邊緣是否也有某個識別框位於邊緣。若有,則合併兩個子影象中的識別框;否則,繼續掃描影象,直到沒有這樣的相鄰情況。
從模型的泛化能力進行分析,由於模型的諸多引數如圖片尺寸、畫素差異閾值等均由實驗測出,因此識別結果可能與資料的來源高度相關。尤其地,對於其他觀測裝置得到的不同解析度的全日面影象,模型可能無法取得令人滿意的效果。針對這一現象,應當尋找儘可能提高模型泛化能力的可行方案。如對於圖片尺寸,將不同來源的資料縮放至同一大小;對於畫素差異閾值,對影象進行合適的預處理,如歸一化,使得不同來源影象的閾值相近;對於解析度問題,可以進一步修正YOLO模型的損失函式,為其新增與解析度相關的正則化項,從而解決解析度不同的問題。
3.4 未來工作
太陽耀斑是太陽大氣區域性區域發生的一種劇烈的爆發現象,其在短時間內釋放大量能量,引起區域性區域的瞬時高溫,向外發射各種電磁輻射,並伴隨粒子輻射突然增強。美國宇航局(NASA)於2013年末及2014年初連續釋出了其捕獲的太陽耀斑資料,包括原始波長資料及轉換後肉眼可觀測的影象。理論上,耀斑在其形態方面與其他太陽活動可區分,但通常體積較大,因此可採用本文第一層YOLO模型重新進行耀斑的識別,無需第二層識別模型來識別極小的目標。
圖7太陽黑子識別結果
除耀斑外,暗條、光斑等太陽活動均具有其獨特的資料特性,並且能夠在NASA釋出的資料集中找到大量的訓練資料,因此其在理論上是可分類的。由於YOLO模型本身可完成多分類任務,因此可在資料準備充足的情況下,將本文的範圍直接擴充套件至其他太陽活動的識別。
4、結論
本文建立了層次化的太陽黑子識別模型。在第一層模型的識別過程中,使用700張SDO/HMI資料集中標註後的太陽黑子影象訓練YOLO深度神經網路用於太陽黑子識別,並在測試集上達到了較高的分類準確率。針對小型黑子識別率低的問題,使用基於交併比的k均值演算法確定了YOLO網路中的Anchor,使得網路能夠識別更多的小黑子。為了進一步提升小黑子的識別率,建立了第二層太陽黑子識別過程,採用AGAST特徵檢測演算法,專門進行本影較小的太陽黑子的快速識別。該層次化模型在測試資料集上獲得了73.41%的測試交併比,約98.50%的識別率以及約0.60%的誤識別率,並在識別速度(每秒幀率)上遠超傳統方法,甚至能夠對太陽黑子進行實時檢測,同時滿足了準確性和高效性。文中的模型與演算法可以直接被廣泛應用於各大全日面太陽影象資料集的太陽黑子識別工作,並可擴充套件到對其他太陽活動的檢測,如耀斑、暗條等。
圖8測試交併比的分佈