亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于深度神經(jīng)壓縮的YOLO加速研究

        2019-05-27 01:18:44陳莉君李卓
        現(xiàn)代計算機 2019年11期
        關(guān)鍵詞:嵌入式深度設(shè)備

        陳莉君,李卓

        (西安郵電大學(xué)計算機學(xué)院,西安710100)

        0 引言

        從AlphaGo開始,深度學(xué)習(xí)漸漸進入業(yè)內(nèi)研究者的視線。深度學(xué)習(xí)近些年大熱的主要原因是由于近些年設(shè)備的計算力的增加,尤其是圖形處理器(Graphics Processing Unit,GPU)對于浮點數(shù)運算的有力支持。YOLO[1]的提出了一種在目標(biāo)識別領(lǐng)域新的方式,將檢測和回歸問題集合在一起,大大的增加了對于目標(biāo)的檢測速度。但是,YOLO的網(wǎng)絡(luò)層數(shù)相較于傳統(tǒng)的網(wǎng)絡(luò)也增加很多,導(dǎo)致訓(xùn)練和推理的計算量會大大增加。尤其是嵌入式設(shè)備和移動設(shè)備,這些設(shè)備可能并不能很好地支撐層數(shù)增加之后帶來的計算量增加。為了能讓更多的設(shè)備和更多的人用上和享受到深度學(xué)習(xí)給他們帶來的方便,對于深度神經(jīng)網(wǎng)絡(luò)推理加速需求就漸漸增多了[2-4]。

        國內(nèi)外現(xiàn)有的研究結(jié)果中有一部分是利用并行化神經(jīng)網(wǎng)絡(luò)進行加速,這樣可以將一個深度神經(jīng)網(wǎng)絡(luò)并行化拆分,分布式運行這個模型。另外一部分是使用軟件加速深度神經(jīng)網(wǎng)絡(luò)的例子。例如:EIE(Efficient Inference Engine)[5]這個軟件提出了一個推理引擎,對這個壓縮的網(wǎng)絡(luò)模型進行推理,并利用權(quán)重共享進行加速稀疏矩陣的相乘過程。DeepX[6]:用于移動設(shè)備上低功耗深度學(xué)習(xí)推斷的軟件加速器。Eyeriss[7]:用于深度卷積神經(jīng)網(wǎng)絡(luò)的節(jié)能可重構(gòu)加速器。針對深度神經(jīng)網(wǎng)絡(luò)模型的壓縮,Kim等人在2015年提出了一種壓縮CNN模型的方法。Soulie等人在2016年提出一種在模型訓(xùn)練階段進行壓縮的方法。首先在全連接層損失函數(shù)上增加額外的歸一項,使得權(quán)重趨向于二值,然后對于輸出層進行量化。

        現(xiàn)有的加速方案都是基于大型GPU設(shè)備的。對于嵌入式和移動設(shè)備,加速的效果并不是很明顯。嵌入式和移動設(shè)備的硬件限制仍然是影響神經(jīng)網(wǎng)絡(luò)發(fā)展的一個重要的因素。

        針對上述問題,本文中主要對YOLO神經(jīng)網(wǎng)絡(luò)進行壓縮,測試深度神經(jīng)壓縮[8]中剪枝方式對于卷積神經(jīng)網(wǎng)絡(luò)的模型減少和推理加速效果。

        1 深度神經(jīng)壓縮

        深度神經(jīng)網(wǎng)絡(luò)中通常會有過多的參數(shù),存在大量的計算冗余的情況。這種情況將浪費設(shè)備的內(nèi)存和計算資源,加大了嵌入式設(shè)備、低功耗設(shè)備和移動設(shè)備的消耗[9-11]。

        深度神經(jīng)壓縮(Deep Compression)存在四種方式,參數(shù)共享方法、網(wǎng)絡(luò)刪減方法、暗知識方法和矩陣分解方法。

        參數(shù)共享的主要思路是多個參數(shù)共享一個值。通常實現(xiàn)的方法可以有很多選擇。例如Vanhoucke和Hwang等人使用定點方法江都參數(shù)精度,從而是值相近的參數(shù)共享一個值。Chen等人提出一種基于哈希算法的方法,將參數(shù)映射到相應(yīng)的哈希表上,實現(xiàn)參數(shù)共享。Gong等人使用K-means聚類方法將錢全部的參數(shù)進行聚類,每簇參數(shù)共享參數(shù)的中心值。

        網(wǎng)絡(luò)刪減用來降低網(wǎng)絡(luò)復(fù)雜度,防止過擬合。Han等人針對模型的訓(xùn)練效果,然后在基于參數(shù)共享和哈夫曼編碼進一步對網(wǎng)絡(luò)壓縮。

        在基于暗知識的方法中,Sau等人基于老師-學(xué)生學(xué)習(xí)框架對網(wǎng)絡(luò)進行壓縮。

        基于矩陣分解理論,Sainath、Denil等人采用低秩分解對神經(jīng)網(wǎng)絡(luò)不同曾的參數(shù)進行壓縮。Denton等人在神經(jīng)網(wǎng)絡(luò)使用矩陣分解的方法加速了卷積層的計算過程,減少了全連接層的網(wǎng)絡(luò)參數(shù),對于神經(jīng)網(wǎng)絡(luò)進行壓縮。

        深度神經(jīng)壓縮主要表現(xiàn)在三個部分:存儲、訓(xùn)練復(fù)雜度和推理復(fù)雜度。以上介紹的方法中,都有各自的優(yōu)點和不足。參數(shù)共享方法、網(wǎng)絡(luò)刪減方法、暗知識方法和矩陣分解方法都可以有效的降低模型的存儲復(fù)雜度,但是在訓(xùn)練復(fù)雜度和推理復(fù)雜度上沒有重要影響。暗知識方法雖然在三個方面都有比較好的表現(xiàn),但是在準(zhǔn)確率方面,相較于其他三種方法,會有較大的變化。

        2 YOLO

        YOLO屬于CNN,由卷積層、池化層和全連接層組成。與CNN不同的是,YOLO的輸出層不再是max函數(shù),而是張量(Tensor)。

        YOLO的訓(xùn)練和推理過程和其他CNN存在不同之處[12],例如 R-CNN、Fast R-CNN和 Faster R-CNN 三種網(wǎng)絡(luò)。RCC、Fast R-CNN采用模塊分離的方式進行推理過程。在檢測目標(biāo)的過程中,兩種網(wǎng)絡(luò)需要將待檢測的目標(biāo)區(qū)域進行預(yù)提取,再將包含目標(biāo)的區(qū)域進行卷積/池化操作提取特征,最后進行檢測行為。在Faster R-CNN中,使用 RPN(Region Proposal Network)代替R-CNN/Fast R-CNN中的選擇搜索模塊,將RPN集成到Fast R-CNN模塊中,得到一個統(tǒng)一的檢測網(wǎng)絡(luò)。但是在模型的訓(xùn)練過程中,需要反復(fù)訓(xùn)練RPN網(wǎng)絡(luò)和Fast R-CNN網(wǎng)絡(luò)。上述三種網(wǎng)絡(luò)最大的特點就是在推理的過程中,需要將待檢測的目標(biāo)區(qū)域進行預(yù)讀取。預(yù)讀取會耗費大量的磁盤(內(nèi)存)空間,會對一些嵌入式設(shè)備、低功耗設(shè)備和移動設(shè)備造成壓力。YOLO在設(shè)計的過程中就針對的進行了改進。

        3 基于深度神經(jīng)壓縮的YOLO加速

        原始的YOLO模型在完成訓(xùn)練后,模型大小達到200M,對于嵌入式設(shè)備和移動設(shè)備而言。200M的模型進行內(nèi)存預(yù)讀,會對設(shè)備的性能造成較大的影響,所以論文主要從深度神經(jīng)壓縮理論入手,對于YOLO進行修改,達到對于模型進行體積壓縮,改善其在嵌入式設(shè)備和移動設(shè)備上的表現(xiàn)[15]。針對YOLO進行深度神經(jīng)壓縮,主要是以下步驟:

        (1)權(quán)值修剪

        (2)權(quán)值共享和量化

        流程如圖1所示。

        圖1 壓縮框架圖

        3. 1 權(quán)值修剪

        權(quán)值修剪[16]主要目的是保存YOLO中重要的鏈接來達到降低存儲數(shù)量和計算復(fù)雜度的目的。傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,在神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前,神經(jīng)網(wǎng)絡(luò)的框架結(jié)構(gòu)就已經(jīng)被固定了。用戶只需要進行數(shù)據(jù)的輸入,就可以在迭代訓(xùn)練后獲得需要的權(quán)重。但是這種固定框架結(jié)構(gòu)的方式,導(dǎo)致不能在訓(xùn)練的過程中,隨時對于神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)進行優(yōu)化。因此,常規(guī)訓(xùn)練出的模型文件大小都不適合于部署在嵌入式設(shè)備或者移動設(shè)備上。YOLO常規(guī)訓(xùn)練后的模型大小達到200M,對于嵌入式設(shè)備,將模型預(yù)讀進內(nèi)存中,提供給推理過程使用,將會消耗設(shè)備的所有內(nèi)存。所以,利用深度神經(jīng)壓縮的剪枝思路,對于YOLO模型進行壓縮,是提高YOLO在各種設(shè)備上通用性的一個方式。剪枝過程分為四個步驟;

        (1)通過訓(xùn)練找到權(quán)重小于閾值的神經(jīng)網(wǎng)絡(luò)鏈接;

        (2)刪除權(quán)重小于閾值的神經(jīng)網(wǎng)絡(luò)鏈接;

        (3)重新對于神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練;

        (4)將修剪后的以 CSR(Compressed Sparse Row)方式存儲。

        在訓(xùn)練的過程中使用公式:

        對權(quán)重進行計算,使一部分權(quán)重趨向于0,然后將小于閾值的鏈接剪枝。使用公式的目的是能夠減少在訓(xùn)練剪枝過程中的過擬合現(xiàn)象,并且可以保持較高的精度。相對的,通常訓(xùn)練過程中的Droupout概率也需要進行調(diào)整。在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練的過程中,Droupout主要是用來防止訓(xùn)練出的模型數(shù)據(jù)有過擬合的現(xiàn)象。因為在上述的剪枝過程中,使用了L2正則進行過擬合的預(yù)防。所以,在重訓(xùn)練的過程中,按照剪枝后的神經(jīng)網(wǎng)絡(luò)數(shù)量進行對Droupout概率進行等比例的調(diào)整。初步剪枝之后將要進行對于本次鏈接層的一個重訓(xùn)練。每一次的剪枝過后的重新訓(xùn)練都是一個原子操作。重新訓(xùn)練的目的是為了神經(jīng)網(wǎng)絡(luò)模型有更好的精確度,以及更小的過擬合的可能。

        剪枝之后的權(quán)重按照CSR方式進行存儲,CSR方式可以減少存儲元素位置index帶來的額外存儲開銷。按CSR方式轉(zhuǎn)換完成的稀疏矩陣,在存儲的過程中使用按位存儲的方式,存儲過程中,每一個非零元素都會進行標(biāo)記。如果使用3bit形式進行存儲,每一個非零元素和另外一個非零元素之間的距離在標(biāo)記后將會被檢查。如果一個非零元素和另外一個非零元素的超過8,則這個第八位的位置將會被填充一個0,這樣防止在使用按位存儲的時候出現(xiàn)數(shù)據(jù)的溢出。

        3. 2 權(quán)值共享和量化

        為了進一步的壓縮剪枝之后的YOLO,第二部將使用權(quán)值共享的方法[17],對于剪枝結(jié)束的權(quán)值,進行一個K-means聚類。

        式(2)中,W代表權(quán)值C代表聚類。

        聚類之后的結(jié)果代表著一類權(quán)值的聚類執(zhí)行,這個質(zhì)心的值將作為共享的權(quán)值進行存儲。最后存儲的結(jié)果是一個碼書和一個索引表。

        K-means算法中,聚類的核心是聚類中心的選擇和初始化。常規(guī)的初始化方式有三種:

        (1)隨機初始化

        (2)密度分布初始化

        (3)線性初始化

        由于在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練中,權(quán)值越大,對神經(jīng)網(wǎng)絡(luò)精確度的影響越高,所以使用將權(quán)重排序后進行線性劃分的線性初始化較為合適。

        本層的權(quán)重完成剪枝和共享之后,將執(zhí)行神經(jīng)網(wǎng)絡(luò)層與層之間的前向傳播和反向傳播。前向傳播時需要將每個權(quán)值用其經(jīng)過聚類的中心進行代替,反向傳播時,計算每個聚類中權(quán)值的梯度,用來進行聚類中心的更新和迭代。

        4 實驗結(jié)果與分析

        實驗結(jié)果分析算法在經(jīng)過深度神經(jīng)壓縮之后壓縮率、準(zhǔn)確率和執(zhí)行速度。運行YOLO模型的設(shè)備為NVIDIA TX2嵌入式開發(fā)板。YOLO的訓(xùn)練數(shù)據(jù)集為基于VoC2007和ImageNet的常見數(shù)據(jù)集。

        4. 1 壓縮率

        表1中展示了YOLO未壓縮和已壓縮之后的大小對比。

        表1 YOLO壓縮體積對比

        由表1可以看出,經(jīng)過深度神經(jīng)壓縮后的模型只有原模型的3%,減少了嵌入式設(shè)備和移動設(shè)備在預(yù)讀模型時的內(nèi)存消耗,提高了模型預(yù)讀的速度。

        4. 2 準(zhǔn)確率

        表2 僅剪枝YOLO模型大小和準(zhǔn)確率

        表3 僅共享權(quán)重

        表4 剪枝+共享權(quán)重

        從表2、3、4可以得到,準(zhǔn)確率隨著模型體積的下降而下降。僅剪枝能達到的最低壓縮率為4.5%。僅共享權(quán)重最低壓縮率可以達到6%。剪枝和共享權(quán)重可以達到最低的壓縮率3%。

        4. 3 運行速度

        表5 壓縮YOLO在嵌入式設(shè)備上運行時間

        表5可以看出壓縮網(wǎng)絡(luò)對比原始網(wǎng)絡(luò),在嵌入式GPU設(shè)備上可以獲得5倍加速。

        5 結(jié)語

        本方案基于深度升級壓縮理論,提出了YOLO算法的改進方案。對于YOLO算法進行剪枝、共享權(quán)重、霍夫曼編碼等步驟。并且將壓縮后的YOLO算法部署到NVIDIA TX2上,進行目標(biāo)識別實驗。實驗結(jié)果表明,經(jīng)過優(yōu)化的YOLO可以在原體積3%的情況下穩(wěn)定運行,并且準(zhǔn)確率相較于原模型只有-2%的差距。并且在嵌入式設(shè)備上獲得原模型5倍的加速效果。但是該實驗只是單純的進行L2范式的權(quán)重衡量,沒有做到多情況的權(quán)重衡量。并且K-means只選擇了線性初始化的情況。后期實驗可以進行優(yōu)化,找到更好的剪枝方式和聚類方式[19-20]。

        猜你喜歡
        嵌入式深度設(shè)備
        諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
        深度理解一元一次方程
        深度觀察
        深度觀察
        深度觀察
        基于MPU6050簡單控制設(shè)備
        電子制作(2018年11期)2018-08-04 03:26:08
        搭建基于Qt的嵌入式開發(fā)平臺
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        500kV輸變電設(shè)備運行維護探討
        原來他們都是可穿戴設(shè)備
        消費者報道(2014年7期)2014-07-31 11:23:57
        无码国内精品久久人妻| 亚洲av一区二区网址| 中文字幕一区二三区麻豆| 草草影院ccyy国产日本欧美| 性色做爰片在线观看ww| 亚洲国产精品线路久久| 日本在线中文字幕一区二区| 美女被男人插得高潮的网站| 永久黄网站免费视频性色| 精品欧美乱子伦一区二区三区| 亚洲精品中文字幕尤物综合 | 国产产区一二三产区区别在线| 女人被做到高潮免费视频 | 巨大欧美黑人xxxxbbbb| 亚洲成人av一区二区麻豆蜜桃| 一区二区在线视频免费蜜桃| 欧美猛少妇色xxxxx猛交| 无码中文字幕加勒比一本二本 | 日本高清不卡二区| 日韩女同一区二区三区久久| 久久免费看黄a级毛片| 先锋影音av最新资源| 人妻少妇无码中文幕久久| 亚洲一区二区懂色av| 中国无码人妻丰满熟妇啪啪软件 | 亚洲av日韩av无码av| 一本色道久久综合狠狠躁中文| 日本免费一二三区在线| 欧美日韩国产码高清综合人成| 日韩AV有码无码一区二区三区| 国产精品成年人毛片毛片| 天天做天天添av国产亚洲| 亚洲精品国精品久久99热一| 如何看色黄视频中文字幕| 亚洲视频在线免费不卡| 亚洲精品乱码久久久久久蜜桃不卡 | 国产白袜脚足j棉袜在线观看| 国产欧美久久久另类精品| 日本一区中文字幕在线播放| 厨房人妻hd中文字幕| 免费无码av片在线观看网址|