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

        ?

        基于聯(lián)合動(dòng)態(tài)剪枝的深度神經(jīng)網(wǎng)絡(luò)壓縮算法

        2021-07-02 08:54:20張明明盧慶寧李文中
        計(jì)算機(jī)應(yīng)用 2021年6期
        關(guān)鍵詞:模型

        張明明,盧慶寧,李文中,宋 滸

        (1.國(guó)網(wǎng)江蘇省電力有限公司信息通信分公司,南京 210024;2.計(jì)算機(jī)軟件新技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室(南京大學(xué)),南京 210023)

        (?通信作者電子郵箱qnlu@smail.nju.edu.cn)

        0 引言

        近年來(lái)深度學(xué)習(xí)發(fā)展迅猛,其在圖像識(shí)別、語(yǔ)音識(shí)別、文本翻譯等多領(lǐng)域的應(yīng)用,在國(guó)內(nèi)外學(xué)術(shù)和工業(yè)界都獲得了廣泛的關(guān)注。然而深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)通常需要大量計(jì)算開(kāi)銷,其模型的復(fù)雜度、高額的存儲(chǔ)空間以及計(jì)算資源消耗導(dǎo)致其難以被應(yīng)用在計(jì)算資源、能源受限的移動(dòng)設(shè)備中。例如經(jīng)典的圖像分類網(wǎng)絡(luò)VGG16[1],參數(shù)數(shù)量多達(dá)1.3 億,占用存儲(chǔ)空間500 MB,需要進(jìn)行309 億次浮點(diǎn)運(yùn)算才能完成一次圖像識(shí)別任務(wù)。文獻(xiàn)[2]指出,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中存在很大程度的冗余,僅使用很少一部分權(quán)值就可以預(yù)測(cè)剩余的權(quán)值。因而,模型壓縮(Model Compression,MC)[3]在理論上存在可行性,在現(xiàn)實(shí)中也存在著必要性。

        模型壓縮的最終目的是降低模型的復(fù)雜度,減少模型的存儲(chǔ)空間,并加速模型的訓(xùn)練和推理。因而,其涉及到多方面的不同問(wèn)題,包括優(yōu)化算法、計(jì)算機(jī)架構(gòu)、數(shù)據(jù)壓縮、硬件設(shè)計(jì)等。模型壓縮的主要方法有低秩近似、網(wǎng)絡(luò)量化、知識(shí)蒸餾、緊湊網(wǎng)絡(luò)設(shè)計(jì),以及網(wǎng)絡(luò)剪枝[4-5]。

        作為模型壓縮的一個(gè)分支,神經(jīng)網(wǎng)絡(luò)剪枝技術(shù)通過(guò)移除不重要的分支,降低大型神經(jīng)網(wǎng)絡(luò)計(jì)算消耗,使得其可以在移動(dòng)設(shè)備上運(yùn)行。如圖1 所示,網(wǎng)絡(luò)剪枝采用某種衡量標(biāo)準(zhǔn),移除網(wǎng)絡(luò)中一部分權(quán)值,或者移除一部分權(quán)值間的連接。因而,如何衡量權(quán)重的重要性成為了算法的核心問(wèn)題。

        圖1 網(wǎng)絡(luò)剪枝示意Fig.1 Schematic diagram of network pruning

        較早的剪枝工作側(cè)重于權(quán)值,通過(guò)移除不重要的神經(jīng)元,并對(duì)網(wǎng)絡(luò)進(jìn)行再訓(xùn)練,微調(diào)至收斂。Han 等[6]設(shè)計(jì)了深度壓縮、結(jié)合剪枝、量化和哈夫曼編碼三種方法,在AlexNet上獲得了35 倍的壓縮比。國(guó)內(nèi)針對(duì)權(quán)值剪枝也有廣泛的研究,鞏凱強(qiáng)等[7]提出了基于統(tǒng)計(jì)量的網(wǎng)絡(luò)剪枝結(jié)合張量分解的神經(jīng)網(wǎng)絡(luò)壓縮方法,選擇均值和方差作為評(píng)判權(quán)值貢獻(xiàn)度的依據(jù),有利于模型在資源受限的嵌入式設(shè)備中的部署。王忠鋒等[8]則以梯度作為評(píng)判權(quán)值重要性的依據(jù),移除模型中小于閾值的梯度對(duì)應(yīng)權(quán)值,并且通過(guò)再訓(xùn)練恢復(fù)模型容量的損失。

        然而,針對(duì)權(quán)值的剪枝會(huì)導(dǎo)致網(wǎng)絡(luò)中出現(xiàn)大量不規(guī)則的零,卷積核成為稀疏張量,模型趨向于非結(jié)構(gòu)化。針對(duì)非結(jié)構(gòu)化剪枝的局限性,Li 等[9]設(shè)計(jì)了通道剪枝算法。作為一種結(jié)構(gòu)化的剪枝算法,通道剪枝設(shè)計(jì)某種標(biāo)準(zhǔn)衡量卷積核的重要性,并完整地剪除不重要的卷積核及其對(duì)應(yīng)的特征圖,從而不會(huì)出現(xiàn)大部分權(quán)值被剪除而留下稀疏張量的情況。Liu 等[10]設(shè)計(jì)了網(wǎng)絡(luò)瘦身,著眼于批標(biāo)準(zhǔn)化層中的縮放因子,在訓(xùn)練過(guò)程中對(duì)其施加正則約束,使得模型在訓(xùn)練中朝向通道結(jié)構(gòu)稀疏的情況不斷調(diào)整。

        以上算法可以統(tǒng)稱為靜態(tài)剪枝算法,其相同點(diǎn)在于:被剪枝的參數(shù)從模型中永久移除,后續(xù)不再參與推理和訓(xùn)練。盡管網(wǎng)絡(luò)中大部分參數(shù)是多余的,靜態(tài)剪枝算法仍然會(huì)永久性地移除一部分關(guān)鍵性參數(shù),無(wú)論采取何種評(píng)判標(biāo)準(zhǔn)都難以避免誤剪枝,這樣必然導(dǎo)致網(wǎng)絡(luò)容量的損失。相較于靜態(tài)剪枝算法,動(dòng)態(tài)剪枝的目的是保留被剪枝部分的能力,避免永久性的剪枝導(dǎo)致的模型容量降低。He 等[11]提出的軟通道剪枝是較為典型的動(dòng)態(tài)剪枝算法,允許被剪除的卷積核參與之后的迭代更新。Guo 等[12]提出的動(dòng)態(tài)外科手術(shù),采用了剪枝與嫁接相結(jié)合算法,將剪枝工作融合到訓(xùn)練的過(guò)程中,利用嫁接修復(fù)誤剪枝的神經(jīng)元連接。

        另一類算法統(tǒng)稱為動(dòng)態(tài)剪枝,其特點(diǎn)為不永久性地移除任何參數(shù),轉(zhuǎn)而根據(jù)輸入圖像的特征,動(dòng)態(tài)地選擇網(wǎng)絡(luò)的一部分參與運(yùn)算,以降低模型的復(fù)雜度。類比于神經(jīng)網(wǎng)絡(luò)的一種常用的正則化算法Dropout[13],其基本思想是隨機(jī)丟棄部分神經(jīng)元,降低特征提取的共同作用影響,用于避免過(guò)擬合,提高泛化能力。動(dòng)態(tài)剪枝不同在設(shè)計(jì)某種標(biāo)準(zhǔn)用來(lái)衡量輸入圖像與卷積核的關(guān)系,而非簡(jiǎn)單地隨機(jī)丟棄。Gao 等[14]指出,對(duì)于特定的輸入圖像,能夠被激活的卷積核是存在并有限的。由Hua等[15]提出的通道門(mén)控網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)構(gòu)建通道門(mén)控模塊,設(shè)定可自主學(xué)習(xí)的門(mén)控函數(shù),提取輸入圖像特征并選擇對(duì)應(yīng)的通道參與卷積運(yùn)算。Gao 等[14]提出了特征加速壓縮,利用預(yù)測(cè)網(wǎng)絡(luò)控制分類網(wǎng)絡(luò)的結(jié)構(gòu),并和分類網(wǎng)絡(luò)一同訓(xùn)練、學(xué)習(xí)。然而,動(dòng)態(tài)剪枝算法的獨(dú)特之處——?jiǎng)討B(tài)選擇,也恰恰制約了其壓縮網(wǎng)絡(luò)的能力。由于動(dòng)態(tài)剪枝算法根據(jù)輸入圖像的特征選擇被激活的卷積核,考慮到輸入圖像是未知的,被激活的卷積核也是未知的,卷積核很難被永久性地移除,這也導(dǎo)致了網(wǎng)絡(luò)壓縮比明顯小于靜態(tài)剪枝算法。

        基于傳統(tǒng)的靜態(tài)剪枝和動(dòng)態(tài)剪枝存在的一系列問(wèn)題,本文提出了一種聯(lián)合動(dòng)態(tài)剪枝算法,可以綜合分析卷積核與輸入圖像的特征。本文的主要工作如下:

        1)提出卷積核動(dòng)態(tài)剪枝算法,基于卷積核的特征,永久性地剪除深度神經(jīng)網(wǎng)絡(luò)中的一部分參數(shù),同時(shí)盡可能地保持模型容量。

        2)提出通道動(dòng)態(tài)剪枝算法,基于輸入圖像的特征,在不移除深度神經(jīng)網(wǎng)絡(luò)參數(shù)的前提下,選擇網(wǎng)絡(luò)的一部分參數(shù)參與運(yùn)算,以降低復(fù)雜度。

        3)將卷積核動(dòng)態(tài)剪枝與通道動(dòng)態(tài)壓縮有機(jī)結(jié)合,綜合卷積核和輸入圖像的特征,保持模型容量和復(fù)雜度的平衡。

        1 聯(lián)合動(dòng)態(tài)剪枝算法

        1.1 網(wǎng)絡(luò)結(jié)構(gòu)定義

        本文工作主要基于深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)進(jìn)行。CNN 被廣泛運(yùn)用于圖像分類、目標(biāo)檢測(cè)、異常檢測(cè)等方面,對(duì)于圖像數(shù)據(jù)具有很高的泛用性。CNN可以被參數(shù)化表示為:

        其中:W(i)代表第i個(gè)卷積層的權(quán)值張量;Ni代表第i層的輸入通道數(shù)量,Ni+1代表第i層的輸出通道數(shù)量,也就相當(dāng)于第i層的卷積核數(shù)量、第i+1 層的輸入通道數(shù)量;K×K代表卷積核大??;L代表網(wǎng)絡(luò)卷積層的總數(shù)。第i個(gè)卷積層的卷積運(yùn)算的過(guò)程,也就是Ni+1個(gè)三維的卷積核作用于輸入特征圖,每一個(gè)卷積核生成一個(gè)對(duì)應(yīng)的特征圖,將其轉(zhuǎn)化為輸出特征圖,并作為第i+1個(gè)卷積層的輸入。

        因而在剪枝算法中,若卷積核Fi,j被移除,對(duì)應(yīng)的特征圖也會(huì)被移除;若卷積核Fi,j被置零,對(duì)應(yīng)的特征圖也會(huì)被置零。假設(shè)第i個(gè)卷積層的卷積核剪枝率為Pi,由于該層卷積核總數(shù)為Ni+1,則有Ni+1Pi個(gè)卷積核被移除。該層的卷積核個(gè)數(shù)從Ni+1減少為Ni+1(1-Pi),進(jìn)而輸出特征圖的大小也縮減為Ni+1(1-Pi)×Hi+1×Wi+1,第i+1 層的輸入通道數(shù)也會(huì)縮減為Ni+1(1-Pi)。也就是說(shuō),第i層和第i+1 層的計(jì)算開(kāi)銷都會(huì)減小為原先的1-Pi倍。

        值得注意的是,若卷積核被永久性剪除,那么特征圖的大小也會(huì)永久性地改變;但如果只是將卷積核置零,那么對(duì)應(yīng)的特征圖也被置零,然而輸出特征圖的大小并沒(méi)有變化。以圖2 為例來(lái)說(shuō)明。如果永久性移除淺色的卷積核,那么對(duì)應(yīng)的淺色特征圖也被移除,輸出通道數(shù)量減少,進(jìn)而使得下一卷積層每一個(gè)卷積核的通道數(shù)也減少。如果將深色的卷積核置零,那么對(duì)應(yīng)的深色特征圖也被置零;然而,由于深色卷積核并未被剪除,網(wǎng)絡(luò)的結(jié)構(gòu)沒(méi)有發(fā)生變化,因而下一卷積層的卷積核不受到影響。也就是說(shuō),將卷積核置零可以在不改變網(wǎng)絡(luò)結(jié)構(gòu)的情況下影響到網(wǎng)絡(luò)的輸出,這也就是卷積核動(dòng)態(tài)剪枝算法的核心思想。

        圖2 移除和置零卷積核對(duì)輸出特征圖的影響Fig.2 Influence of removing and zeroizing convolution kernels on output feature map

        以上介紹了卷積神經(jīng)網(wǎng)絡(luò)中典型的卷積層定義,然而實(shí)際訓(xùn)練和推理中,一般在卷積層之后緊跟批標(biāo)準(zhǔn)化(Batch Normalization,BN)[16]和激活操作,以抑制梯度消失、使神經(jīng)網(wǎng)絡(luò)更好地?cái)M合非線性數(shù)據(jù),并加快訓(xùn)練速度。一個(gè)包含BN和線性整流函數(shù)(Rectified Linear Unit,ReLU)[17]激活操作的卷積層完整定義如下:

        其中:Xi代表第i個(gè)卷積層的輸入特征圖;norm代表標(biāo)準(zhǔn)化操作;γi和βi分別代表可訓(xùn)練的參數(shù)縮放因子scale和偏置offset。convi(Xi,W(i))代表第i層的卷積操作,利用權(quán)值張量W(i)作用于輸入特征圖Xi上。這里的“·”和“+”運(yùn)算均基于張量元素,(z)+=max{z,0}代表ReLU 函數(shù)激活操作。聯(lián)合動(dòng)態(tài)剪枝算法主要考慮卷積運(yùn)算的優(yōu)化,也就是convi(Xi,W(i))的相關(guān)操作,這也是卷積神經(jīng)網(wǎng)絡(luò)中運(yùn)算量最大、復(fù)雜度最高的部分。

        1.2 算法框架

        考慮到傳統(tǒng)的靜態(tài)剪枝算法會(huì)造成模型容量不可逆的降低,而現(xiàn)有的動(dòng)態(tài)剪枝算法盡管保持了模型容量,卻沒(méi)有較大幅度地降低模型的復(fù)雜度。模型的容量和復(fù)雜度,是目前研究中普遍遇到的一個(gè)兩難問(wèn)題。針對(duì)這個(gè)問(wèn)題,本文提出了聯(lián)合動(dòng)態(tài)剪枝算法。聯(lián)合動(dòng)態(tài)剪枝算法分為卷積核動(dòng)態(tài)剪枝和通道動(dòng)態(tài)壓縮兩個(gè)部分,但二者并非互相割裂,而是相輔相成,共同完成網(wǎng)絡(luò)剪枝的工作。

        首先,針對(duì)卷積核自身的特征,設(shè)計(jì)卷積核動(dòng)態(tài)剪枝的算法,用于永久性剪除部分卷積核,以提升壓縮比。剪枝標(biāo)準(zhǔn)為L(zhǎng)1 范數(shù),但不直接把這些卷積核從網(wǎng)絡(luò)中刪除,而是將對(duì)應(yīng)通道置零后繼續(xù)訓(xùn)練學(xué)習(xí),允許置零的卷積核在反向傳播中更新,直到收斂為止。針對(duì)輸入圖像特征,設(shè)計(jì)通道動(dòng)態(tài)壓縮的算法,將輸入圖像采樣后經(jīng)過(guò)線性變化預(yù)測(cè)通道的重要性,然后將對(duì)應(yīng)通道的結(jié)果置零,也就相當(dāng)于在沒(méi)有改變網(wǎng)絡(luò)結(jié)構(gòu)的情況下,跳過(guò)了一部分的卷積運(yùn)算。

        以圖3 為例來(lái)說(shuō)明聯(lián)合動(dòng)態(tài)剪枝算法的流程。定義卷積核動(dòng)態(tài)剪枝率為β,通道動(dòng)態(tài)壓縮比為α。為了平衡準(zhǔn)確率和模型復(fù)雜度,規(guī)定2β=α+1,也就是將完整的網(wǎng)絡(luò)壓縮比分為兩個(gè)步長(zhǎng),利用卷積核動(dòng)態(tài)剪枝的算法壓縮網(wǎng)絡(luò)至β,利用通道動(dòng)態(tài)壓縮的算法壓縮網(wǎng)絡(luò)至α,綜合獲得需要置零的所有通道。值得注意的是,這兩步是同時(shí)在訓(xùn)練的過(guò)程中進(jìn)行的,實(shí)際上并沒(méi)有先后順序之分。圖3 中淺色的卷積核被置零,并允許在后續(xù)訓(xùn)練中更新;深色部分并非原先網(wǎng)絡(luò)的參數(shù),而是輸入特征圖經(jīng)過(guò)預(yù)測(cè)網(wǎng)絡(luò)處理后獲得的通道重要性預(yù)測(cè)結(jié)果,這個(gè)結(jié)果被乘到卷積運(yùn)算的結(jié)果中。

        圖3 聯(lián)合動(dòng)態(tài)剪枝算法框架Fig.3 Framework of combined dynamic pruning algorithm

        卷積核動(dòng)態(tài)剪枝和通道動(dòng)態(tài)壓縮并非相互獨(dú)立,而是有機(jī)融合;并非一前一后,而是同步進(jìn)行。首先,卷積核動(dòng)態(tài)剪枝可以基于模型參數(shù)選擇一部分重要性較小的卷積核置零。但是,并不直接將置零的卷積核傳遞到通道動(dòng)態(tài)壓縮中去,否則就等同于先卷積核動(dòng)態(tài)剪枝,后通道動(dòng)態(tài)壓縮,這樣會(huì)導(dǎo)致兩種方法存在先后次序,后者難以影響到前者。聯(lián)合動(dòng)態(tài)剪枝算法選擇讓兩步剪枝操作同步進(jìn)行,并且在反向傳播的時(shí)候同步更新,實(shí)際上每一個(gè)剪枝操作誤剪枝的信息都會(huì)被反饋到另一個(gè)操作中去。

        不難作出如下的推斷:卷積核動(dòng)態(tài)剪枝置零的卷積核(通道),在通道動(dòng)態(tài)壓縮之中也被動(dòng)態(tài)剪除,如圖3 中所展示的,淺色通道是深色通道的子集。通道動(dòng)態(tài)壓縮基于輸入圖像作預(yù)測(cè)處理,不考慮卷積核動(dòng)態(tài)剪枝的結(jié)果,因而直觀感受上可能出現(xiàn)卷積核動(dòng)態(tài)剪枝置零的卷積核不包含在通道動(dòng)態(tài)剪枝之中的情況。但是,在不斷訓(xùn)練收斂的過(guò)程中,卷積核動(dòng)態(tài)剪枝的結(jié)果會(huì)趨近于一部分特定的卷積核,而通道動(dòng)態(tài)壓縮選擇參與運(yùn)算的卷積核,必定不可能收斂到這些被置零的卷積核,否則通道動(dòng)態(tài)壓縮的結(jié)果一定是次優(yōu)的。這樣,模型最終訓(xùn)練完畢后,卷積核動(dòng)態(tài)剪枝的結(jié)果收斂成為通道動(dòng)態(tài)壓縮的一個(gè)子集,可以最大限度地平衡模型的準(zhǔn)確率和復(fù)雜度。

        1.3 卷積核動(dòng)態(tài)剪枝

        卷積核動(dòng)態(tài)剪枝算法的設(shè)計(jì)目的,是從模型中永久性地移除一些重要性較低的卷積核,同時(shí)最大化地保持模型的容量。對(duì)于同一卷積層的每一個(gè)卷積核,設(shè)計(jì)特定的標(biāo)準(zhǔn)sj衡量其重要性。本文選擇了L1范數(shù),也即卷積核張量中權(quán)值的絕對(duì)值之和∑|Fi,j|。從直觀的層面來(lái)看,權(quán)值較小的卷積核,對(duì)應(yīng)的輸出特征圖數(shù)值也較小,也即影響力不如同一層其他的特征圖。實(shí)驗(yàn)結(jié)果也表明,剪除絕對(duì)值較小的卷積核效果優(yōu)于隨機(jī)剪除和剪除絕對(duì)值較大的卷積核。卷積核重要性的標(biāo)準(zhǔn)也有不同的選擇,如L2 范數(shù),也即卷積核張量中權(quán)值的平方之和再開(kāi)平方。然而此方法的動(dòng)態(tài)判斷核心在于迭代更新的過(guò)程,而非單次迭代中復(fù)雜的衡量標(biāo)準(zhǔn),并且復(fù)雜的衡量標(biāo)準(zhǔn)并沒(méi)有帶來(lái)表現(xiàn)上的提升,因而最終仍然選擇了L1范數(shù)作為評(píng)判標(biāo)準(zhǔn)。

        考慮到永久性的剪枝會(huì)導(dǎo)致模型容量不可逆的降低,僅在最后一步永久性剪除卷積核,并且盡可能剪除少的卷積核,以保持模型容量。將卷積核的剪枝工作融入網(wǎng)絡(luò)訓(xùn)練的過(guò)程中,對(duì)于每次迭代中重要性較小的卷積核,并不永久性地剪除它們,而是將其置零,并保持網(wǎng)絡(luò)結(jié)構(gòu)的不變。被剪除的卷積核對(duì)網(wǎng)絡(luò)訓(xùn)練產(chǎn)生影響的同時(shí),允許這些卷積核在反向傳播中被更新。這樣,如果存在被誤剪枝的卷積核,這些卷積核將會(huì)在反向傳播中被更新為較大的權(quán)值,從而在后續(xù)的評(píng)判中獲得較高的重要性,不再被誤剪枝。在不斷迭代訓(xùn)練的過(guò)程中,偶然誤剪枝的卷積核被恢復(fù),使得每次被剪除的趨向于收斂到Ni+1(1-β)個(gè)固定的卷積核。最終,永久性剪除這些不重要的卷積核,這樣便完成了卷積核動(dòng)態(tài)剪枝的工作。在先前的分析中提到,卷積核動(dòng)態(tài)剪枝直接影響到網(wǎng)絡(luò)中的部分卷積核,但是并不將結(jié)果直接地傳遞給通道動(dòng)態(tài)壓縮,而是讓后者在訓(xùn)練中不斷自主學(xué)習(xí),同時(shí)其本身也不斷更新置零的卷積核,兩種方法共同完成剪枝的工作。具體算法如算法1所示。

        算法1 卷積核動(dòng)態(tài)剪枝。

        輸入 訓(xùn)練數(shù)據(jù)X,卷積核動(dòng)態(tài)剪枝率β,模型,1 ≤i≤L;

        輸出 卷積核動(dòng)態(tài)剪枝后的模型W*。

        1.4 通道動(dòng)態(tài)壓縮

        通道動(dòng)態(tài)壓縮,即在不永久性移除模型中的任何參數(shù)的情況下,通過(guò)動(dòng)態(tài)選擇模型的一部分參與運(yùn)算,從而加速訓(xùn)練和推理的過(guò)程。因而最關(guān)鍵的是利用某種方式,針對(duì)特定的輸入圖像,動(dòng)態(tài)選擇特定的神經(jīng)元參與運(yùn)算??紤]到結(jié)構(gòu)化剪枝相較于非結(jié)構(gòu)化剪枝的優(yōu)勢(shì),仍然以通道為單位進(jìn)行剪枝。具體方法是構(gòu)建一個(gè)較小的線性變化神經(jīng)網(wǎng)絡(luò),稱之為預(yù)測(cè)網(wǎng)絡(luò),用于建立輸入特征圖與卷積核的關(guān)系,預(yù)測(cè)并選擇部分的通道參與卷積運(yùn)算,以保持模型的容量。

        首先需要提取輸入圖像的特征。如果將分類網(wǎng)絡(luò)的輸入圖像完整地作為預(yù)測(cè)網(wǎng)絡(luò)的輸入,那么整個(gè)模型的復(fù)雜度將會(huì)極大提升,甚至抵消了剪枝所帶來(lái)的收益。因而,必須盡可能地將輸入圖像壓縮到可接受的大小,同時(shí)保留其特征,用于預(yù)測(cè)網(wǎng)絡(luò)的輸入。這里選擇了下采樣方法,也就是縮小圖像的尺寸。經(jīng)過(guò)實(shí)驗(yàn),可以發(fā)現(xiàn)全局平均池化(Global Average Pooling,GAP)[18]的效果最好。GAP 是一種簡(jiǎn)單而實(shí)用的正則化方法,也就是取二維圖像所有元素的平均值,近年來(lái)也有研究認(rèn)為其擁有較好的提取圖像特征的能力。將其應(yīng)用到三維的特征圖中,有下采樣函數(shù):

        然后,需要建立下采樣后的輸入圖像與卷積核之間的關(guān)系。和卷積核動(dòng)態(tài)剪枝相反,這一步不需要顯式地考慮卷積核本身的參數(shù),而是構(gòu)建一個(gè)線性變化神經(jīng)網(wǎng)絡(luò),稱之為預(yù)測(cè)網(wǎng)絡(luò),利用其去預(yù)測(cè)輸入圖像與卷積核的關(guān)系。預(yù)測(cè)網(wǎng)絡(luò)的值被附加到分類網(wǎng)絡(luò)的輸出中,并隨著反向傳播自動(dòng)更新。線性變化的函數(shù)如下:

        線性變化預(yù)測(cè)網(wǎng)絡(luò),也就是一個(gè)額外的全連接層,擁有權(quán)重φi和偏置ρi兩個(gè)可學(xué)習(xí)的參數(shù)。預(yù)測(cè)網(wǎng)絡(luò)的輸入為ss(Xi),也就是Ni個(gè)元素的向量,每個(gè)元素代表著當(dāng)前卷積層輸入圖像的一個(gè)通道的特征。經(jīng)過(guò)線性變化,其輸出為Ni+1個(gè)元素的向量,每個(gè)元素代表著當(dāng)前卷積層每個(gè)卷積核針對(duì)該輸入圖像的重要性。較大的元素代表對(duì)應(yīng)通道被輸入圖像激活的程度越高,也就越為重要。

        獲得了每個(gè)卷積核的重要性,之后需要基于通道動(dòng)態(tài)壓縮比α,在原先完整的輸出特征圖中,消除一部分通道的輸出。基于一個(gè)簡(jiǎn)單的k-勝者通吃(k-winners-take-all)操作,也即選擇向量中k個(gè)最大元素,將其余元素置零。這樣,重要性較低的Ni+1(1-α)個(gè)通道將不參與卷積運(yùn)算,也就完成了剪枝的操作。

        由于預(yù)測(cè)網(wǎng)絡(luò)需要和分類網(wǎng)絡(luò)一同更新,因而預(yù)測(cè)網(wǎng)絡(luò)的結(jié)果也需要被附加到分類網(wǎng)絡(luò)的輸出中去?;谥鞍珺N 和ReLU 操作的卷積層完整定義,將BN 層的γ參數(shù)替換成為預(yù)測(cè)網(wǎng)絡(luò)的輸出,也就是gi(Xi):

        至此,便完成了動(dòng)態(tài)通道壓縮的工作?;仡櫷暾乃惴鞒?,最重要的是預(yù)測(cè)網(wǎng)絡(luò)的構(gòu)建。如果設(shè)計(jì)某種算法用來(lái)衡量輸入圖像與卷積核之間的激活關(guān)系,利用統(tǒng)計(jì)特征去構(gòu)建二者之間的函數(shù)變換,那么無(wú)疑是非常困難的。然而,將預(yù)測(cè)網(wǎng)絡(luò)的結(jié)果融合到分類網(wǎng)絡(luò)中去,利用神經(jīng)網(wǎng)絡(luò)的反向傳播自發(fā)學(xué)習(xí)其中的誤差,并不斷優(yōu)化預(yù)測(cè)的結(jié)果,既提高了預(yù)測(cè)的準(zhǔn)確率,又避免了復(fù)雜且有可能過(guò)度的人工干涉,可以說(shuō)是一舉兩得。具體算法如算法2所示。

        算法2 通道動(dòng)態(tài)壓縮。

        輸入 訓(xùn)練數(shù)據(jù)X,通道動(dòng)態(tài)壓縮比α,模型,1 ≤i≤L;

        輸出 通道動(dòng)態(tài)壓縮后的模型W*。

        2 實(shí)驗(yàn)與結(jié)果分析

        本文所使用的實(shí)驗(yàn)設(shè)備基于Windows 10 系統(tǒng),采用處理器Intel Core i7-9750H,顯卡NVIDIA GeForce GTX 1660Ti,在虛擬環(huán)境PyCharm 2019.2.4(Community Edition),torch version 1.0.0,CUDA version 10.0下進(jìn)行實(shí)驗(yàn)。

        實(shí)驗(yàn)的數(shù)據(jù)集為經(jīng)典的圖像識(shí)別數(shù)據(jù)集CIFAR-10 與CIFAR-100。CIFAR-10 數(shù)據(jù)集由Krizhevsky 等[19]收集完成,包含60 000張彩色圖像。所有圖像都是32×32大小,分為10種類別,其中5/6的圖像被作為訓(xùn)練集使用。CIFAR-100 數(shù)據(jù)集同樣包含60 000 張圖像,所不同的是其被分為100 種類別,每種類別的圖像有600 張。100 種類別實(shí)際上被劃分為20 個(gè)超類別,每個(gè)超類別包含5 種子類別。本實(shí)驗(yàn)僅關(guān)注子類別的正確率。

        CIFAR 數(shù)據(jù)集包含現(xiàn)實(shí)生活中的真實(shí)物體,圖像格式為3通道RGB 圖像,物體的大小比例、特征、背景各不相同,具有一定的復(fù)雜性,相較于MNIST 這種簡(jiǎn)單的單通道、僅包含手寫(xiě)數(shù)字的數(shù)據(jù)集,更有現(xiàn)實(shí)意義。與更加復(fù)雜的數(shù)據(jù)集如ILSVRC2012 相比,CIFAR 數(shù)據(jù)集規(guī)模較小,不受限于機(jī)器性能,方便訓(xùn)練。

        2.1 訓(xùn)練方法

        選用了軟通道剪枝(Soft Filter Pruning,SFP)和特征加速壓縮(Feature Boosting&Suppression,F(xiàn)BS)兩個(gè)已有的先進(jìn)網(wǎng)絡(luò)剪枝算法,與本文提出的聯(lián)合動(dòng)態(tài)剪枝(Combined Dynamic Pruning,CDP)算法相比,在準(zhǔn)確率、參數(shù)壓縮比等各方面作出客觀的比較,以驗(yàn)證聯(lián)合動(dòng)態(tài)剪枝算法的優(yōu)劣。

        CDP算法訓(xùn)練過(guò)程如下:首先,訓(xùn)練一個(gè)不含聯(lián)合動(dòng)態(tài)剪枝操作的基本網(wǎng)絡(luò)結(jié)構(gòu),然后將其所有的卷積層替換為聯(lián)合動(dòng)態(tài)剪枝的卷積層。隨后,令卷積核動(dòng)態(tài)剪枝率β和通道動(dòng)態(tài)壓縮比α均為1,微調(diào)網(wǎng)絡(luò)至收斂。然后,不斷降低α和β,令β下降步長(zhǎng)為0.1,并保持2β=1+α的關(guān)系,最終達(dá)到需要的壓縮比。例如需要壓縮比為0.6 的聯(lián)合動(dòng)態(tài)剪枝模型,那么α=0.6,β=0.8。訓(xùn)練中使用256 的批大小,0.01 的學(xué)習(xí)率,每過(guò)100 個(gè)訓(xùn)練期學(xué)習(xí)率降低為原先的0.1,直到學(xué)習(xí)率降低至10-5停止,這些參數(shù)適用于所有的剪枝算法。對(duì)于使用者而言,只需要額外設(shè)置兩個(gè)超參數(shù)α和β即可。

        數(shù)據(jù)的處理上,訓(xùn)練集和測(cè)試集均進(jìn)行了標(biāo)準(zhǔn)化處理。訓(xùn)練集同時(shí)也進(jìn)行了隨機(jī)打亂的操作,以及翻轉(zhuǎn)概率p=0.5的隨機(jī)水平翻轉(zhuǎn),以避免過(guò)擬合,提高模型的泛化能力。

        2.2 評(píng)估標(biāo)準(zhǔn)

        最直觀的評(píng)判標(biāo)準(zhǔn),即在某個(gè)特定剪枝率下,比較不同算法帶來(lái)的準(zhǔn)確率變化。定義模型的壓縮比為α,剪枝率為γ,有α=1-γ。對(duì)于SFP 算法,也就是移除每個(gè)卷積層中占比為γ的卷積核。對(duì)于FBS 算法,則是對(duì)于每個(gè)輸入特征圖,僅有α的通道被選擇參與卷積運(yùn)算。對(duì)于本文提出的CDP 算法,則是利用卷積核動(dòng)態(tài)剪枝置零1-β的卷積核,同時(shí)利用通道動(dòng)態(tài)壓縮使得α的通道被選擇參與卷積運(yùn)算。這樣便可以在模型壓縮比相同的情況下,比較三種算法的準(zhǔn)確率。

        然而,三種算法的實(shí)現(xiàn)不同,相同的剪枝率帶來(lái)的復(fù)雜度降低也不盡相同。因而,為了更客觀地衡量模型的復(fù)雜度,本文進(jìn)一步選用了浮點(diǎn)運(yùn)算次數(shù)(Floating-Point Operations Per second,F(xiàn)LOPs)和參數(shù)規(guī)模的壓縮比兩個(gè)標(biāo)準(zhǔn)。假設(shè)卷積運(yùn)算利用滑動(dòng)窗口實(shí)現(xiàn),并且忽略非線性計(jì)算開(kāi)銷[20]。

        對(duì)于卷積層(convolutional layer,conv),有:

        其中:H、W分別代表輸入特征圖的寬和高;Cin、Cout代表輸入和輸出通道數(shù);FLOPs代表浮點(diǎn)運(yùn)算次數(shù);PARA代表參數(shù)個(gè)數(shù)。假設(shè)卷積核是對(duì)稱的,因而其寬與高相等,均為K。

        相對(duì)地,有全連接層(fully connected layer,fc)的浮點(diǎn)運(yùn)算次數(shù)和參數(shù)規(guī)模計(jì)算如下:

        其中,I、O分別代表輸入和輸出通道數(shù)。

        原始網(wǎng)絡(luò)的浮點(diǎn)運(yùn)算次數(shù)除以剪枝后網(wǎng)絡(luò)的浮點(diǎn)運(yùn)算次數(shù),得到的就是FLOPs壓縮比。同理也可以得到參數(shù)壓縮比。為避免歧義,本節(jié)出現(xiàn)的壓縮比如未特別說(shuō)明,均代表網(wǎng)絡(luò)壓縮比,也就是對(duì)應(yīng)于剪枝率的壓縮比,而非FLOPs壓縮比或參數(shù)壓縮比。

        2.3 結(jié)果分析

        2.3.1 M-CifarNet實(shí)驗(yàn)結(jié)果

        M-CifarNet[21]是一個(gè)針對(duì)CIFAR 數(shù)據(jù)集設(shè)計(jì)的8 層卷積神經(jīng)網(wǎng)絡(luò),僅用1.3×106個(gè)參數(shù)就在CIFAR-10數(shù)據(jù)集上達(dá)到了91.37%和99.67%的Top-1 與Top-5 正確率。M-CifarNet 中所有的卷積層均采用3×3 的卷積核,pool 是一個(gè)全局平均池化層。

        表1展示了M-CifarNet的網(wǎng)絡(luò)結(jié)構(gòu),以及不同剪枝算法帶來(lái)FLOPs 運(yùn)算的比較。在先前的分析中,F(xiàn)BS 作為動(dòng)態(tài)剪枝的經(jīng)典算法,其并不更改網(wǎng)絡(luò)結(jié)構(gòu),因而輸出通道數(shù)是沒(méi)有變化的。然而其僅選擇部分卷積核進(jìn)行計(jì)算,體現(xiàn)在FLOPs 計(jì)算上,也就是輸入通道數(shù)量不變,而輸出通道數(shù)量減少。因而,其FLOPs 的壓縮比也是最小的。SFP 因?yàn)橛谰眯砸瞥瞬糠志矸e核,因而壓縮比最大。CDP 雖然也永久性移除了部分卷積核,但其移除的比例沒(méi)有SFP那么大,因而取得了介于兩者之中的FLOPs壓縮比。

        表1 M-CifarNet網(wǎng)絡(luò)結(jié)構(gòu)以及不同剪枝算法帶來(lái)FLOPs運(yùn)算的比較Tab.1 M-CifarNet network structure and comparison of FLOPs operations brought by different pruning algorithms

        從參數(shù)規(guī)模上來(lái)看,由于FBS 和CDP 引入了額外的預(yù)測(cè)網(wǎng)絡(luò),因而和原始網(wǎng)絡(luò)結(jié)構(gòu)相比有額外的參數(shù)。然而相較于卷積層的參數(shù),全連接層的參數(shù)僅占很小一部分,因而可以忽略不計(jì),將重點(diǎn)聚焦在剪枝算法移除原先模型的參數(shù)數(shù)量。

        令網(wǎng)絡(luò)壓縮比α從1 降低到0.2,得到的結(jié)果如圖4(a)所示。由于FBS和CDP均引入了額外的全連接層用于通道重要性預(yù)測(cè),因而在壓縮比為1 時(shí),二者準(zhǔn)確率都超過(guò)了原始模型的準(zhǔn)確率??傮w來(lái)看,CDP的準(zhǔn)確率明顯高于前兩種算法,在壓縮比α≤0.6時(shí)更為明顯,準(zhǔn)確率高出了約1%以上。

        2.3.2 VGG16實(shí)驗(yàn)結(jié)果

        VGG是牛津大學(xué)視覺(jué)幾何組Simonyan等[1]提出的深層次卷積神經(jīng)網(wǎng)絡(luò)模型,在2014 年的ImageNet 圖像分類與目標(biāo)檢測(cè)比賽中獲得了突出的成績(jī)。VGG16 包含五個(gè)堆疊而成的模塊,每個(gè)模塊包含數(shù)個(gè)卷積層和一個(gè)最大池化層,最后是三個(gè)全連接層。其中,具有權(quán)值的卷積層和全連接層總數(shù)為16,由此而得名。表2展示了VGG16的網(wǎng)絡(luò)結(jié)構(gòu),以及不同剪枝算法帶來(lái)FLOPs 運(yùn)算的變化比較。SFP 算法永久性地移除了最多的參數(shù),因而獲得了最高的FLOPs 壓縮比。本文提出的CDP算法則取得了一個(gè)介于其中的FLOPs壓縮比。

        表2 VGG16網(wǎng)絡(luò)結(jié)構(gòu)以及不同剪枝算法帶來(lái)FLOPs運(yùn)算的比較Tab.2 VGG16 network structure and comparison of FLOPs operations brought by different pruning algorithms

        和M-CifarNet 的實(shí)驗(yàn)類似,令網(wǎng)絡(luò)壓縮比α從1 逐漸降低到0.2,觀察不同剪枝算法對(duì)模型準(zhǔn)確率的影響,如圖4(b)所示。結(jié)果表明,CDP 的準(zhǔn)確率仍然高于前兩種算法,并且在α≤0.6 時(shí)更為明顯,準(zhǔn)確率提升有0.3%~1.0%甚至更高。而永久性移除最多卷積核的SFP 算法,準(zhǔn)確率也最低。這也驗(yàn)證了本文之前的假設(shè):永久性移除卷積核會(huì)導(dǎo)致模型容量不可逆轉(zhuǎn)的降低,從而影響準(zhǔn)確率。

        圖4 不同剪枝算法帶來(lái)的準(zhǔn)確率變化Fig.4 Accuracy changes brought by different pruning algorithms

        2.3.3 綜合比較

        以上基于相同的網(wǎng)絡(luò)壓縮比,比較了不同算法的準(zhǔn)確率。然而,正如之前的分析,相同的網(wǎng)絡(luò)壓縮比在不同的算法中實(shí)現(xiàn)不同,對(duì)于網(wǎng)絡(luò)復(fù)雜度的降低也不盡相同。偏向于靜態(tài)剪枝的算法,由于永久性去除了部分參數(shù),因而會(huì)取得更高的FLOPs 壓縮比;而動(dòng)態(tài)剪枝類別的算法,在FLOPs 壓縮比上面相對(duì)較低。因而這里將基于相同的準(zhǔn)確率,比較不同算法的FLOPs壓縮比。

        表3 展示了不同剪枝算法在M-CifarNet 上準(zhǔn)確率、FLOPs、參數(shù)規(guī)模等指標(biāo)的變化情況,表格中加粗項(xiàng)為準(zhǔn)確率一致的情況下,三種算法在不同指標(biāo)上取得的最好結(jié)果。注意到,這里選擇的是CDP(γ=40%)、FBS(γ=30%)以及SFP(γ=20%)三種算法的特殊情況作為比較,而不是三種算法在同樣的剪枝率γ下的結(jié)果。這是由于在剪枝率γ相同的情況下,F(xiàn)BS 和SFP 算法的準(zhǔn)確率均低于CDP 算法,因而需要適當(dāng)降低剪枝率,將準(zhǔn)確率提升至與CDP(γ=40%)相當(dāng)?shù)那闆r,再針對(duì)浮點(diǎn)運(yùn)算和參數(shù)規(guī)模的壓縮比進(jìn)行分析。經(jīng)過(guò)實(shí)驗(yàn),選擇了SFP(γ=20%)與FBS(γ=30%)作為對(duì)比參考。

        表3 基于數(shù)據(jù)集CIFAR-10的M-CifarNet網(wǎng)絡(luò)結(jié)構(gòu)以及不同剪枝算法的綜合比較Tab.3 M-CifarNet network structure based CIFAR-10 dataset and comprehensive comparison of different pruning algorithms

        可以看到,此時(shí)CDP 算法的準(zhǔn)確率和SFP、FBS 算法基本持平,且略高于后二者。在準(zhǔn)確率保持一致的情況下,關(guān)注FLOPs 壓縮比和參數(shù)壓縮比的結(jié)果。CDP 算法提供了最高的FLOPs壓縮比,為2.11,SFP和FBS僅分別提供了1.57和1.42的FLOPs 壓縮比。而參數(shù)壓縮比上可以看到,SFP 和CDP 大致相當(dāng),均為1.57,F(xiàn)BS 算法由于沒(méi)有永久性移除卷積核,因而對(duì)模型的參數(shù)沒(méi)有造成影響。也即可以得到如下的結(jié)論:在準(zhǔn)確率一致的情況下,CDP 算法提供了最高的FLOPs 壓縮比和參數(shù)規(guī)模壓縮比。

        以上完成了對(duì)于壓縮比和準(zhǔn)確率的對(duì)比討論,下面將基于CDP算法在訓(xùn)練中的表現(xiàn)作進(jìn)一步的分析。選擇了SFP算法和CDP 算法作對(duì)比,記錄其訓(xùn)練過(guò)程中各項(xiàng)指標(biāo)的變化情況,具體來(lái)說(shuō)是訓(xùn)練集的Top-1準(zhǔn)確率、Top-5準(zhǔn)確率、損失,以及測(cè)試集的Top-1 準(zhǔn)確率、Top-5 準(zhǔn)確率、損失,并作出其隨著迭代次數(shù)增加的變化曲線,如圖5~6所示。

        圖5 不同剪枝算法帶來(lái)的準(zhǔn)確率隨訓(xùn)練周期數(shù)的變化Fig.5 Accuracy varying with training epochs caused by different pruning algorithms

        圖6 不同剪枝算法帶來(lái)的損失隨訓(xùn)練周期數(shù)的變化Fig.6 Loss varying with training epochs caused by different pruning algorithms

        關(guān)注到訓(xùn)練集的損失,CDP算法下降稍慢一些,并且震蕩幅度也略微大一些,而SFP 算法的訓(xùn)練集損失曲線明顯更為平滑。從收斂的速度來(lái)看,兩種算法大致相當(dāng),在50 個(gè)訓(xùn)練期以后均趨近于收斂。對(duì)于本次實(shí)驗(yàn)而言,采用了每隔100個(gè)訓(xùn)練期學(xué)習(xí)率降低為原先的1/10,對(duì)于兩種算法來(lái)說(shuō)都已經(jīng)足夠。結(jié)合準(zhǔn)確率變化可以看出,訓(xùn)練集的準(zhǔn)確率變化曲線和訓(xùn)練的損失變化曲線形態(tài)相當(dāng)。

        基于以上分析,可以得出結(jié)論:在網(wǎng)絡(luò)壓縮比相同的情況下,CDP 算法擁有最高的準(zhǔn)確率;而在準(zhǔn)確率相同的情況下,CDP算法擁有最高的FLOPs壓縮比和接近于最高的參數(shù)壓縮比。相對(duì)而言,SFP 算法犧牲準(zhǔn)確率換來(lái)了更低的模型復(fù)雜度,而FBS算法整體而言均顯劣勢(shì)。然而,CDP算法引入了額外的全連接層,導(dǎo)致其訓(xùn)練時(shí)震蕩幅度較大,收斂速度也略慢于SFP算法。

        3 結(jié)語(yǔ)

        本文針對(duì)已有網(wǎng)絡(luò)剪枝工作中出現(xiàn)模型容量損失的局限,提出了聯(lián)合動(dòng)態(tài)剪枝的算法,可以綜合考慮卷積核和輸入圖像特征,動(dòng)態(tài)選擇網(wǎng)絡(luò)的一部分參與運(yùn)算,保持了高準(zhǔn)確率和模型容量。相較于傳統(tǒng)的剪枝算法,聯(lián)合動(dòng)態(tài)剪枝算法取得了更高的準(zhǔn)確率和壓縮比?;贛-CifarNet與VGG16的實(shí)驗(yàn)結(jié)果表明,聯(lián)合動(dòng)態(tài)剪枝分別取得了2.11和1.99的浮點(diǎn)運(yùn)算壓縮比,而與基準(zhǔn)模型(M-CifarNet、VGG16)相比準(zhǔn)確率僅分別下降不到0.8 個(gè)百分點(diǎn)和1.2 個(gè)百分點(diǎn)。該算法的實(shí)現(xiàn)分為卷積核動(dòng)態(tài)剪枝和通道動(dòng)態(tài)壓縮兩個(gè)部分,二者有機(jī)結(jié)合、相輔相成。聯(lián)合動(dòng)態(tài)剪枝將剪枝工作融合進(jìn)訓(xùn)練和推理的過(guò)程中,降低了額外的開(kāi)銷。對(duì)于使用者而言,只需要額外設(shè)置兩個(gè)剪枝率超參數(shù),較為方便易用。

        本文算法相較于現(xiàn)有的動(dòng)態(tài)剪枝算法,無(wú)論是準(zhǔn)確率還是浮點(diǎn)運(yùn)算壓縮比都更優(yōu);然而相較于傳統(tǒng)的靜態(tài)剪枝算法,仍然存在參數(shù)壓縮比不夠高、收斂較慢的情況??梢哉J(rèn)為模型容量(體現(xiàn)為準(zhǔn)確率等)和復(fù)雜度(體現(xiàn)為浮點(diǎn)運(yùn)算次數(shù)、參數(shù)規(guī)模等)是一個(gè)兩難問(wèn)題,需要在現(xiàn)實(shí)場(chǎng)景中根據(jù)具體情況抉擇。盡管對(duì)于固定的剪枝率,不需要先剪枝后微調(diào)的過(guò)程,然而為了更好的剪枝效果,聯(lián)合動(dòng)態(tài)剪枝算法仍然需要逐漸下調(diào)剪枝率直到達(dá)到需要的壓縮比。另外,因?yàn)楣ぷ鳝h(huán)境和機(jī)器受限,沒(méi)有測(cè)試更加復(fù)雜的數(shù)據(jù)集和網(wǎng)絡(luò)結(jié)構(gòu),也沒(méi)有在實(shí)際的移動(dòng)設(shè)備中測(cè)試剪枝算法,這些是值得完善和改進(jìn)的地方。

        猜你喜歡
        模型
        一半模型
        一種去中心化的域名服務(wù)本地化模型
        適用于BDS-3 PPP的隨機(jī)模型
        提煉模型 突破難點(diǎn)
        函數(shù)模型及應(yīng)用
        p150Glued在帕金森病模型中的表達(dá)及分布
        函數(shù)模型及應(yīng)用
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        3D打印中的模型分割與打包
        国产真实二区一区在线亚洲| 亚洲国产成人久久综合电影| 亚洲色图视频在线| 免费国产在线精品三区| 婷婷色精品一区二区激情| 亚洲一区二区三区av天堂 | 极品人妻被黑人中出种子| 欧美性猛交xxxx乱大交3| 亚洲欧洲精品成人久久曰不卡| 成人全视频在线观看免费播放| 国产精品妇女一区二区三区| 久久人人爽人人爽人人片av东京热 | 伊人久久大香线蕉综合网站| 亚洲AV永久青草无码性色av| 日本黄色高清视频久久| 老熟女的中文字幕欲望| 国产精品久久成人网站| 色欲麻豆国产福利精品| 亚洲av综合色区在线观看| 亚洲av色精品国产一区二区三区| 午夜福利视频一区二区二区| 国产精品美女久久久久av福利 | 亚洲熟少妇在线播放999| 国产精品白浆无码流出 | 日韩人妻精品中文字幕专区| 久久精品国产99久久无毒不卡| 欧美日韩精品一区二区在线观看 | 欧洲一级无码AV毛片免费| 按摩师玩弄少妇到高潮av| 精品国内在视频线2019| 日韩在线不卡免费视频| 亚洲自偷自拍另类第一页 | 国产欧美日韩午夜在线观看| 开心激情网,开心五月天| 国产亚洲欧洲aⅴ综合一区| 成人亚洲性情网站www在线观看| 无码伊人久久大蕉中文无码| 成人免费av色资源日日| 亚洲女初尝黑人巨高清| 国内久久婷婷精品人双人| av中文字幕性女高清在线|