一種由cpu和gpu協(xié)同工作的目標(biāo)航跡初始化方法
【專(zhuān)利摘要】該發(fā)明公開(kāi)了一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,屬于雷達(dá)與聲納【技術(shù)領(lǐng)域】,主要涉及目標(biāo)跟蹤技術(shù)中檢測(cè)前跟蹤技術(shù)的目標(biāo)初始化,特別是使用最大似然-概率數(shù)據(jù)關(guān)聯(lián)(ML-PDA)算法對(duì)目標(biāo)的初始化。該方法使最大似然-概率數(shù)據(jù)關(guān)聯(lián)算法主要計(jì)算工作在多線程架構(gòu)的GPU中完成,具有保持與CPU同等計(jì)算精度的前提下實(shí)現(xiàn)實(shí)時(shí)跟蹤、計(jì)算速度快、可直接應(yīng)用于工程、減小CPU計(jì)算量的效果。
【專(zhuān)利說(shuō)明】—種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于雷達(dá)與聲納【技術(shù)領(lǐng)域】,主要涉及目標(biāo)跟蹤技術(shù)中檢測(cè)前跟蹤技術(shù)的目標(biāo)初始化,特別是使用最大似然-概率數(shù)據(jù)關(guān)聯(lián)(ML-PDA)算法對(duì)目標(biāo)的初始化。
【背景技術(shù)】
[0002]目標(biāo)跟蹤技術(shù)廣泛應(yīng)用于各領(lǐng)域中,特別是雷達(dá)或聲納系統(tǒng)。目標(biāo)跟蹤技術(shù)分為檢測(cè)后跟蹤(TAD)和檢測(cè)前跟蹤(TBD)兩大類(lèi),相比較而言,TAD算法計(jì)算量較低,利于實(shí)時(shí)實(shí)現(xiàn),但由于TAD算法依賴(lài)于前端信號(hào)處理器對(duì)目標(biāo)的檢測(cè),在低信噪比(SNR)情況下跟蹤性能不理想;TBD算法由于在跟蹤的同時(shí)加入了目標(biāo)檢測(cè),因此在低信噪比下對(duì)目標(biāo)有較強(qiáng)的跟蹤能力,但由于計(jì)算復(fù)雜導(dǎo)致TBD算法在工程中應(yīng)用受到很多限制。
[0003]TBD算法按結(jié)構(gòu)可分為兩大類(lèi):批處理和迭代,批處理跟蹤器直接從多幀觀測(cè)數(shù)據(jù)中進(jìn)行目標(biāo)跟蹤,由于利用了多幀觀測(cè),其效果較好,精度較高,但計(jì)算量大。迭代算法主要基于貝葉斯理論,常使用粒子濾波(PF)作為具體的實(shí)現(xiàn)手段。在工程應(yīng)用中,目標(biāo)跟蹤算法實(shí)施之前需要對(duì)航跡進(jìn)行初始化,以找到目標(biāo)的初始狀態(tài)向量,從而進(jìn)一步進(jìn)行跟蹤,在批處理TBD算法中,目標(biāo)初始化選擇的是最大似然-概率數(shù)據(jù)關(guān)聯(lián)(ML-PDA)算法。
[0004]ML-PDA算法的基本思路是,目標(biāo)的狀態(tài)向量為一未知參量,在獲取多幀觀測(cè)數(shù)據(jù)后可結(jié)合監(jiān)測(cè)區(qū)域?qū)懗龆鄮瑪?shù)據(jù)的總對(duì)數(shù)似然比(LLR)表達(dá)式(目標(biāo)函數(shù)),該表達(dá)式含未知參量,當(dāng)目標(biāo)函數(shù)取最大值時(shí)對(duì)應(yīng)的未知參量即為目標(biāo)的真實(shí)狀態(tài)向量,這一過(guò)程常通過(guò)遺傳搜索算法(GA)來(lái)初步優(yōu)化待估計(jì)向量(此處指的是待求的目標(biāo)狀態(tài)),再通過(guò)DFP搜索方法(變尺度法)來(lái)進(jìn)一步優(yōu)化待估計(jì)向量,得到最優(yōu)值。而GA算法是在目標(biāo)函數(shù)中隨機(jī)選取若干各點(diǎn)稱(chēng)之為種子,再計(jì)算各種子的Fitness指數(shù)(適應(yīng)指數(shù),指的是GA算法中評(píng)價(jià)各種子優(yōu)良程度的指標(biāo)),選出指標(biāo)優(yōu)良的幾個(gè)種子,再在優(yōu)良種子的周?chē)S機(jī)選出若干新種子,計(jì)算新種子的Fitness指數(shù),由此重復(fù)計(jì)算,直至通過(guò)收斂測(cè)試。由于GA算法涉及到計(jì)算數(shù)量龐大的種子的Fitness指數(shù),在傳統(tǒng)的單線程CPU架構(gòu)處理器上運(yùn)算時(shí)需要逐次計(jì)算每個(gè)種子的的Fitness指數(shù),使得CPU的任務(wù)重、耗時(shí)長(zhǎng),加之CPU本身就擔(dān)負(fù)著計(jì)算機(jī)其他應(yīng)用的計(jì)算工作,使得GA算法計(jì)算時(shí)耗時(shí)嚴(yán)重,無(wú)法滿足目標(biāo)跟蹤的實(shí)時(shí)性。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的針對(duì)傳統(tǒng)基于CPU架構(gòu)的ML-PDA在計(jì)算實(shí)時(shí)性上的不足,提出一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,達(dá)到在保持與CPU同等計(jì)算精度的前提下實(shí)現(xiàn)實(shí)時(shí)跟蹤、計(jì)算速度快、可直接應(yīng)用于工程、減小CPU計(jì)算量的目的。
[0006]本發(fā)明的思路是,采用“初選”,“復(fù)選”的方式來(lái)尋求最大化LLR,從而保證ML-PDA算法精度,在初選階段,采用對(duì)雜波數(shù)變化相對(duì)不太敏感的GA搜索展開(kāi),在GPU架構(gòu)中獨(dú)立計(jì)算每一種子的Fitness指數(shù),通過(guò)多線程一次計(jì)算即可完成CPU架構(gòu)中多次循環(huán)才能完成的步驟,從而獲得加速比。另外,由于ML-PDA采用多幀觀測(cè)來(lái)進(jìn)行數(shù)據(jù)擬合,并且每幀觀測(cè)往往收到多個(gè)觀測(cè)數(shù)據(jù),因此LLR表達(dá)式中存在含參數(shù)的多項(xiàng)式求和,在計(jì)算每一種子的Fitness指數(shù)時(shí),CPU架構(gòu)中需要進(jìn)行觀測(cè)總數(shù)次循環(huán),造成極大的時(shí)間開(kāi)銷(xiāo);在GPU架構(gòu)中,考慮通過(guò)每一線程計(jì)算LLR表達(dá)式中的含參多項(xiàng)式,再通過(guò)多線程遞歸的方式進(jìn)行求和,可進(jìn)一步獲得加速比。在對(duì)單個(gè)向量進(jìn)行復(fù)選的時(shí)候,參考多線程對(duì)應(yīng)多項(xiàng)式的方式求LLR的方式可規(guī)避掉多次循環(huán)求和,加速整個(gè)“極大似然”過(guò)程,由此實(shí)現(xiàn)發(fā)明目的。
[0007]本發(fā)明方法包括如下步驟:
[0008]步驟1.在CPU主機(jī)端對(duì)ML-PDA算法參數(shù)進(jìn)行初始化;
[0009]步驟2.在CPU端啟動(dòng)LLR計(jì)算線程;
[0010]步驟3.將LLR存儲(chǔ)矩陣cu_Seed_LLR復(fù)制到內(nèi)存填充Seed_LLR,通過(guò)遍歷方式尋找其最大值max (Seed_LLR)、最小值min (Seed_LLR)與均值mean (Seed_LLR),計(jì)算出Fitness指數(shù)線性算式中兩個(gè)參數(shù)a、b ;
[0011]步驟4.在CPU端創(chuàng)建計(jì)算Fitness指數(shù)工作線程,cu_Fit_Factor=acu_Seed_LLR+b ;
[0012]步驟5.將cu_Fit_Factor拷貝到內(nèi)存填充Fit_Factor,計(jì)算出種子的平均Fitness指數(shù),并且將種子的Fitness指數(shù)基于平均數(shù)歸一化;
[0013]步驟6.基于歸一化后的Fitness指數(shù)選擇出若干個(gè)父代種子,再依據(jù)Fitness指數(shù)復(fù)制選出的父代種子,使其總數(shù)達(dá)到Np個(gè)并對(duì)其標(biāo)號(hào),然后將該Np個(gè)父代種子隨機(jī)配對(duì),將配對(duì)結(jié)果對(duì)應(yīng)的種子序號(hào)存儲(chǔ)在向量Pair_Rec中,將每一對(duì)種子隨機(jī)產(chǎn)生的交叉點(diǎn)位置存儲(chǔ)于Corss_pos中;
[0014]步驟7.存儲(chǔ)在CPU端的Np個(gè)父代種子狀態(tài)向量與對(duì)應(yīng)的種子編號(hào)存儲(chǔ)向量Pair_Rec 拷貝至 GPU 端的 cu_Seed_01d 與 cu_Pair_Rec 中;
[0015]步驟8.在CPU端啟動(dòng)種子交叉線程,得到子代;
[0016]步驟9.在CPU端啟動(dòng)子代突變線程,在規(guī)定范圍內(nèi)隨即改變種子數(shù)值,并將突變完成后的子代填充父代存儲(chǔ)矩陣;
[0017]步驟10.在CPU端啟動(dòng)LLR計(jì)算線程,將得到的新一代種子LLR值拷貝回內(nèi)存填充Seed_LLR,并且進(jìn)行收斂測(cè)試;
[0018]步驟11.若收斂測(cè)試通過(guò),GA算法完成,若不通過(guò),回到步驟3 ;
[0019]步驟12.將通過(guò)收斂測(cè)試的父代種子復(fù)制回內(nèi)存,計(jì)算種子內(nèi)每一個(gè)參數(shù)的均值,得到收斂后的向量State_GA ;
[0020]步驟13.在CPU端初始化校正矩陣H,令k=l ;
[0021]步驟14.在CPU端啟動(dòng)梯度計(jì)算線程;
[0022]步驟15.在CPU端將cu_Grad拷貝回內(nèi)存填充Grad向量,計(jì)算其方向向量;
[0023]步驟16.計(jì)算LLR值;
[0024]步驟17.在CPU端進(jìn)行收斂判斷,若滿足,令最優(yōu)參數(shù)向量為xk+1 ;若不滿足,進(jìn)入下一步;
[0025]步驟18.若k=|x| ,則令X1=Xw,回步驟13,否則,更新校正矩陣H,回步驟14 ;
[0026]步驟19.輸出最優(yōu)參數(shù)向量,釋放CPU與GPU端存儲(chǔ)空間;
[0027]步驟20.計(jì)算似然比檢測(cè)值與航跡校驗(yàn)門(mén)限,判斷航跡是否存在。
[0028]步驟I具體步驟為:
[0029]步驟Ia.初始化觀測(cè)環(huán)境各項(xiàng)參數(shù):頻率觀測(cè)方差,角度觀測(cè)方差,距離觀測(cè)方差,對(duì)應(yīng)頻率、角度和距離的觀測(cè)方程,虛警概率,檢測(cè)概率,雜波密度,雷達(dá)采樣間隔;
[0030]步驟Ib.初始化GA算法各項(xiàng)參數(shù):隨機(jī)撒種數(shù)量Np,二進(jìn)制編碼長(zhǎng)度,收斂判定閾值,突變概率,交叉概率;
[0031 ] 步驟Ic.初始化DFP算法收斂閾值;
[0032]步驟Id.收集觀測(cè)信息,并將其存入觀測(cè)矩陣Z中,將每一幀收集到的觀測(cè)數(shù)量存入記錄向量0bser_num中;
[0033]步驟Ie.在CPU端隨機(jī)產(chǎn)生Np個(gè)遺傳種子,每個(gè)種子含I x I個(gè)數(shù)值;
[0034]步驟If.為GA算法、DFP算法在顯存中開(kāi)辟中間變量存儲(chǔ)區(qū)域,它們包括:觀測(cè)存儲(chǔ)矩陣cu_0bser、觀測(cè)數(shù)量記錄向量cu_0bser_num、隨機(jī)父代種子存儲(chǔ)矩陣cu_Seed_01d、子代種子存儲(chǔ)矩陣cu_Seed_Young、對(duì)應(yīng)種子LLR存儲(chǔ)矩陣cu_Seed_LLR、計(jì)算LLR時(shí)需要用到的中間變量存儲(chǔ)區(qū)域cu_LLR_Per_Observation_Seed、Fitness指數(shù)存儲(chǔ)向量cu_Fit_Factor、父代配對(duì)記錄向量cu_Pair_Rec、交叉點(diǎn)記錄向量cu_Corss_pos、突變記錄矩陣cu_Mut_rec、GA算法收斂結(jié)果向量cu_State_GA、梯度向量cu_Grad、校正矩陣cu_H等;
[0035]步驟Ig.在CPU端將接收到的多幀觀測(cè)信息矩陣Obser與每幀觀測(cè)數(shù)量0bser_num加載到內(nèi)存中;
[0036]步驟Ih.在CPU端將(Ie)產(chǎn)生的Np個(gè)種子,(Ig)中生成的Obser與0bser_num拷貝到內(nèi)存分別填充 cu_Seed_01d、cu_0bser 與 cu_0bser_num。
[0037]步驟3中參數(shù)a、b分別為:
【權(quán)利要求】
1.一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,其步驟包括: 步驟1.在CPU主機(jī)端對(duì)ML-PDA算法參數(shù)進(jìn)行初始化; 步驟2.在CPU端啟動(dòng)LLR計(jì)算線程; 步驟3.將cu_Seed_LLR矩陣復(fù)制到內(nèi)存填充Seed_LLR,通過(guò)遍歷方式尋找其最大值max (Seed_LLR)、最小值 min (Seed_LLR)與均值 mean (Seed_LLR),計(jì)算出 Fitness 指數(shù)線性算式中兩個(gè)參數(shù)a、b; 步驟4.在CPU端創(chuàng)建計(jì)算Fitness指數(shù)工作線程,cu_Fit_Factor=acu_Seed_LLR+b ;步驟5.將cu_Fit_Factor拷貝到內(nèi)存填充Fit_Factor,計(jì)算出種子的平均Fitness指數(shù),并且將種子的Fitness指數(shù)基于平均數(shù)歸一化; 步驟6.基于歸一化后的Fitness指數(shù)選擇出若干個(gè)父代種子,再依據(jù)Fitness指數(shù)復(fù)制選出的父代種子,使其總數(shù)達(dá)到Np個(gè)并對(duì)其標(biāo)號(hào),然后將該Np個(gè)父代種子隨機(jī)配對(duì),將配對(duì)結(jié)果對(duì)應(yīng)的種子序號(hào)存儲(chǔ)在向量Pair_Rec中,將每一對(duì)種子隨機(jī)產(chǎn)生的交叉點(diǎn)位置存儲(chǔ)于 Corss_pos 中; 步驟7.存儲(chǔ)在CPU端的Np個(gè)父代種子狀態(tài)向量與對(duì)應(yīng)的種子編號(hào)存儲(chǔ)向量Pair_Rec拷貝至 GPU 端的 cu_Seed_01d 與 cu_Pair_Rec 中; 步驟8.在CPU端啟動(dòng)種子交叉線程,得到子代; 步驟9.在CPU端啟動(dòng)子代突變`線程,將突變完成后的子代填充父代存儲(chǔ)矩陣; 步驟10.在CPU端啟動(dòng)LLR計(jì)算線程,將得到的新一代種子LLR值拷貝回內(nèi)存填充Seed_LLR,并且進(jìn)行收斂測(cè)試; 步驟11.若收斂測(cè)試通過(guò),GA算法完成,若不通過(guò),回到步驟3 ; 步驟12.將通過(guò)收斂測(cè)試的父代種子復(fù)制回內(nèi)存,計(jì)算種子內(nèi)每一個(gè)參數(shù)的均值,得到收斂后的向量State_GA ; 步驟13.在CPU端初始化校正矩陣H,令k=l ; 步驟14.在CPU端啟動(dòng)梯度計(jì)算線程; 步驟15.在CPU端將cu_Grad拷貝回內(nèi)存填充Grad向量,計(jì)算方向向量d ; 步驟16.在CPU端通過(guò)一維搜索方法確定搜索步長(zhǎng); 步驟17.在CPU端進(jìn)行收斂判斷,若滿足,令State_Final=xk+1 ;若不滿足,繼續(xù); 步驟18.若k=|x| ,則令X1=Xw,回13,否則,更新校正矩陣H,回14 ; 步驟19.輸出最優(yōu)參數(shù)向量State_Final,釋放CPU與GPU端存儲(chǔ)空間; 步驟20.計(jì)算似然比檢測(cè)值A(chǔ)H1ZU與航跡校驗(yàn)門(mén)限Tvali,判斷航跡是否存在。
2.如權(quán)利要求1所述的一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,步驟I包括: 步驟Ia.初始化觀測(cè)環(huán)境各項(xiàng)參數(shù):頻率觀測(cè)方差,角度觀測(cè)方差,距離觀測(cè)方差,對(duì)應(yīng)頻率、角度和距離的觀測(cè)方程,虛警概率,檢測(cè)概率,雜波密度,雷達(dá)采樣間隔; 步驟Ib.初始化GA算法各項(xiàng)參數(shù):隨機(jī)撒種數(shù)量Np,二進(jìn)制編碼長(zhǎng)度,收斂判定閾值,突變概率,交叉概率; 步驟Ic.初始化DFP算法收斂閾值; 步驟Id.收集觀測(cè)信息,并將其存入觀測(cè)矩陣Z中,將每一幀收集到的觀測(cè)數(shù)量存入記錄向量Obser_num中; 步驟le.在CPU端隨機(jī)產(chǎn)生Np個(gè)遺傳種子,每個(gè)種子含I X I個(gè)數(shù)值; 步驟If.為GA算法、DFP算法在顯存中開(kāi)辟中間變量存儲(chǔ)區(qū)域,它們包括:觀測(cè)存儲(chǔ)矩陣cu_Obser、觀測(cè)數(shù)量記錄向量cu_Obser_num、隨機(jī)父代種子存儲(chǔ)矩陣cu_Seed_01d、子代種子存儲(chǔ)矩陣cu_Seed_Young、對(duì)應(yīng)種子LLR存儲(chǔ)矩陣cu_Seed_LLR、計(jì)算LLR時(shí)需要用到的中間變量存儲(chǔ)區(qū)域cu_LLR_Per_Observation_Seed、Fitness指數(shù)存儲(chǔ)向量cu_Fit_Factor、父代配對(duì)記錄向量cu_Pair_Rec、交叉點(diǎn)記錄向量cu_Corss_pos、突變記錄矩陣cu_Mut_rec、GA算法收斂結(jié)果向量cu_State_GA、梯度向量cu_Grad、校正矩陣cu_H等; 步驟Ig.在CPU端將接收到的多幀觀測(cè)信息矩陣Obser與每幀觀測(cè)數(shù)量0bser_num加載到內(nèi)存中; 步驟Ih.在CPU端將(Ie)產(chǎn)生的Np個(gè)種子,(Ig)中生成的Obser與0bser_num拷貝到內(nèi)存分別填充 cu_Seed_01d、cu_0bser 與 cu_0bser_num。
3.如權(quán)利要求1所述的一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,步驟3中參數(shù)a、b分別為:
4.如權(quán)利要求1所述的一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,步驟16包括: 步驟16a.初始化搜索步長(zhǎng)λ為O,設(shè)定搜索步長(zhǎng)迭代步進(jìn)λ—step為I,令xk=State_GA ; 步驟16b.在CPU端啟動(dòng)Xk的LLR計(jì)算線程; 步驟16c.在CPU端將得到的LLR值拷貝回內(nèi)存填充LLR_xk,令LLR_xk=_LLR_xk ;
步驟 16d.令 λ = λ + λ _step, xk+1=State_GA+ λ X d ; 步驟16e.在CPU端啟動(dòng)xk+1的LLR計(jì)算線程; 步驟16f.在CPU端將得到的LLR值拷貝回內(nèi)存填充LLR_xk+1,令LLR_xk+1=-LLR_xk+1 ; 步驟16g.在CPU端進(jìn)行判定,若LLR_xk+1 ( LLR_xk,則停止,反之令LLR_xk=LLR_xk+1,回到步驟15。
5.如權(quán)利要求1所述的一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法一種由CPU和GPU協(xié)同工作的目標(biāo)航跡初始化方法,步驟20包括: 步驟20a.將State_Final映射到量測(cè)空間,并進(jìn)行量測(cè)檢驗(yàn),收集落入關(guān)聯(lián)門(mén)限的量測(cè),更新量測(cè)矩陣與量測(cè)數(shù)量記錄向量; 步驟20b.參照步驟(2a)計(jì)算對(duì)應(yīng)于State_Final的LLR值LLR_State ;
【文檔編號(hào)】G06N3/12GK103871021SQ201410069204
【公開(kāi)日】2014年6月18日 申請(qǐng)日期:2014年2月27日 優(yōu)先權(quán)日:2014年2月27日
【發(fā)明者】唐續(xù), 高林, 魏平 申請(qǐng)人:電子科技大學(xué)