劉橋平 高興宇 邱 昕 郭 瑞
1(中國科學院微電子所 北京 100085)2(中國科學院大學 北京 100049)
21世紀初,軟件無線電(Software Defined Radio,SDR)誕生。通過通用PC運行代碼實現不同的通信功能,可對運行頻率、工作帶寬、調制類別、編碼方式等進行靈活編程,系統可調節適用性大為增強。軟件無線電為非協作通信提供了合適的硬件平臺。
在一對多與多對多的網絡通信、無線電監控管理、通信系統故障檢查、通信對抗偵察等軍用和民用領域,對不影響正常通信的第三方系統的接入技術有了迫切需求。這樣的非授權接入的通信方式就是非協作通信。軟件無線電平臺的出現為非協作通信提供了合適的硬件基礎。非協作通信首先必須知道接收信號的調制方式和調制參數,這就需要對接收信號進行調制識別。現有的自動調制識別技術主要可分為兩類[1]:基于假設檢驗的最大似然方法;基于特征提取的模式識別方法。基于假設檢驗的最大似然方法是一種統計方法,其利用概率模型推導,在觀測采樣值、觀測值的概率密度達到最大時找出最為合理的參數估計量。從貝葉斯估計的角度來說,基于假設檢驗的最大似然方法的結果是最優的,但該類方法對參數偏差和模型失配較為敏感,在現實的復雜通信環境中難以廣泛應用。基于特征提取的模式識別方法則較為穩定從而實用性更強。
本文主要使用USRP B210在空中接口環境下采集8種調制類別IQ數據,訓練分類模型實現USRP B210實時接收空中接口IQ數據實時輸出調制類型。為了提高自動調制識別的準確度,優化ResNet、GoogLenet、SENet用于自動調制識別。
本文硬件平臺為Ettus公司的USRP B210,其底層驅動程序為UHD,眾多軟件平臺都能適配,相較于其他的SDR硬件平臺具有更好的通用性。軟件平臺為GNU Radio Companion(GRC),擁有非常多的頂層組件協助開發人員快速構建工程。例如:GNU Radio使用USRP B210作為發射源,可以調用UHD:USRP Sink模塊。USRP B210板卡如圖1所示。

圖1 USRP B210板卡
本文使用了GNU Radio Companion 7種Mod調制模塊,分別是BPSK Mod、QPSK Mod、8PSK Mod、QAM16 Mod、QAM64 Mod、QAM256 Mod、GMSK Mod,可以生成對應的7種調制類別信號源。同時空口發射端無信號時接收端依然會接收信號,于是添加ZERO這種特殊情況,則一共有8類8PSK、BPSK、GMSK、QAM16、QAM256、QAM64、QPSK、ZERO。USRP B210發射端GRC圖如圖2所示,其中未連接的是調制類別替換模塊。

圖2 USRP B210發射端GRC圖
接收端直接將USRP B210接收的數據存入Vector Sink模塊,主線程可以從中拿到類型為complex64的IQ數據。圖3為USRP B210數據集接收端GRC圖。

圖3 USRP B210接收端GRC圖
采用USRP B210空中接口發射接收IQ數據。由于空口信噪比難以衡量,我們以發射增益來替代。固定接收增益、收發天線距離,假定空口噪聲功率恒定,發射增益越大,則信噪比越大。令發射端發射增益gain取值(0,5,10,15,20,25,30,35,40,45,50,55,60,65,70),假設每一個調制類別每一個發射增益采集1 000組IQ樣本點,我們將獲得8×15×1 000×128×2維的IQ數據集。數據集每一個維度的意義依次是:8類調制方式(BPSK,QPSK,8PSK,GMSK,QAM16,QAM64,QAM256,ZERO),15類發射增益(0,5,10,15,20,25,30,35,40,45,50,55,60,65,70),每一類1 000個樣本,每個樣本是128組連續采樣的IQ數據,IQ數據是2個32位浮點數。最后是加入調制方式標簽,8類依次為0、1、2、3、4、5、6、7。MATLAB各調制類型信號I路時域圖見圖4,說明調制類型時域可分。MATLAB繪制各調制類型的IQ散點星座圖如圖5所示,說明本文生成的IQ數據集符合對應調制類型。

圖4 接收端各調制類型信號256點I路時域圖

