[原創]數字信號處理中的卷積網絡深度學習猜想(2) - 信號主週期估計算法 - 一種快速實現

轉載請註明出處,Writer:Zhonlihao鍾碩 @ 20190713

https://blog.csdn.net/xeonmm1

 

全尺度卷積算法的時間複雜度

全尺度卷積雖然有非常強的細節提取能力,但其是以大量增加運算量爲代價的,下面的僞代碼給出了其基本的運算過程:

for i = 尺度遍歷 n 

    for j = 時域遍歷 k

        for m = 特徵遍歷 f

            卷積核操作;

        end

    end

end

一個沒有經過優化的全尺度卷積算法的算法時間複雜度大概是O(n * k * f) ~O(n^3) 這無論對於電腦還是嵌入式cpu都是比較慢的,不利於算法的實時實現,細心分析下來,我們可以發現如果想實現快速算法,可以從特徵的組合出發去實現它們特定的卷積操作,這樣就會省下很多無謂的卷積掃描的時間耗費。

 

一種快速全卷積算法

如上圖所示,把機械的掃描轉化爲對特徵點事件的描述,從2個特徵點開始組合到全部特徵點的尺度,這是一個三角級別的算法展開:

for i = 特徵點個數遍歷 2~n

    for j = 起始特徵點遍歷 1 : n - i

        for k = 特徵點組內元素遍歷 j:j+i

            卷積核掃描操作;

        end

    end

end

譬如m = 6,那麼這個事件展開就是

1 2,2 3,3 4,4 5,5 6

1 2 3,2 3 4,3 4 5 ,4 5 6

1 2 3 4,2 3 4 5,3 4 5 6

1 2 3 4 5, 2 3 4 5 6

1 2 3 4 5 6

這樣就把較大量的O(n^3)轉化爲一個小量的O(n^3)操作;下面說一下卷積核掃描操作的變化:

如上圖所示選取f1,f2兩點特徵爲這次分析的基本事件,s1,s2是其鄰近特徵,那麼,第一首先要確保窗的大小最小爲f2-f1距離觸發啓動這個事件,其次,窗的最大長度不能超過s2-s1以免把鄰近點納入形成了新的一個組合事件,滑動時窗口的右端點必須碰到f2,如果左端點離開f1,則結束整個掃描過程,因此這個方法可以從本質上省去很多無謂的過渡時間浪費。

 

算法時間對比

以下是舊算法在matlab中的時間消耗:

以下是新算法在matlab中的時間消耗:

大概快了30倍以上,得出的數據統計基本一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章