基于參數量化的深度卷積神經網絡的加速與壓縮方法
【技術領域】
[0001] 本發明涉及圖像處理技術,特別是涉及一種基于參數量化的深度卷積神經網絡的 加速與壓縮方法。
【背景技術】
[0002] 近幾年來,深度卷積神經網絡在計算機視覺、語音處理、機器學習等眾多領域取得 了巨大的突破,顯著地提高了機器算法在圖像分類、目標檢測和語音識別等多個任務中的 性能,并且在互聯網、視頻監控等行業中得到了廣泛應用。
[0003] 深度卷積神經網絡的訓練過程,是基于大規模的含有人工標注信息的數據集,對 網絡參數進行學習與調整。一般而言,大容量、高復雜度的深度卷積網絡可以更全面地對數 據進行學習,從而取得更好的性能指標。但是,隨著網絡層數與參數數量的增加,運算和存 儲代價都會大幅增長,因此目前來說,卷積神經網絡的訓練與測試大多只能在高性能的計 算集群上進行。
[0004] 另一方面,移動互聯網技術在近年取得了長足進步,在實際生活中的應用也越來 越廣泛。在移動互聯網的應用場景下,用戶所使用的設備,例如手機或者平板電腦,其運算 與存儲能力都十分有限。雖然深度卷積神經網絡可以在計算集群上進行訓練,但是在移動 平臺應用場景下,網絡模型的測試過程仍需要在移動設備上進行,這就提出了兩個挑戰:如 何降低卷積神經網絡的測試用時,以及如何壓縮網絡模型的存儲開銷。
[0005] 針對卷積神經網絡的加速與壓縮問題,已有一些有效的算法被提出。這些算法是 將網絡中的某一層分解為復雜度較低的若干層的組合,以達到降低運算或者存儲代價的目 的。然而,這些算法并沒有同時考慮卷積神經網絡的加速和壓縮,并且只在網絡的少數幾層 上進行了測試,對于整個網絡模型的加速或壓縮效果還有待研究。
【發明內容】
[0006] 本發明提供的基于參數量化的深度卷積神經網絡的加速與壓縮方法,可以實現深 度卷積神經網絡的加速與壓縮。
[0007] 根據本發明的一方面,提供一種基于參數量化的深度卷積神經網絡的加速與壓縮 方法,包括:對深度卷積神經網絡的參數進行量化得到多個子碼本和所述多個子碼本分別 對應的索引值;根據所述多個子碼本和所述多個子碼本分別對應的索引值獲取所述深度卷 積神經網絡的輸出的特征圖。
[0008] 本發明實施例提供的基于參數量化的深度卷積神經網絡的加速與壓縮方法,通過 對深度卷積神經網絡的參數進行量化得到多個子碼本和多個子碼本分別對應的索引值,根 據多個子碼本和多個子碼本分別對應的索引值獲取深度卷積神經網絡的輸出的特征圖,從 而可以實現深度卷積神經網絡的加速與壓縮。
【附圖說明】
[0009] 圖1為本發明實施例提供的基于參數量化的深度卷積神經網絡的加速與壓縮方 法流程圖;
[0010] 圖2為本發明實施例提供的深度卷積神經網絡的圖像分類過程示意圖;
[0011] 圖3為本發明實施例提供的全連接層的參數量化過程示意圖;
[0012] 圖4為本發明實施例提供的全連接層的高效運行過程示意圖。
【具體實施方式】
[0013] 下面結合附圖對本發明實施例提供的基于參數量化的深度卷積神經網絡的加速 與壓縮方法進行詳細描述。
[0014] 圖1為本發明實施例提供的基于參數量化的深度卷積神經網絡的加速與壓縮方 法流程圖。
[0015] 參照圖1,在步驟S101,對深度卷積神經網絡的參數進行量化得到多個子碼本和 所述多個子碼本分別對應的索引值。
[0016] 在步驟S102,根據所述多個子碼本和所述多個子碼本分別對應的索引值獲取所述 深度卷積神經網絡的輸出的特征圖。
[0017] 這里,深度卷積神經網絡包括多個卷積層或多個全連接層,將多個卷積層的參數 或多個全連接層的參數進行量化,并根據量化后的多個卷積層或多個全連接層獲取各自對 應的輸出的特征圖,具體可參照圖2。
[0018] 進一步地,所述深度卷積神經網絡為多個卷積層,所述對深度卷積神經網絡的參 數進行量化得到多個子碼本和所述多個子碼本分別對應的索引值包括,重復執行以下處 理,直至多個卷積層都被遍歷:
[0019] 將所述卷積層的參數分割成M組,每組包括多個第一參數子向量,其中,M為正整 數;
[0020] 對所述每組的多個第一參數子向量分別進行K均值聚類得到所述每組對應的第 一子碼本,所述第一子碼本包括多個第一碼字;
[0021] 分別計算所述多個第一參數子向量與所述多個第一碼字的歐氏距離;
[0022] 獲取所述歐氏距離最小的第一參數子向量和第一碼字,并記錄所述歐氏距離最小 的第一碼字的索引值。
[0023] 這里,卷積層的參數可以是,但不限于,具體為WkXHkXC sXCt的四階數組,其中Wk是卷積核的寬度,Hk是卷積核的高度,C s是輸入的第一特征圖的通道數,C ,是輸出的第一特 征圖的通道數。將Cs所在維度均勻地分為M組,每組的維度為[Cs/M](若維度不足,則在最 后一組中補零),這樣就可以將卷積層的參數分為M組,每組包含Wk X Hk X Ct個第一參數子 向量。
[0024] 對每組的Wk X Hk X Ct個第一參數子向量分別進行K均值聚類得到每組對應的第一 子碼本,其中,K為正整數,K為第一子碼本中的第一碼字的數量。
[0025] 進一步地,所述深度卷積神經網絡為多個全連接層,所述對深度卷積神經網絡的 參數進行量化得到多個子碼本和所述多個子碼本分別對應的索引值包括,重復執行以下處 理,直至多個全連接層都被遍歷:
[0026] 將所述全連接層的參數分割成M組,每組包括多個第二參數子向量;
[0027] 對所述多個第二參數子向量分別進行K均值聚類得到所述每組對應的第二子碼 本,所述第二子碼本包括多個第二碼字;
[0028] 分別計算所述多個第二參數子向量與所述多個第二碼字的歐氏距離;
[0029] 獲取所述歐氏距離最小的第二參數子向量和第二碼字,并記錄所述歐氏距離最小 的第二碼字的索引值。
[0030] 這里,全連接層參數可以是,但不限于,具體為CtXCs的矩陣,其中C s是輸入層的 節點數,Ct是輸出層的節點數。將Cs所在維度均勻地分為M組,每段的維度為[Cs/M](若維 度不足,則在最后一段中補零),這樣就可以將全連接層的參數分為M組,每組包含Ct個第 二參數子向量。
[0031] 在劃分完的M組第二參數子向量中,分別進行K均值聚類獲取每組對應的第二子 碼本,其中,K為正整數,K為第二子碼本中的第二碼字的數量。
[0032] 進一步地,所述深度卷積神經網絡為所述多個卷積層,所述根據所述多個子碼本 和所述多個子碼本分別對應的索引值獲取所述深度卷積神經網絡的輸出的特征圖包括,重 復執行以下處理,直至所述多個卷積層都被遍歷:
[0033] 輸入第一特征圖;
[0034] 將所述第一特征圖分割為M組,所述每組包括多個第一特征子向量;
[0035] 將所述多個第一特征子向量分別與所述每組對應的第一子碼本中的多個第一碼 字進行內積運算得到多個第一運算結果,并將所述多個第一運算結果存儲在第一查找表 中;
[0036] 將所述多個第一運算結果進行求和得到輸出的第一特征圖。
[0037] 這里,輸入第一特征圖,第一特征圖可以是,但不限于,具體SWsXHsXC s的三階數 組,其中,Ws是輸入特征圖的寬度,H s是輸入特征圖的高度。將C s所在維度均勻地分為M組, 每組的維度為[Cs/M](若維度不足,則在最后一段中補零),這樣就可以將卷積層中的第一 特征圖分為M組,每組包含Ws X Hs個第一特征子向量。
[0038] 對于卷積層,輸出的第一特征圖中的