圖5 接收端各調制類型信號256點散點星座圖
傳統機器學習算法包括KNN、DT、SVM,應用于自動調制識別的具體流程[1]如圖6所示。

圖6 傳統機器學習的自動調制識別流程
自動調制方式識別的人工特征提取要求有較高的通信領域專業知識,傳統機器學習識別方法,不能以原始IQ數據訓練模型。常見的人工提取特征主要包括時域[2]或變換域特征參數[3]。時域特征包括瞬時相位、瞬時頻率以及瞬時幅度;變換域特征包括譜相關函數、功率譜以及其他一些統計參數,也可以是多種特征相結合[4]。
卷積神經網絡能夠自動提取不同調制類別的區分特征[5],基本的CNN網絡模型如圖7所示。

圖7 CNN網絡模型
理論上,CNN疊加的層數越多,分類準確度越高,然而實際上CNN疊加的層數增加到一定程度之后網絡的分類準確度反而開始下降。針對這個問題的改進,在圖像識別領域各種新穎的人工神經網絡框架層出不窮。
GoogLenet是谷歌(Google)2014年研究出來的深度網絡結構,雖然出現比較早,但Google一直在持續改進。截至2019年Github開源的就有V1、V2、V3、V4版[6],可以認為GoogLenet是一個系列。GoogLenet核心的改進在于提出InceptionNet in net,InceptionNet將不同尺度的卷積(比如1×1,3×3,5×5)和池化在通道維度堆疊,增加了網絡的寬度,改善了網絡對尺度的適應性。在后繼V2、V3的改進中主要使用小尺寸的卷積核級聯網絡替代大尺寸的卷積核,減少參數量并保持感受野范圍。V3的InceptionNet如圖8所示。

圖8 GoogLenet InceptionNet結構
微軟亞研院的何凱明等提出了ResNet[7],創新性地引入了恒等快捷連接。CNN第i+1層的輸入是第i層的輸出xi+1=F(xi),而ResNetxi+1=F(xi)+xi。網絡結構圖關鍵不同點在于xi+1中增加了xi分量。ResNet模型結構如圖9所示。

圖9 ResNet網絡模型
前面的改進都是在空間維度提升網絡的性能,而胡杰等[8]提出的SENet(Squeeze-and-Excitation Networks)則是在通道維度提升網絡的性能。SENet學習獲得每個特征通道的權重,在通道相加或疊加之前乘以各自的權重。嚴格地說,SENet不是特指某一種網絡,而是一種改進思路,圖10展示了其在ResNet上的結合方式。

圖10 SENet結合Resnet
ResNet、GoogLenet、SENet都是計算機視覺領域近幾年提出的改進CNN模型。若是直接用于自動調制識別顯然是不行的,還需要針對自動調制識別進行一些模型優化。
(1) 去池化。池化層主要作用是降維減少冗余計算量,同時讓模型對輸入的少量平移不那么敏感。在自動調制識別任務ResNet、GoogLenet、SENet直接使用IQ數據進行分類,輸入的每一組數據維度為2×128,其中IQ維度信息是最關鍵的。在網絡中采用池化操作會造成IQ維度關鍵信息丟失,因而本文將ResNet、GoogLenet、SENet網絡主干數據流的池化層全部去掉。但是GoogLenet InceptionNet內部的Pool以及SENet求Scale所用到的Global Pooling是需要保留的。此外靠近輸出的池化層聚合特征來計算分類結果不在去池化范圍內。
(2) 非對稱卷積。ResNet、GoogLenet、SENet原作者大多是針對矩形圖片進行特征圖提取操作。常用的卷積核為[1,1]、[3,3]、[5,5]、[7,7]。在自動調制識別任務ResNet、GoogLenet、SENet輸入的每一組數據維度是2×128。受GoogLenet InceptionNet思想啟發,本文大膽采用了大小為[2,4][2,8]的卷積核,同時在filter較多的中后段卷積層,使用一組[2,1][1,4]的卷積核來替代[2,4]的卷積核;使用一組[2,1][1,8]的卷積核來替代[2,8]的卷積核,達到減少計算量同時保持感受野的目的。網絡層數較深的情況下,我們在自動調制識別使用最為頻繁的還是大小為[2,2]的卷積核。
(3) 特征圖大小不變。ResNet、GoogLenet、SENet原作者大多是針對圖片,遠比自動調制識別的數據維度2×128要大一些。某些卷積層stride=2有助于縮小特征圖尺寸從而減少計算量。而自動調制識別則不同,本身數據維度2×128較小,網絡前端多采用卷積stride=1保持特征圖大小不變是可行的。最后在網絡后端再進行特征圖大小壓縮。
遵從以上三大原則對計算機視覺領域的ResNet、GoogLeNet、SENet模型進行優化,得到適用于自動調制識別的ResNet-B、GoogLeNet-B、SENet-B。此處命名是為方便后面說明,所有優化皆源于自動調制識別數據IQ二元性,后綴B取Binary之意。
實驗針對不同的自動調制識別模型使用相同的數據集。USRP B210采集的IQ數據50%作為訓練集,50%作為測試集。
代碼實現基于TensorFlow框架。TensorFlow是一個用于各種感知和語言理解任務的機器學習開源軟件庫,最初開發者為谷歌大腦團隊,初衷是助力Google的研究和生產,于2015年11月9日在Apache 2.0開源許可證下對外開放。訓練模型均使用早停機制,超過10次迭代驗證集上loss沒有低于最小值就停止訓練,保存驗證集上loss值最低的模型。
(1) 基礎CNN模型。兩層卷積層、一層池化層、兩層全連接層、最后是Softmax層。CNN超參數取值batch_size=128。CNN各發射增益條件下的分類準確度如圖11所示。

