何 濤,施慧莉,李大亮
(中國(guó)航空工業(yè)集團(tuán)公司雷華電子技術(shù)研究所,江蘇 無(wú)錫 214063)
傳統(tǒng)SAR(Synthetic Aperture Radar)目標(biāo)識(shí)別需要人工憑借經(jīng)驗(yàn)進(jìn)行特征提取與特征選擇,具有一定的主觀性和盲目性,難以保證識(shí)別的有效性,特別是現(xiàn)代作戰(zhàn)環(huán)境下機(jī)載SAR目標(biāo)場(chǎng)景復(fù)雜多變,傳統(tǒng)目標(biāo)識(shí)別算法在不同場(chǎng)景下的識(shí)別效率會(huì)受到干擾及目標(biāo)特性的嚴(yán)重影響。近些年來(lái),得益于大規(guī)模的帶標(biāo)簽數(shù)據(jù)集PASCAL VOC、ImageNet和MS COCO的公開以及人工智能硬件平臺(tái)的發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)的目標(biāo)識(shí)別取得了重要突破,并成功擴(kuò)展到了遙感圖像領(lǐng)域,為SAR目標(biāo)識(shí)別提供了新的解決思路。
目前主流的CNN目標(biāo)識(shí)別模型可以分為2大類:two-stage識(shí)別模型和one-stage識(shí)別模型。two-stage識(shí)別模型的典型代表是基于候選區(qū)域的R-CNN系算法,如R-CNN、Fast R-CNN和Faster R-CNN[1 - 3]等;經(jīng)典的two-stage識(shí)別模型一般都比較耗時(shí),這是由于在two-stage識(shí)別過(guò)程中,需要產(chǎn)生大量的候選區(qū)域,這些候選區(qū)域的處理占用了大量的處理時(shí)間。YOLO(You Only Look Once)[4]創(chuàng)造性地提出了one-stage方法,即直接利用深度CNN網(wǎng)絡(luò)得出目標(biāo)的位置和所屬的類別。但是,YOLO模型存在物體識(shí)別精度低、對(duì)于小物體識(shí)別效果不好的缺陷。后續(xù)的YOLO-v2[5]模型和YOLOv3[6]模型通過(guò)加入批歸一化BN(Batch Normalization)層、提升輸入層分辨率、預(yù)測(cè)位置偏移值、殘差單元、多尺度識(shí)別等措施來(lái)提升小目標(biāo)識(shí)別準(zhǔn)確率和識(shí)別速度。卷積神經(jīng)網(wǎng)絡(luò)在CPU和GPU平臺(tái)上已經(jīng)有多種成熟的實(shí)現(xiàn)框架,例如Google開發(fā)的TensorFlow[7]框架,伯克利大學(xué)的C開源框架caffe[8],基于YOLO系列模型的C開源Darknet框架等。這些實(shí)現(xiàn)框架在GPU端的運(yùn)行實(shí)現(xiàn)大都采用NVIDIA cudnn庫(kù)進(jìn)行加速,在CPU的實(shí)現(xiàn)采用openmp方式進(jìn)行多線程加速,因此深度學(xué)習(xí)CNN的主要加速運(yùn)算平臺(tái)大多選用GPU或FPGA硬件平臺(tái)?;贒SP與GPU和FPGA在并行運(yùn)算上的天然劣勢(shì),傳統(tǒng)的深度學(xué)習(xí)框架(TensorFlow、caffe和keras等)不支持DSP平臺(tái)。
本文主要從基于深度學(xué)習(xí)的SAR目標(biāo)識(shí)別在機(jī)載DSP平臺(tái)實(shí)時(shí)處理需求出發(fā),通過(guò)構(gòu)建CNN在多核DSP的運(yùn)行生態(tài),完成了多核DSP(C6678)平臺(tái)上的YOLOv3-TINY(YOLOv3網(wǎng)絡(luò)的輕量級(jí)模型)網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn),并進(jìn)行了實(shí)測(cè)SAR數(shù)據(jù)驗(yàn)證。雖然深度學(xué)習(xí)網(wǎng)絡(luò)在DSP的實(shí)時(shí)性上和GPU相比還有較明顯的差距,但其能夠滿足機(jī)載SAR的實(shí)時(shí)處理需求。
TMS320C6678[9]是TI公司基于KeyStone多核處理器架構(gòu)的多核DSP,芯片集成了8個(gè)C66X DSP內(nèi)核,內(nèi)核頻率可達(dá)1.25 GHz,芯片處理能力強(qiáng),外設(shè)功能豐富,可以廣泛地應(yīng)用在通信、雷達(dá)、聲納、火控和電子對(duì)抗等領(lǐng)域。單C6678片內(nèi)配置8個(gè)TMS320C66xTMDSP核,每個(gè)DSP單核內(nèi)存配置512 KB核內(nèi)高速緩存,8核共享4 MB SRAM高速內(nèi)存;同時(shí)C6678提供了一個(gè)64位的DDR3外存接口,能以800 MB/s、1 033 MB/s、1 333 MB/s和1 600 MB/s的速率進(jìn)行傳輸操作,數(shù)據(jù)率最高可至大約12.8 GB/s,可尋址空間為8 GB。
YOLOv3模型是YOLO系列網(wǎng)絡(luò)的第3個(gè)版本,是目前工程界首選的目標(biāo)識(shí)別模型之一。相較于之前的版本,該版本增加了殘差單元、特征金字塔網(wǎng)絡(luò)和多尺度識(shí)別來(lái)進(jìn)一步提升識(shí)別準(zhǔn)確率,尤其是小目標(biāo)的識(shí)別準(zhǔn)確率。具體來(lái)說(shuō),YOLOv3主要有以下特點(diǎn):(1)采用了Darknet53骨干網(wǎng)絡(luò);(2)包含了多個(gè)殘差單元;(3)利用3個(gè)尺度的特征圖來(lái)共同進(jìn)行最后的預(yù)測(cè),提升了目標(biāo)識(shí)別準(zhǔn)確率。圖1給出了YOLOv3模型的網(wǎng)絡(luò)結(jié)構(gòu)圖,其中CBL為YOLOv3模型中廣泛采用的卷積層,是卷積層+BN層+LeakyReLU激活函數(shù)的組合;殘差單元用Res_n*m表示,n表示第n個(gè)殘差單元,m為該殘差單元的重復(fù)利用次數(shù),殘差單元的使用保證了網(wǎng)絡(luò)深度,提升了網(wǎng)絡(luò)的特征表達(dá)能力。
常用的卷積神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)框架(TensorFlow、caffe和Darknet等)主要運(yùn)行平臺(tái)為GPU和CPU,且不支持DSP,因此本文主要進(jìn)行了多核DSP平臺(tái)上的可定制卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)。鑒于復(fù)雜卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練時(shí)間遠(yuǎn)大于預(yù)測(cè)時(shí)間,可以通過(guò)高性能GPU服務(wù)器對(duì)目標(biāo)數(shù)據(jù)訓(xùn)練后,將訓(xùn)練后的網(wǎng)絡(luò)權(quán)重輸入到DSP硬件平臺(tái)進(jìn)行前向預(yù)測(cè)。因此,本文DSP平臺(tái)上的卷積神經(jīng)網(wǎng)絡(luò)的卷積層設(shè)計(jì)不考慮反向預(yù)測(cè),只進(jìn)行卷積層的前向預(yù)測(cè)。
Figure 1 Network structure of YOLOv3 model圖1 YOLOv3模型網(wǎng)絡(luò)結(jié)構(gòu)
Figure 2 Schematic of convolutional layer processing圖2 卷積層處理原理
3.1.1 并行計(jì)算策略
卷積層處理的主要原理如圖2所示,圖1中的示例為多通道圖像和不同的卷積核進(jìn)行卷積,其中卷積層的輸入圖像尺寸為(C,W,H),C為圖像通道數(shù),W為輸入圖像寬度,H為輸入圖像高度,N為卷積核個(gè)數(shù)。在實(shí)際卷積處理中,單個(gè)卷積核分別和每個(gè)圖像輸入進(jìn)行卷積后還需進(jìn)行多通道加和處理,等于單個(gè)卷積核和多通道輸入卷積處理后的圖像輸出尺寸為(W,H),N個(gè)卷積核的卷積層處理輸出為(N,W,H)。
根據(jù)卷積層處理特點(diǎn)及C6678的多核獨(dú)立計(jì)算特性,本文設(shè)計(jì)了如下2種卷積層并行計(jì)算策略:
(1)策略1:基于獨(dú)立卷積核計(jì)算的并行策略。
由卷積層的計(jì)算原理可知,不同卷積核和輸入圖像的卷積計(jì)算是完全獨(dú)立的,結(jié)合C6678的多核特性,該并行策略可以設(shè)計(jì)為:不同C6678核分配不同的卷積核來(lái)完成單個(gè)卷積層處理時(shí)的并行計(jì)算。
(2)策略2:基于圖像分塊的并行策略。
由卷積層的計(jì)算原理可知,每個(gè)卷積核需要遍歷每個(gè)圖像的不同區(qū)域位置進(jìn)行卷積處理,同時(shí)多通道圖像經(jīng)過(guò)一個(gè)卷積核處理后,還需要進(jìn)行累加生成一幅圖像。從該處理過(guò)程可以看出,多通道圖像不同區(qū)域參與的卷積計(jì)算是完全獨(dú)立的。因此該并行策略設(shè)計(jì)為:將輸入多通道圖像劃分為不同的數(shù)據(jù)塊,每個(gè)C6678核獨(dú)立完成多通道不同圖像塊區(qū)域的卷積運(yùn)算。
以上2種并行計(jì)算策略從并行計(jì)算的實(shí)現(xiàn)上都是完全可行的。但是,C6678的多核及存儲(chǔ)特性使每個(gè)核的獨(dú)立緩存上很難容納每個(gè)卷積層的輸入多通道圖像,只能存放于C6678的共享4 MB緩存中。策略1中每個(gè)獨(dú)立卷積核在計(jì)算時(shí)都需要讀取一次多通道圖像數(shù)據(jù);而策略2因?yàn)槭腔趫D像塊進(jìn)行的并行任務(wù),每個(gè)C6678核讀取不同的圖像數(shù)據(jù)塊,讀取到的圖像數(shù)據(jù)塊可以參與N個(gè)卷積核計(jì)算。因此,策略1和策略2相比,雖然總的計(jì)算能力一致,但輸入圖像數(shù)據(jù)讀取時(shí)間增加了N倍。綜合考慮,本文采取策略2作為卷積處理的并行計(jì)算策略。
3.1.2 卷積束核心運(yùn)算
在NVIDIA的深度學(xué)習(xí)庫(kù)cudnn、Darknet和caffe等實(shí)現(xiàn)框架中,卷積運(yùn)算都是將卷積操作轉(zhuǎn)換為矩陣乘操作GEMM(GEneral Matrix Multiplication),由于GPU和CPU的高速內(nèi)存在處理數(shù)據(jù)時(shí)沒(méi)有容量制約,所以矩陣乘操作是這些深度學(xué)習(xí)庫(kù)實(shí)現(xiàn)快速卷積的主要方式。但是,多核DSP高速緩存資源有限制,采用矩陣乘方式,無(wú)論是核內(nèi)高速緩存還是多核共享緩存C6678都無(wú)法滿足計(jì)算存儲(chǔ)需求,參與計(jì)算的數(shù)據(jù)只能存放在DDR3上,導(dǎo)致計(jì)算效率急劇下降。因此,需要重新設(shè)計(jì)適配多核DSP的卷積運(yùn)算。
考慮到多核DSP處理器有限的快速計(jì)算內(nèi)存資源,本文針對(duì)性地提出了卷積束計(jì)算概念。卷積束可以理解為收集參與單個(gè)卷積核運(yùn)算的多個(gè)圖像通道的數(shù)據(jù)作為單個(gè)卷積運(yùn)算的輸入,卷積束運(yùn)算可以簡(jiǎn)化成卷積束與卷積核的乘累加。因此,在嵌入式平臺(tái)上,本文拋棄常用的深度學(xué)習(xí)框架中將卷積計(jì)算轉(zhuǎn)換為矩陣運(yùn)算的思路,提出將單個(gè)卷積束運(yùn)算作為多通道圖像卷積處理的一個(gè)基本計(jì)算核心。由此整個(gè)卷積層的計(jì)算抽象為遍歷多通道圖像依次得到不同的卷積束,每個(gè)卷積束依次和不同卷積核進(jìn)行計(jì)算,不同的卷積核計(jì)算結(jié)果分別存儲(chǔ)于對(duì)應(yīng)的輸出圖像層。單個(gè)卷積束運(yùn)算如圖3所示,基于卷積束的卷積層處理控制流程如圖4所示。
Figure 3 A single convolutional beam operation 圖3 單個(gè)卷積束運(yùn)算
Figure 4 Flow chart of convolutional layer processing control based on convolutional beam圖4 基于卷積束的卷積層處理控制流程
鑒于DSP平臺(tái)不支持常用深度學(xué)習(xí)框架,本文對(duì)多核DSP平臺(tái)上的深度學(xué)習(xí)框架進(jìn)行簡(jiǎn)易開發(fā),使其可以支持常用的卷積神經(jīng)網(wǎng)絡(luò)。多核DSP平臺(tái)上的開發(fā)框架主要包含以下主要內(nèi)容:
(1)主要卷積神經(jīng)網(wǎng)絡(luò)運(yùn)行層支持,以組件方式進(jìn)行配置運(yùn)行。這些運(yùn)行層包括卷積層、池化層、上采樣層、連接層、殘差層處理、YOLO檢測(cè)層處理。
(2)深度學(xué)習(xí)網(wǎng)絡(luò)配置分析處理:
- 結(jié)合嵌入式資源特性的網(wǎng)絡(luò)內(nèi)存動(dòng)態(tài)分配;
- 結(jié)合嵌入式資源特性的處理組件配置分析。
(3)訓(xùn)練權(quán)重參數(shù)的加載及分析。
(4)前向預(yù)測(cè)推理。
本文目前的應(yīng)用工作場(chǎng)景如下所示:
(1)服務(wù)器訓(xùn)練。
通過(guò)桌面服務(wù)器進(jìn)行深度學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練,訓(xùn)練完成后,保存訓(xùn)練的權(quán)重參數(shù)。
(2)DSP預(yù)測(cè)推理。
將訓(xùn)練后的權(quán)重導(dǎo)入到DSP外部存儲(chǔ)器,在DSP平臺(tái)上運(yùn)行本文的處理框架進(jìn)行前向預(yù)測(cè)推理。
通過(guò)以上工作,本文完成了深度學(xué)習(xí)網(wǎng)絡(luò)在多核DSP平臺(tái)上的基本生態(tài)建設(shè),能夠使多核DSP按照桌面計(jì)算機(jī)的通用設(shè)置運(yùn)行深度學(xué)習(xí)網(wǎng)絡(luò)。
本文針對(duì)卷積神經(jīng)網(wǎng)絡(luò)在C6678平臺(tái)上的運(yùn)行設(shè)計(jì)了2個(gè)輸入接口:圖像數(shù)據(jù)輸入接口和目標(biāo)識(shí)別類型接口。收到圖像數(shù)據(jù)后和目標(biāo)檢測(cè)類型數(shù)據(jù)后,根據(jù)目標(biāo)識(shí)別類型選擇不同的網(wǎng)絡(luò)架構(gòu)并構(gòu)建網(wǎng)絡(luò),生成該架構(gòu)下的網(wǎng)絡(luò)處理隊(duì)列,并同時(shí)進(jìn)行權(quán)重?cái)?shù)據(jù)文件分析,解析每個(gè)處理層需要的權(quán)重參數(shù)在外部存儲(chǔ)器內(nèi)的偏移地址。同時(shí),DSP主處理核啟動(dòng)主處理進(jìn)程,遍歷網(wǎng)絡(luò)組件處理隊(duì)列,并運(yùn)行每個(gè)組件的前向預(yù)測(cè)函數(shù);每個(gè)組件層在多核DSP平臺(tái)上的并行處理調(diào)度隱藏在每個(gè)組件層的前向預(yù)測(cè)函數(shù)中。網(wǎng)絡(luò)架構(gòu)及調(diào)度流程如圖5所示。
Figure 5 Scheduling flow chart of convolutional neural network for SAR target recognition based on C6678圖5 基于C6678的SAR目標(biāo)識(shí)別卷積神經(jīng)網(wǎng)絡(luò)調(diào)度流程圖
依據(jù)第3節(jié)所述的卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)內(nèi)容,通過(guò)軟件優(yōu)化設(shè)計(jì)與測(cè)試時(shí),考慮YOLOv3網(wǎng)絡(luò)對(duì)多核DSP平臺(tái)資源的需求較高,其在C6678平臺(tái)上運(yùn)行會(huì)受到較大限制,因此本文最終選擇YOLOv3-TINY網(wǎng)絡(luò)在C6678平臺(tái)上進(jìn)行實(shí)時(shí)并行處理,硬件資源為單片C6678。
YOLOv3-TINY是YOLOv3的簡(jiǎn)化版,相對(duì)YOLOv3模型,總網(wǎng)絡(luò)層數(shù)減少到了31層,但保留了殘差單元和多尺度識(shí)別,在網(wǎng)絡(luò)輕量化和識(shí)別性能上取得了較好的折衷,其中卷積層占16層,輸入為YOLOv3系列網(wǎng)絡(luò)的標(biāo)準(zhǔn)輸入尺寸416*416。在實(shí)際處理時(shí)大圖通過(guò)平滑抽取至(416,416)再輸入到深度學(xué)習(xí)網(wǎng)絡(luò)進(jìn)行識(shí)別處理。網(wǎng)絡(luò)架構(gòu)及運(yùn)行時(shí)間如表1所示。通過(guò)多次統(tǒng)計(jì),YOLOv3-TINY網(wǎng)絡(luò)在單片C6678上的識(shí)別處理時(shí)間平均為1 s左右。表1中class參數(shù)為識(shí)別目標(biāo)類型數(shù)量,X為識(shí)別前總共預(yù)測(cè)的參數(shù)數(shù)量。
目前機(jī)載SAR圖像的典型目標(biāo)相對(duì)光學(xué)圖像存在樣本量少的問(wèn)題,坦克、飛機(jī)等戰(zhàn)術(shù)小目標(biāo)圖像源很難獲取,因此在本文實(shí)驗(yàn)中,SAR圖像樣本選擇獲取難度較低的機(jī)場(chǎng)目標(biāo)樣本進(jìn)行訓(xùn)練。SAR機(jī)場(chǎng)數(shù)據(jù)集主要包含4種分辨率(0.3 m,0.5 m,1 m和3 m)共400幅圖像,其中無(wú)機(jī)場(chǎng)圖像占比10%,訓(xùn)練集占比80%,驗(yàn)證集占比20%。
訓(xùn)練參數(shù)采用YOLOv3-TINY網(wǎng)絡(luò)標(biāo)準(zhǔn)模板參數(shù),由于訓(xùn)練樣本數(shù)較少,為了避免過(guò)擬合情況,訓(xùn)練批次數(shù)在該樣本集上最大不超過(guò)30 000次。訓(xùn)練平臺(tái)為地面GPU服務(wù)工作站,訓(xùn)練完成后將YOLOv3-TINY網(wǎng)絡(luò)權(quán)重導(dǎo)入C6678 的DDR3存儲(chǔ)器。
由于數(shù)據(jù)集包含了多個(gè)機(jī)載平臺(tái)的實(shí)時(shí)SAR圖像,平臺(tái)的差異性(分辨率、輻射功率、作用距離和波形差異等)導(dǎo)致不同源的SAR圖像在質(zhì)量、量化和對(duì)比度上有較大的區(qū)別,從而會(huì)影響目標(biāo)識(shí)別對(duì)不同SAR圖像數(shù)據(jù)源的識(shí)別能力。本文通過(guò)實(shí)驗(yàn)對(duì)驗(yàn)證集進(jìn)行測(cè)試,機(jī)場(chǎng)目標(biāo)識(shí)別準(zhǔn)確率為84%,實(shí)驗(yàn)結(jié)果驗(yàn)證了YOLOv3-TINY網(wǎng)絡(luò)對(duì)于少樣本訓(xùn)練集及不同平臺(tái)SAR圖像的識(shí)別泛化能力,基本能夠滿足需求方對(duì)機(jī)載平臺(tái)的識(shí)別準(zhǔn)確率要求。
圖6為8幅不同分辨率的SAR樣本圖像在C6678平臺(tái)的機(jī)場(chǎng)識(shí)別效果圖,這些樣本來(lái)源于不同機(jī)載雷達(dá)平臺(tái),標(biāo)注機(jī)場(chǎng)類的識(shí)別框尺寸在不同源圖像上會(huì)有較大的差別,這主要是因?yàn)閷?duì)于機(jī)場(chǎng)類的大尺寸的目標(biāo)識(shí)別而言,不同平臺(tái)的SAR圖像其目標(biāo)標(biāo)注范圍內(nèi)會(huì)存在大量的其他形態(tài)信息,對(duì)卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)記憶會(huì)有一定程度的影響;訓(xùn)練端對(duì)于機(jī)場(chǎng)類目標(biāo)的位置信息標(biāo)注主要是人工參與,其人工參與的機(jī)場(chǎng)標(biāo)注范圍也會(huì)對(duì)測(cè)試結(jié)果產(chǎn)生一定程度的影響。
Table 1 Running time statistics of YOLOv3-TINY network architecture 表1 YOLOv3-TINY網(wǎng)絡(luò)架構(gòu)運(yùn)行時(shí)間統(tǒng)計(jì)
Figure 6 SAR airfield target recognition results圖6 SAR機(jī)場(chǎng)目標(biāo)識(shí)別結(jié)果圖
YOLOv3-TINY網(wǎng)絡(luò)在DSP和GPU平臺(tái)上的檢測(cè)結(jié)果基本一致,但FPS值只有1,雖然和該模型在GPU的FPS值(大于100)相比,實(shí)時(shí)性能下降很多,但考慮到機(jī)載SAR的圖像周期為秒級(jí),幀率大都小于1,所以在類C6678平臺(tái)上進(jìn)行基于深度學(xué)習(xí)的機(jī)載SAR大型目標(biāo)識(shí)別能夠滿足實(shí)時(shí)性需求。
本文結(jié)合C6678的多核DSP特性,通過(guò)設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)在多核DSP上的運(yùn)行架構(gòu)及主要處理層,完成了YOLOv3-TINY網(wǎng)絡(luò)模型在C6678平臺(tái)上的實(shí)測(cè)運(yùn)行。本文主要出發(fā)點(diǎn)是在DSP平臺(tái)沒(méi)有成熟的深度學(xué)習(xí)開發(fā)生態(tài)的條件下,驗(yàn)證了多核DSP平臺(tái)上運(yùn)行簡(jiǎn)易深度學(xué)習(xí)網(wǎng)絡(luò)的可行性。本文設(shè)計(jì)的深度學(xué)習(xí)簡(jiǎn)易框架在C6678多核DSP的運(yùn)行性能能夠滿足目前機(jī)載SAR圖像目標(biāo)識(shí)別的實(shí)時(shí)性需求,完成了基于C6678多核DSP的卷積神經(jīng)網(wǎng)絡(luò)的設(shè)計(jì)實(shí)現(xiàn)。考慮到機(jī)載平臺(tái)的國(guó)產(chǎn)化需求較強(qiáng),本文方法可以應(yīng)用于未來(lái)類C6678的更高性能國(guó)產(chǎn)多核處理器上。