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