圖11 CNN在各發射增益條件下的分類準確度
(2) Google開源在Github上的Tensorflow/Model下的Inception_v3。GoogLenet Inception_v4已經吸收了ResNet,這里為了對比沒有采用。超參數batch_size=128。GoogLenet Inception_v3、GoogLenet Inception_v3-B各發射增益條件下的分類準確度如圖12、圖13所示。

圖12 GoogLenet在各發射增益條件下的分類準確度

圖13 GoogLenet-B在各發射增益條件下的分類準確度
(3) Github上的Tensorflow/Model下的ResNet。超參數batch_size=128,ResNet_size=32。ResNet、ResNet-B各發射增益條件下的分類準確度如圖14、圖15所示。

圖14 ResNet在各發射增益條件下的分類準確度

圖15 ResNet-B在各發射增益條件下的分類準確度
(4) SENet。超參數batch_size=128。SENet、SENet-B各發射增益條件下的分類準確度如圖16、圖17所示。SENet-B在發射增益gain=30時對各調制類型的分類準確度如圖18所示。

圖16 SENet在各發射增益條件下的分類準確度

圖17 SENet-B在各發射增益條件下的分類準確度

圖18 發射增益gain=30 SENet混淆矩陣圖
CNN、GoogLenet Inception_v3、GoogLenet Inception_v3-B、ResNet、ResNet-B、SENet、SENet-B分類準確度總體對比見表1。

表1 各發射增益條件下各個模型的分類準確度 %

續表1 %
對實驗結果進行對比分析,模型優化后調制識別準確度得到了一定提升。由圖11-圖17可以看出:發射增益gain>30,即信噪比較高的條件下,以上模型均有90%以上準確率;發射增益gain<15,即信噪比較低的條件下,所有模型均不能正常分類;發射增益gain處于[15,30]區間,也是我們最常遇到的信噪比條件下,GoogLenet Inception_v3-B、ResNet-B、SENet-B相比CNN有很大提升,其中又以SENet-B分類效果最好。由圖18可以看出:SENet-B對于8PSK、BPSK、GMSK、QAM16、QAM256、QAM64、QPSK、ZERO識別準確率均能滿足實際工程需求。
優化ResNet、GoogLenet、SENet用于自動調制識別,能準確有效地分類BPSK、QPSK、8PSK、GMSK、QAM16、QAM64、QAM256、ZERO,其中ZERO代表發射端沒有發射信號的情況。相比于傳統機器學習方法,無需人工提取特征;相比于普通的CNN網絡,在較低發射增益也就是較低信噪比情況下分類準確度有了進一步提升。下一步將探索如何構建完備的調制類型數據集,使得訓練獲得的分類模型能夠滿足更復雜空口環境、更繁多調制類別的自動調制識別需求。