• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    快速卷積算法的綜述研究 *

    2021-10-26 01:17:22劉宗林徐雪剛夏一民
    關(guān)鍵詞:復(fù)雜度乘法運(yùn)算

    李 創(chuàng),劉宗林,劉 勝,李 勇,徐雪剛,夏一民

    (1.國防科技大學(xué)計(jì)算機(jī)學(xué)院,湖南 長(zhǎng)沙 410073;2.湖南長(zhǎng)城銀河科技有限公司,湖南 長(zhǎng)沙 410000)

    1 引言

    隨著深度學(xué)習(xí)的蓬勃發(fā)展,研究人員對(duì)卷積神經(jīng)網(wǎng)絡(luò)CNN(Convolutional Neural Network)的研究工作[1 - 3]將會(huì)把重心放在更大規(guī)模和更高準(zhǔn)確率上,在卷積神經(jīng)網(wǎng)絡(luò)中,更大規(guī)模和更高準(zhǔn)確率需要更快速更準(zhǔn)確的運(yùn)算,所以研究卷積神經(jīng)網(wǎng)絡(luò)的加速方法很重要。與此同時(shí),針對(duì)卷積神經(jīng)網(wǎng)絡(luò)的加速優(yōu)化近年來也有了快速的發(fā)展,如低秩分解、定點(diǎn)運(yùn)算、矢量量化、稀疏表示[4]、剪枝[5]和快速卷積[6 - 10]等,實(shí)現(xiàn)了卷積神經(jīng)網(wǎng)絡(luò)整體的加速效果。在一個(gè)卷積神經(jīng)網(wǎng)絡(luò)[11]中,卷積是核心,同時(shí)運(yùn)算量最大的部分也是卷積部分,未來計(jì)算力的強(qiáng)弱將會(huì)決定神經(jīng)網(wǎng)絡(luò)的發(fā)展速度。更大的計(jì)算規(guī)模、更豐富的數(shù)據(jù)、更高強(qiáng)度的計(jì)算依然是深度學(xué)習(xí)的下一個(gè)發(fā)展點(diǎn),卷積神經(jīng)網(wǎng)絡(luò)能否在眾多應(yīng)用中繼續(xù)體現(xiàn)出巨大優(yōu)勢(shì),這將依賴于更強(qiáng)的計(jì)算能力。而卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算量絕大多數(shù)集中在卷積操作的乘加操作上,這些巨大的計(jì)算量和驚人的功耗極大地限制了卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用的發(fā)展,也限制了研究人員的研究進(jìn)度。卷積加速的研究工作意義非凡,在迫切需求更強(qiáng)計(jì)算力的未來,卷積加速的研究工作有待進(jìn)一步加深。目前對(duì)于卷積優(yōu)化的方法也有很多,因此本文將對(duì)近年來常見的卷積加速方法做一個(gè)總結(jié)。

    2 概述

    2.1 卷積

    在CNN中,卷積是圖像處理中最基本又是最重要的操作。卷積是待處理的圖像和卷積核兩者之間發(fā)生的操作,對(duì)于待處理圖像中的每一個(gè)像素點(diǎn)計(jì)算它周圍像素點(diǎn)和卷積核矩陣的對(duì)應(yīng)像素點(diǎn)的乘積,然后把乘積結(jié)果累加到一起,作為輸出特征圖的像素點(diǎn),具體過程如圖1所示,這樣就完成了卷積過程。準(zhǔn)確地說卷積有3種模型,分為Full卷積、Same卷積和Valid卷積,卷積時(shí),卷積核是在卷積圖像上進(jìn)行滑動(dòng),F(xiàn)ull卷積指的是從卷積核滑動(dòng)到和圖像剛相交時(shí)就開始進(jìn)行卷積,Same卷積指的是卷積核中心滑動(dòng)到和圖像剛相交時(shí)就開始進(jìn)行卷積,Valid卷積指的是卷積核滑動(dòng)到如圖1所示位置處開始進(jìn)行卷積。

    Figure 1 Process of convolution圖1 卷積的過程

    引入現(xiàn)實(shí)中卷積應(yīng)用的意義,可加深對(duì)卷積運(yùn)算的理解。物理學(xué)中的信號(hào)處理過程,信號(hào)的輸出不僅僅受t時(shí)刻的輸入響應(yīng)影響,還受到t時(shí)刻之前的輸入響應(yīng)影響,不過t時(shí)刻之前的影響相對(duì)于t時(shí)刻有一定衰減,所以t時(shí)刻的真實(shí)輸出應(yīng)該是所有時(shí)刻響應(yīng)的疊加,同時(shí)由于不同時(shí)刻的影響不同,不同時(shí)刻的影響應(yīng)該乘以一個(gè)系數(shù),這整個(gè)過程就是卷積。

    圖1卷積過程需要36次乘法和32次加法操作,隨著輸入圖像尺寸的增大以及通道數(shù)的增加,卷積運(yùn)算所需的乘加次數(shù)也在倍增。可以看出,卷積操作會(huì)占用卷積層乃至整個(gè)網(wǎng)絡(luò)執(zhí)行時(shí)間的絕大部分,目前針對(duì)卷積操作的優(yōu)化實(shí)現(xiàn)也有了初步的進(jìn)展,但是隨著計(jì)算機(jī)體系結(jié)構(gòu)的發(fā)展,優(yōu)化工作需要繼續(xù)展開,根據(jù)不同的體系結(jié)構(gòu)實(shí)現(xiàn)不同的優(yōu)化方法。

    圖像直接卷積運(yùn)算的本質(zhì)是若干個(gè)子矩陣塊與卷積核的卷積。卷積圖像可劃分成若干和卷積核大小一致的小塊,塊和卷積核的運(yùn)算如算法1所示,而圖像直接卷積是最傳統(tǒng)的計(jì)算方法,其實(shí)現(xiàn)見算法2。算法2中M是本層輸出的特征圖尺寸,K是卷積核尺寸,C_in是輸入圖像的通道數(shù),Kernel_num是輸出特征圖的通道數(shù),kernel為卷積核的尺寸,在卷積神經(jīng)網(wǎng)絡(luò)中,單層的時(shí)間復(fù)雜度為O(M2*K2*C_in*Kernel_num)。Matlab中的conv函數(shù)實(shí)現(xiàn)以及cuda-convnet2函數(shù)的實(shí)現(xiàn)采用的就是直接卷積方法,這種直接卷積方法效率不是特別高,所以研究人員對(duì)該卷積加速運(yùn)算進(jìn)行了進(jìn)一步的研究。

    算法1Block_Conv

    Input:Block,Kernel。/*Block,Kernel分別是2D多通道圖像的1個(gè)小塊和卷積核*/

    Output:y。//y是塊卷積的輸出

    Fork=0;k

    Fori=0;i

    y=Block[k][i] *Kernel[k][i];

    Returny

    算法2Image_Conv

    Input:Img,Kernel。/*Img,Kernel分別是2D多通道圖像和卷積核*/

    Output:Y。//Y是輸出圖像

    Form=0;m

    Forn=0;n

    Forc=0;c

    Forr=0;r

    Y[r][m][n]+=Block_Conv(Img[c][m][n],kernel)

    ReturnY

    卷積操作是卷積神經(jīng)網(wǎng)絡(luò)中耗費(fèi)時(shí)間最長(zhǎng)的部分,因?yàn)橛?jì)算涉及到多次乘加運(yùn)算。在任何一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中,每一卷積層對(duì)圖像信息進(jìn)行卷積處理時(shí),其計(jì)算量可表示為輸出特征圖的大小和參數(shù)量的大小的乘積,例如:當(dāng)卷積核的尺寸為5*5*3,卷積核的個(gè)數(shù)為2時(shí),卷積核的參數(shù)量為 5*5*3*2,偏差的參數(shù)量為2,輸入圖像尺寸為28*28*3,無填充,且步長(zhǎng)大小為1,則按照式(1)計(jì)算得到卷積后的輸出特征圖尺寸為24,輸出特征圖的數(shù)量為2。

    Out_map=In_img+2*pad-

    kernel/Strides+1

    (1)

    其中,Out_map是輸出特征圖的尺寸,In_img是待處理圖像的尺寸,pad是填充尺寸,kernel是卷積核的尺寸,Strides是步長(zhǎng)。

    這一層卷積操作所需要的計(jì)算量為(5*5*3*2+2)*(24*24)=87552。所以,卷積操作占了執(zhí)行時(shí)間的絕大部分。目前針對(duì)卷積操作的優(yōu)化實(shí)現(xiàn)也有了初步的進(jìn)展,但是隨著計(jì)算機(jī)體系結(jié)構(gòu)的發(fā)展,優(yōu)化工作需要繼續(xù)展開,根據(jù)不同的體系結(jié)構(gòu)設(shè)計(jì)不同的優(yōu)化方法。

    2.2 卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用

    CNN主要由卷積層、池化層和全連接層構(gòu)成,其中卷積層用來提取圖像特征,池化層用來降維減少運(yùn)算量,全連接層用來輸出分類。CNN的大部分計(jì)算量集中在卷積層上,而隨著深度學(xué)習(xí)的發(fā)展,研究人員正采用更多卷積層的復(fù)雜模型來提高預(yù)測(cè)精度,這些模型的巨大計(jì)算量和驚人功耗限制了CNN在嵌入式設(shè)備的廣泛應(yīng)用。因此,加速卷積算法正成為近期研究的一個(gè)熱點(diǎn)。

    CNN在計(jì)算機(jī)視覺領(lǐng)域有著非常廣泛的應(yīng)用,常用來進(jìn)行圖像的識(shí)別與分類、圖像分割、目標(biāo)檢測(cè)與定位、圖像生成等。詞向量的引入,使得CNN可以在機(jī)器翻譯、文本分類、語音識(shí)別等自然語言處理領(lǐng)域得以應(yīng)用。生活中常見的自動(dòng)駕駛技術(shù)、美顏、人臉識(shí)別打卡等都是基于CNN設(shè)計(jì)的,F(xiàn)acebook提出的CNN機(jī)器翻譯,在當(dāng)時(shí)比谷歌的翻譯快9倍。

    3 快速卷積算法

    通過查看當(dāng)前主流的深度學(xué)習(xí)框架,就能知道目前主流的卷積層優(yōu)化算法,在Caffe中卷積層采用的是img2col+GEMM(GEneral Matrix Multiplication)算法,PaddlePaddle中卷積層使用的是Winograd算法,而Facebook曾經(jīng)的NNPACK(acceleration PACKage for Neural Network computations)中的卷積實(shí)現(xiàn)和LightNet中的CNN實(shí)現(xiàn)采用的都是基于快速傅里葉變換FFT(Fast Fourier Transform)的算法。這3種算法是目前最為流行的針對(duì)卷積層進(jìn)行加速的加速算法。

    3.1 img2col+GEMM

    img2col是用來優(yōu)化卷積運(yùn)算的一個(gè)重要算法,Caffe框架的卷積實(shí)現(xiàn)就是采用的這種方法。傳統(tǒng)卷積運(yùn)算時(shí),根據(jù)不同的卷積核大小需要不斷地從卷積圖像矩陣中取出和卷積核同樣大小的卷積塊,使用for循環(huán)來實(shí)現(xiàn)卷積,遇到卷積圖像尺寸過大時(shí),需要多次訪存,非常耗時(shí)。img2col算法的核心思想是把圖像感受野部分轉(zhuǎn)換為一行或一列來存儲(chǔ),減少內(nèi)存訪問次數(shù),從而達(dá)到優(yōu)化卷積運(yùn)算的目的。從另一方面來講,當(dāng)img2col把卷積圖像信息做完轉(zhuǎn)換后,可以把感受野部分轉(zhuǎn)換后的若干行或若干列拼成矩陣,對(duì)于卷積圖像而言,拼成的矩陣的行數(shù)或者列數(shù)就是卷積核在卷積圖像上滑動(dòng)的次數(shù)。img2col算法的轉(zhuǎn)換過程如圖2所示。卷積圖像被轉(zhuǎn)換為新矩陣后卷積運(yùn)算就變成了矩陣相乘運(yùn)算,輔以現(xiàn)有的矩陣乘優(yōu)化庫可以明顯地加快卷積速度。

    Figure 2 Principle of img2col圖2 img2col的原理

    GEMM在深度學(xué)習(xí)中發(fā)揮著十分重大的作用,卷積神經(jīng)網(wǎng)絡(luò)中的全連接層和卷積層的運(yùn)算都可以用矩陣乘來實(shí)現(xiàn),而一個(gè)卷積神經(jīng)網(wǎng)絡(luò)中90%的運(yùn)算量都集中在全連接層和卷積層,優(yōu)化GEMM可以實(shí)現(xiàn)對(duì)卷積神經(jīng)網(wǎng)絡(luò)的加速。GEMM卷積算法如算法3所示,其中A和B是用img2col算法轉(zhuǎn)換后的卷積圖像和卷積核矩陣,A是一個(gè)R*C的矩陣,B是一個(gè)C*K的矩陣,R為輸出矩陣的寬和高的乘積,C為卷積核寬和高的乘積,K為卷積核的數(shù)量。

    算法3GEMM_Conv

    Input:A,B。

    Output:C。

    Form=0;m

    Forn=0;n

    Fork=0;k

    C[m][n]+=A[m][k] *B[k][n];

    ReturnC

    img2col+GEMM實(shí)現(xiàn)卷積操作是目前計(jì)算卷積的常用方法之一??梢岳肎EMM的優(yōu)化來實(shí)現(xiàn)對(duì)卷積的優(yōu)化,目前現(xiàn)有的矩陣優(yōu)化技術(shù)已經(jīng)可以將常見的矩陣乘運(yùn)算改進(jìn)約7倍。按照傳統(tǒng)卷積的方式,參與運(yùn)算的數(shù)據(jù)在內(nèi)存中的存放是不連續(xù)的,因此需要多次訪存。為了解決該問題,研究人員提出了img2col,可以節(jié)省訪存的時(shí)間,從而達(dá)到加速的目的。img2col把卷積操作轉(zhuǎn)換為矩陣乘后,使用優(yōu)化后的GEMM可以實(shí)現(xiàn)進(jìn)一步的加速。從圖2可以看出,卷積圖像的信息被多次復(fù)用提取到轉(zhuǎn)換后的矩陣中,增加了額外的內(nèi)存開銷,以Lenet網(wǎng)絡(luò)模型的第1層卷積為例,輸入圖像大小為32*32,6個(gè)5*5的卷積核,輸出6個(gè)28*28的輸出特征圖信息,用img2col把輸入信息轉(zhuǎn)換為維度為(28*28)*(5*5)的矩陣,相較于原始的32*32的圖像輸入信息所占用的內(nèi)存,轉(zhuǎn)換后的矩陣信息所占用的內(nèi)存高達(dá)18倍以上。

    img2col+GEMM能將復(fù)雜的卷積過程轉(zhuǎn)化為矩陣相乘的簡(jiǎn)單運(yùn)算,不僅適用于二維卷積,還可推廣到三維甚至更高的維度,具有很好的通用性。

    3.2 Winograd卷積算法

    Winograd算法早在1980年就被提出用來減少有限長(zhǎng)單位沖激響應(yīng)FIR(Finite Impulse Response)濾波器的計(jì)算量,同F(xiàn)FT一樣都需要把數(shù)據(jù)變換到其他空間進(jìn)行處理后再變換回原空間,不同于FFT的是Winograd變換不涉及復(fù)數(shù)。在2016的CVPR會(huì)議上,Andrew等[7]提出的快速算法就使用了Winograd進(jìn)行卷積加速。目前騰訊的NCNN(Neural Network Inference Computing Framework)、Facebook的NNPACK和NIVDIA的cuDNN(NVIDIA CUDA Deep Neural Network)中計(jì)算卷積的算法都是采用的Winograd算法。

    Andrew等[7]對(duì)Winograd算法做卷積運(yùn)算做了很大篇幅的介紹,其中一維Winograd算法需要進(jìn)行3次線性變換,具體轉(zhuǎn)換過程如式(2)所示,二維Winograd算法需要6次線性變換,具體實(shí)現(xiàn)過程如式(3)所示:

    Y=A′[(Gg)⊙(B′d)]

    (2)

    Y=A′[(GgG′)⊙(B′dB)]A

    (3)

    其中,☉表示點(diǎn)乘,A′表示矩陣A的轉(zhuǎn)置,用來對(duì)結(jié)果做線性變換,B′表示矩陣B的轉(zhuǎn)置,用來對(duì)輸入信息進(jìn)行線性變換,G是用來對(duì)卷積核做線性變換處理的變換矩陣,g是卷積核數(shù)據(jù),d是輸入數(shù)據(jù)。

    一維Winograd算法中的A,B′,G如下所示:

    大部分卷積神經(jīng)網(wǎng)絡(luò)加速器都采用的卷積加速算法就是Winograd算法,它是Strassen算法的變形。Strassen算法是一種通過減少矩陣相乘中的乘法次數(shù)來實(shí)現(xiàn)矩陣相乘的矩陣相乘優(yōu)化算法,關(guān)于Strassen算法不作過多介紹,可參考文獻(xiàn)[12],它把矩陣乘法的算法復(fù)雜度由O(n3)降低到了O(n2.81)。Winograd的相關(guān)算法也是從減少矩陣相乘算法中的乘法次數(shù)來實(shí)現(xiàn)卷積計(jì)算的加速效果,2011年研究人員已經(jīng)利用Winograd算法把矩陣相乘算法的復(fù)雜度降低到了O(n2.3727)。Winograd算法已經(jīng)在深度學(xué)習(xí)的大部分應(yīng)用中顯示出較大的優(yōu)勢(shì),成為當(dāng)前最常用的卷積加速算法之一。

    Andrew等[7]對(duì)Winograd算法的卷積運(yùn)算進(jìn)行了很大篇幅的介紹,目前主流的加速器對(duì)于卷積操作的加速大部分都采用的是Winograd快速卷積算法。Winograd快速卷積算法利用了卷積圖像像素點(diǎn)之間的結(jié)構(gòu)相似性,運(yùn)用恰當(dāng)?shù)臄?shù)學(xué)技巧將乘法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,因此能降低算法復(fù)雜度,實(shí)現(xiàn)卷積加速。

    對(duì)于一維Winograd卷積,當(dāng)輸出長(zhǎng)度為m,卷積核長(zhǎng)度為r,所需要的乘法數(shù)量是m+r-1,相較于不使用Winograd算法時(shí)的m*r次乘法,Winograd算法帶來了性能上的提升。輸入信號(hào)為d=[d0d1d2d3],卷積核g=[g0g1g2]時(shí),其卷積如式(4)所示:

    (4)

    其中:

    m0=(d0-d2)g0,

    m2=(d1-d3)g2,

    在Winograd算法中,所需的乘法次數(shù)為2+3-1=4次,直接運(yùn)算需要6次乘法,而且卷積核部分的數(shù)據(jù)加法在訓(xùn)練時(shí)只需計(jì)算1次,在推理過程中可以省略,整體的運(yùn)算量下降,從而實(shí)現(xiàn)了加速。Winograd快速卷積算法可以被推廣到二維,基于分塊矩陣的思想,先把輸入圖像矩陣展開成大矩陣形式,劃分成一維的形式,進(jìn)行進(jìn)一步的處理。將一維卷積擴(kuò)展到二維卷積,二維的F(2*2,3*3)需要16次乘法,而原來的算法需要進(jìn)行36次乘法,乘法次數(shù)減少了36/16倍,加速效果更明顯,二維的Winograd卷積加速算法可見文獻(xiàn)[7]中的算法1。

    采用Winograd算法做卷積,相較于直接卷積的6層循環(huán),里面2層循環(huán)可以設(shè)計(jì)Winograd計(jì)算模塊來替代,Liang等[13]介紹了Winograd算法在FPGA上的實(shí)現(xiàn),在他們的研究成果中調(diào)用設(shè)計(jì)好的Winograd計(jì)算模塊,就可以直接計(jì)算出卷積參數(shù),減少了50%以上的乘法操作,F(xiàn)(2*2,3*3)的Winograd卷積算法具體實(shí)現(xiàn)步驟如下所示:

    第1步:滑動(dòng)提取一個(gè)tile(即提取每幅圖像上的一小塊數(shù)據(jù))直至遍歷完輸入圖像信息,tile大小選擇4*4;

    第2步:對(duì)提取的tile做線性變換;

    第3步:對(duì)卷積核做線性變換;

    第4步:對(duì)變換后的卷積核和tile做點(diǎn)乘;

    第5步:對(duì)第4步的輸出結(jié)果做線性變換,循環(huán)執(zhí)行。

    二維的Winograd卷積算法的復(fù)雜度為O(M2*C_in*C_out),其中C_out表示輸出通道數(shù)。在實(shí)際中使用Winograd算法做卷積時(shí),減少乘法次數(shù)是以增加加法次數(shù)為代價(jià),同時(shí)額外的轉(zhuǎn)換計(jì)算也會(huì)增加算法的整體運(yùn)行時(shí)間,所以多方面的代價(jià)需要我們?cè)谶x擇Winograd算法實(shí)現(xiàn)卷積加速時(shí)進(jìn)行綜合考慮。

    3.3 FFT卷積算法

    從2.1節(jié)算法1的介紹中可以看出,卷積的本質(zhì)是塊與卷積核之間的計(jì)算,所以可以通過對(duì)算法1進(jìn)行加速來加快整個(gè)圖像卷積的計(jì)算速度。快速傅里葉變換FFT是離散傅里葉變換的快速算法,能加快多項(xiàng)式乘法的運(yùn)算速度。1965年,Cooley等[14]提出了FFT算法,節(jié)約了計(jì)算機(jī)的計(jì)算處理時(shí)間,普通多項(xiàng)式乘法的時(shí)間復(fù)雜度為O(n2),而FFT能讓多項(xiàng)式乘法在O(nlbn)的時(shí)間內(nèi)完成運(yùn)算,所以,在算法1的計(jì)算中,可以利用FFT來實(shí)現(xiàn)加速。

    卷積定理指出函數(shù)卷積的傅里葉變換是函數(shù)傅里葉變換的乘積,這個(gè)定理是傅里葉變換滿足的一個(gè)重要性質(zhì),關(guān)于卷積定理的證明可參考文獻(xiàn)[15],卷積定理為FFT能在深度學(xué)習(xí)領(lǐng)域進(jìn)行卷積加速運(yùn)算提供了可能性。Mathieu等[16]曾在2014年ICLR會(huì)議上提出了用FFT加速卷積網(wǎng)絡(luò)訓(xùn)練的方法,并且在當(dāng)時(shí)的卷積運(yùn)算方面有著1個(gè)數(shù)量級(jí)以上的改進(jìn)。關(guān)于FFT做卷積運(yùn)算的研究已經(jīng)開展了很多年,相關(guān)研究[17]取得了一定的進(jìn)展,也已經(jīng)獲得了很大的性能提升,基于Matlab的輕量級(jí)深度學(xué)習(xí)框架LightNet[18]、Facebook的NNPACK框架和CUDA的cuDNN等,都支持基于FFT實(shí)現(xiàn)卷積。目前的研究工作中,經(jīng)常使用一維和二維序列的FFT變換操作。無論是一維還是二維FFT實(shí)現(xiàn)快速卷積,其主要步驟相同,只是在進(jìn)行FFT變換時(shí)有所不同,執(zhí)行1次二維FFT變換相當(dāng)于2次一維FFT變換。利用FFT實(shí)現(xiàn)一維快速卷積的算法如算法4所示,其中,“.*”符號(hào)表示對(duì)應(yīng)位置元素相乘。

    算法4FFT_Conv

    Input:卷積圖像序列X和卷積核序列Y,長(zhǎng)度分別為S和N。

    Output:Res。

    L:L滿足L≥S+N-1,且L是2的冪次方;

    Form=S;m

    X[m]=0;

    EndFor∥補(bǔ)零

    Forn=N;n

    Y[n]=0;

    EndFor∥補(bǔ)零

    Res=ifft(fft(X).*fft(Y));

    ReturnRes

    當(dāng)FFT變換的點(diǎn)數(shù)為n時(shí),F(xiàn)FT做卷積的復(fù)雜度為3次n點(diǎn)FFT計(jì)算與n次乘法,即為3*O(nlogn)+O(n),所以本算法的復(fù)雜度為O(nlogn)。利用FFT實(shí)現(xiàn)一維卷積[19 - 21]時(shí),當(dāng)FFT的變換點(diǎn)數(shù)L越大時(shí),加速效果越明顯,L越小加速效果就越差。在一些嵌入式平臺(tái)上,有相應(yīng)的硬件支持,F(xiàn)FT快速卷積的效率更高,文獻(xiàn)[22 - 24]探索了在微處理器平臺(tái)上實(shí)現(xiàn)FFT卷積的性能,研究表明內(nèi)置的FFT指令能進(jìn)一步對(duì)卷積運(yùn)算進(jìn)行加速。FFT卷積實(shí)現(xiàn)了一定程度上的卷積加速,但是其依然存在一些缺陷,在卷積神經(jīng)網(wǎng)絡(luò)中有一定的限制,因?yàn)樵诰矸e神經(jīng)網(wǎng)絡(luò)中,卷積核的尺寸很小,比如VGG(Visual Geometry Group)里面大小為3*3和5*5的卷積核非常多,在這種情況下,卷積圖像大小和卷積核尺寸大小相差很大,再使用FFT實(shí)現(xiàn)卷積,需要在用FFT進(jìn)行變換時(shí)補(bǔ)零,開銷加大,使用FFT實(shí)現(xiàn)卷積就有點(diǎn)得不償失。

    利用時(shí)域卷積等于頻域乘積的性質(zhì),用FFT進(jìn)行快速卷積運(yùn)算,這里以二維FFT做卷積為例,F(xiàn)FT 1次變換和IFFT(Inverse Fast Fourier Transform)1次變換需要的計(jì)算量都為O(2M2*logM),FFT實(shí)現(xiàn)卷積需要對(duì)卷積圖像、卷積核和輸出進(jìn)行轉(zhuǎn)換,所需要轉(zhuǎn)換的數(shù)量分別為(單批次)C_in,C_out和C_out*C_in,FFT變換所需要的總計(jì)算量為2M*M*logM*(C_out+C_in+C_in*C_out),變換之后的張量之間(復(fù)數(shù))的乘積所需要的計(jì)算量最少為4*C_in*C_out*M*M,所以FFT實(shí)現(xiàn)卷積需要的總計(jì)算量為O(2M2*logM*(C_out+C_in+C_in*C_out)+4*C_in*C_out*M*M)。

    FFT變換是一種線性變換,不會(huì)影響多通道變換后的結(jié)果,能節(jié)省出很大一部分開銷。FFT變換會(huì)增大內(nèi)存帶寬需求,占用大量?jī)?nèi)存,與此同時(shí),對(duì)于卷積步長(zhǎng)大于1的卷積操作,由于數(shù)據(jù)比較稀疏,這種情況下利用FFT做卷積的效率也很低。

    3.4 其他快速卷積算法

    為了解決FFT卷積在卷積核過小而輸入圖像數(shù)據(jù)過大時(shí)不適用的問題,Lin等[25]提出了一種tFFT(tile Fast Fourier Transform)算法,實(shí)現(xiàn)了CNNs傅里葉域的基于tile的卷積,對(duì)于卷積核比較小的情況,可以進(jìn)行批量FFT運(yùn)算,通過隱藏?cái)?shù)據(jù)讀取時(shí)間,復(fù)用旋轉(zhuǎn)因子,提高FFT的計(jì)算效率。在對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練時(shí),會(huì)有成千上萬次卷積運(yùn)算,為了利用FFT進(jìn)行加速訓(xùn)練和推理該tFFT算法是針對(duì)FFT做卷積加速時(shí)不適用較小的卷積核這一問題提出的一種新算法,引入了tile分解的方法對(duì)經(jīng)典的FFT進(jìn)行擴(kuò)展,使其能適用小卷積核的情況,達(dá)到加速卷積運(yùn)算的目的。tFFT的實(shí)現(xiàn)過程大致如下:首先將大尺寸輸入在邏輯上劃分為與濾波器核大小相近的塊,然后在傅里葉域中對(duì)這些邏輯上劃分的塊和濾波器進(jìn)行轉(zhuǎn)換。其次,遞歸地將之前的分塊輸入分解為蝴蝶運(yùn)算,這些蝴蝶運(yùn)算操作在GPU的并行流上進(jìn)行計(jì)算。在批大小為128以內(nèi),相較于經(jīng)典FFT卷積算法,tFFT在ResNet-34模型上的平均算法復(fù)雜度降低到原來的1/3左右,在VGGNet-19模型上的平均算法復(fù)雜度降低到原來的1/4左右,在AlexNet模型上的平均算法復(fù)雜度降低到原來的1/4左右。

    Budden等[26]提出了一種快速張量卷積算法。同Winograd算法類似,快速張量卷積也是通過減少乘法次數(shù)來減少計(jì)算量的卷積算法,該算法引入中國剩余定理的思想,不需要生成Winograd卷積算法的轉(zhuǎn)換矩陣,并且可在高維上實(shí)現(xiàn)卷積運(yùn)算。同時(shí),Budden等[26]也引入了在多核上實(shí)現(xiàn)深度加速的方案,利用多核處理器高度并行的能力,對(duì)卷積運(yùn)算進(jìn)行深度加速,在性能上獲得了可觀的效果。

    基于常見的GEMM卷積算法和Winograd卷積算法,Kala等[27]提出的一種變體算法研究了在Winograd算法基礎(chǔ)上結(jié)合GEMM的實(shí)現(xiàn)方案。

    而基于常見的FFT卷積算法和Winograd卷積算法,文獻(xiàn)[28]提出了Winograd和FFT融合方案,便于數(shù)據(jù)處理。

    Winograd算法是目前最實(shí)用的快速卷積算法,在各大深度學(xué)習(xí)框架可以看到大量的研究工作者不約而同地都在使用Winograd算法,針對(duì)Winograd快速卷積算法的研究,延伸出了多種變體算法,除了上述幾種外,文獻(xiàn)[29]提出了一種改進(jìn)算法,能夠?qū)ΩL(zhǎng)序列的卷積網(wǎng)絡(luò)進(jìn)行加速;文獻(xiàn)[30]提出了一種基于積分的卷積核縮放方法,可以使最終的結(jié)果沒有太大的精度損失,文獻(xiàn)[30-37]等都是融合了Winograd快速算法的思想。

    基于額外內(nèi)存占用問題,文獻(xiàn)[38-40]等提出了優(yōu)化內(nèi)存與速度的卷積計(jì)算方法,盡可能減少內(nèi)存消耗。

    前文提到的多種快速卷積算法多數(shù)都是從運(yùn)算技巧上入手,通過減少運(yùn)算次數(shù)實(shí)現(xiàn)加速優(yōu)化,從減少參數(shù)運(yùn)算量的方面,也可以加速卷積運(yùn)算。對(duì)參與卷積運(yùn)算的卷積核進(jìn)行分解,可以顯著降低參數(shù)量,以7*7的卷積核為例,可以用3個(gè)3*3的卷積核替代實(shí)現(xiàn)相同的效果,前者需要的參數(shù)量為49,后者需要的參數(shù)量只有27,降低了40%以上的參數(shù)量,能實(shí)現(xiàn)卷積的快速運(yùn)算,此外模型壓縮、量化等都是從降低參數(shù)量的方面實(shí)現(xiàn)對(duì)卷積的優(yōu)化。

    4 具體實(shí)現(xiàn)

    CNN最終要部署在計(jì)算設(shè)備上來完成圖像識(shí)別、語音識(shí)別和自然語言處理等任務(wù),涉及到具體的實(shí)現(xiàn),就要根據(jù)計(jì)算設(shè)備的特性來實(shí)施部署的方案。每一幅特征圖的卷積運(yùn)算可以被分解為若干幅小特征圖和卷積核的浮點(diǎn)乘加計(jì)算,這些運(yùn)算過程是相對(duì)獨(dú)立的,不存在先后順序和相互影響,可以利用并行處理來實(shí)現(xiàn)加速。根據(jù)目前CNN使用狀況,使用者常把CNN部署在CPU或者GPU上運(yùn)行進(jìn)行訓(xùn)練和推理,將CNN部署在移動(dòng)終端上完成推理任務(wù)在近年來也得到了很多關(guān)注:

    (1)基于GPU的CNN加速。GPU是專為執(zhí)行復(fù)雜的數(shù)學(xué)和幾何運(yùn)算而設(shè)計(jì)的,具有大量的計(jì)算核心,適合大規(guī)模的并行運(yùn)算,當(dāng)前GPU在CNN中占有重要的地位。Andrew等[7]在實(shí)現(xiàn)Winograd算法時(shí),使用VGG網(wǎng)絡(luò)模型,實(shí)驗(yàn)測(cè)試相比cuDNN,Winograd算法在不同批次不同浮點(diǎn)數(shù)位數(shù)時(shí)都有一定的性能提速,且最高提速達(dá)到了7.42x。Mathieu等[14]從算法復(fù)雜度方面詳細(xì)論述了FFT卷積算法的優(yōu)勢(shì),而使用CUDA能方便地利用計(jì)算平臺(tái)提供的cuFFT來實(shí)現(xiàn)卷積計(jì)算。如圖3展示了FFT卷積和直接卷積所需要的運(yùn)算操作次數(shù),其中,n是參與FFT的點(diǎn)數(shù),縱軸是所需操作數(shù),量級(jí)是1010。CUDA是NVIDIA推出的運(yùn)算平臺(tái),它能提供豐富的函數(shù)接口,利用CUDA可以方便快速地實(shí)現(xiàn)卷積。針對(duì)特定領(lǐng)域的應(yīng)用,CUDA為開發(fā)人員提供了多種多樣的庫,包括針對(duì)深度學(xué)習(xí)領(lǐng)域的庫[36],其中cuDNN[41]是NVIDIA開發(fā)的用于深度學(xué)習(xí)網(wǎng)絡(luò)的GPU加速庫,利用cuDNN可以方便地實(shí)現(xiàn)各種卷積算法,研究人員可以對(duì)卷積算法進(jìn)行快速的驗(yàn)證對(duì)比,使研究人員更多地專注于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的層次,而不用過多地思考性能問題。

    Figure 3 FFT convolution versus direct convolution performance on GPU圖3 GPU上FFT卷積和直接卷積的對(duì)比

    (2)基于CPU的卷積加速?,F(xiàn)在CPU多數(shù)都具有多個(gè)CPU核心,而目前很多程序都沒有進(jìn)行過多核優(yōu)化,因此對(duì)程序進(jìn)行并行設(shè)計(jì),盡量使用多線程處理,可以充分利用CPU的硬件資源,提高算法的執(zhí)行效率。David 等[42]基于CPU硬件擴(kuò)展了Winograd類的卷積算法,使其能在高維上進(jìn)行有效卷積計(jì)算,并通過向量化處理加速卷積計(jì)算,利用多核并行充分發(fā)揮CPU的硬件性能,相比以前的先進(jìn)水平,有著5~25倍的吞吐量提升。Jia 等[43]從數(shù)據(jù)布局、數(shù)據(jù)轉(zhuǎn)換和批量矩陣乘法等方面出發(fā),在CPU硬件上實(shí)現(xiàn)了Winograd類卷積算法,相比其他種類卷積,有著3倍的性能提升。

    (3)基于移動(dòng)終端的CNN加速。用戶需要將CNN部署在手機(jī)、無人機(jī)和汽車等移動(dòng)終端上,完成圖像分類、識(shí)別,目標(biāo)檢測(cè)與定位,人臉識(shí)別等任務(wù),考慮到便攜性和成本,存在存儲(chǔ)資源和計(jì)算資源有限的問題,導(dǎo)致在移動(dòng)設(shè)備上無法部署規(guī)模較大的網(wǎng)絡(luò),輕量級(jí)模型和模型壓縮是解決存儲(chǔ)限制和降低功耗的有效方法之一。

    5 結(jié)束語

    卷積神經(jīng)網(wǎng)絡(luò)需要大量的數(shù)據(jù)來保證較高的準(zhǔn)確率,所以計(jì)算速度在近年來一直是研究人員所關(guān)注的重點(diǎn),無論是自動(dòng)駕駛,還是醫(yī)學(xué)分析亦或其他的應(yīng)用領(lǐng)域,都需要快速地響應(yīng)處理,這都依賴于更快的計(jì)算速度。對(duì)卷積運(yùn)算進(jìn)行加速,無疑是一種對(duì)網(wǎng)絡(luò)模型進(jìn)行高度加速的有效途徑。前文論述的幾種快速卷積算法,各有利弊,很多時(shí)候研究人員使用的是這些算法的綜合變體算法,未來卷積加速工作的重心將會(huì)放在更小卷積核與更大的卷積圖像信息的卷積加速上,F(xiàn)FT的一些變體算法,以及Winograd的卷積核尺寸多變算法等將成為卷積加速研究的主流。

    猜你喜歡
    復(fù)雜度乘法運(yùn)算
    算乘法
    重視運(yùn)算與推理,解決數(shù)列求和題
    我們一起來學(xué)習(xí)“乘法的初步認(rèn)識(shí)”
    《整式的乘法與因式分解》鞏固練習(xí)
    有趣的運(yùn)算
    把加法變成乘法
    一種低復(fù)雜度的慣性/GNSS矢量深組合方法
    求圖上廣探樹的時(shí)間復(fù)雜度
    “整式的乘法與因式分解”知識(shí)歸納
    撥云去“誤”學(xué)乘除運(yùn)算
    天天添夜夜摸| 国产真人三级小视频在线观看| 国产亚洲av高清不卡| 日韩国内少妇激情av| 高潮久久久久久久久久久不卡| 亚洲国产精品久久男人天堂| 很黄的视频免费| 欧美色视频一区免费| 免费观看人在逋| 中文字幕人妻丝袜一区二区| 日本与韩国留学比较| 成人av一区二区三区在线看| 午夜两性在线视频| 国产精品亚洲美女久久久| 中文在线观看免费www的网站| 中出人妻视频一区二区| 99久久精品国产亚洲精品| bbb黄色大片| av女优亚洲男人天堂 | 国产精品99久久久久久久久| 久久精品国产综合久久久| 欧美最黄视频在线播放免费| 老司机福利观看| 成年女人毛片免费观看观看9| 欧美黄色淫秽网站| 久久久久久久精品吃奶| 热99在线观看视频| 色在线成人网| 午夜福利18| 久久国产乱子伦精品免费另类| 无遮挡黄片免费观看| 国产av在哪里看| av天堂在线播放| 日韩精品青青久久久久久| 此物有八面人人有两片| www.自偷自拍.com| 亚洲成人久久性| 人妻夜夜爽99麻豆av| 一区二区三区高清视频在线| 国产一区二区三区视频了| 久久香蕉精品热| 一二三四在线观看免费中文在| 国产毛片a区久久久久| 熟妇人妻久久中文字幕3abv| 久久精品国产综合久久久| 在线观看舔阴道视频| 亚洲国产欧美网| 国产亚洲精品综合一区在线观看| 国产亚洲精品综合一区在线观看| 国内精品久久久久精免费| 亚洲在线自拍视频| 国产精品永久免费网站| 欧美3d第一页| 中出人妻视频一区二区| 又爽又黄无遮挡网站| 在线观看日韩欧美| 国模一区二区三区四区视频 | 一级作爱视频免费观看| 99国产综合亚洲精品| 长腿黑丝高跟| 国产欧美日韩一区二区三| 亚洲欧美日韩无卡精品| 亚洲专区中文字幕在线| www日本在线高清视频| 无限看片的www在线观看| 精品久久久久久久人妻蜜臀av| 中文字幕最新亚洲高清| 精品久久久久久成人av| 亚洲一区高清亚洲精品| 国产成人av教育| 国产精品 国内视频| 90打野战视频偷拍视频| 18禁国产床啪视频网站| 999精品在线视频| 老汉色∧v一级毛片| 变态另类成人亚洲欧美熟女| 国产av麻豆久久久久久久| 法律面前人人平等表现在哪些方面| 国产v大片淫在线免费观看| 国产单亲对白刺激| 久久久久国产一级毛片高清牌| 成人鲁丝片一二三区免费| 桃色一区二区三区在线观看| 国产单亲对白刺激| 国产97色在线日韩免费| 非洲黑人性xxxx精品又粗又长| 男人和女人高潮做爰伦理| 国产精品精品国产色婷婷| 淫秽高清视频在线观看| 国产精品,欧美在线| 久久精品夜夜夜夜夜久久蜜豆| 美女午夜性视频免费| 亚洲成人精品中文字幕电影| 999精品在线视频| 国产99白浆流出| 亚洲电影在线观看av| 一二三四在线观看免费中文在| 亚洲成人免费电影在线观看| 欧美日韩黄片免| 久久精品91蜜桃| 亚洲国产高清在线一区二区三| 国产精品亚洲一级av第二区| 国产精品99久久99久久久不卡| 国产精品98久久久久久宅男小说| 一个人看的www免费观看视频| 国产激情欧美一区二区| 一本精品99久久精品77| 欧美黄色淫秽网站| 女警被强在线播放| 成人av在线播放网站| 后天国语完整版免费观看| 成年人黄色毛片网站| 夜夜爽天天搞| 欧美激情在线99| 狠狠狠狠99中文字幕| 久久久水蜜桃国产精品网| 97超视频在线观看视频| 国产精品一及| 在线免费观看的www视频| 婷婷六月久久综合丁香| 热99在线观看视频| 嫩草影视91久久| 日韩中文字幕欧美一区二区| 女同久久另类99精品国产91| 动漫黄色视频在线观看| 国产高清视频在线播放一区| 成人国产一区最新在线观看| 午夜福利在线在线| 欧美日本亚洲视频在线播放| 波多野结衣高清无吗| 欧美又色又爽又黄视频| 亚洲精品一区av在线观看| 日韩欧美国产一区二区入口| 日本与韩国留学比较| 少妇人妻一区二区三区视频| 国产精品av视频在线免费观看| 亚洲av美国av| 国产精品自产拍在线观看55亚洲| 香蕉丝袜av| 国产精品久久视频播放| 俺也久久电影网| 亚洲成av人片免费观看| 99热6这里只有精品| 久久草成人影院| 欧美中文综合在线视频| 精品一区二区三区av网在线观看| 中文字幕高清在线视频| 日本熟妇午夜| 国产亚洲精品久久久久久毛片| 日韩欧美 国产精品| 午夜影院日韩av| 在线永久观看黄色视频| www.999成人在线观看| 亚洲熟妇熟女久久| 亚洲狠狠婷婷综合久久图片| 精品久久久久久久末码| 欧美色视频一区免费| 欧美日韩亚洲国产一区二区在线观看| 国产高清videossex| 亚洲欧美日韩高清在线视频| 成人精品一区二区免费| 熟妇人妻久久中文字幕3abv| 亚洲电影在线观看av| 国产高清视频在线播放一区| 国产一区在线观看成人免费| 啦啦啦免费观看视频1| 小蜜桃在线观看免费完整版高清| 国产精品久久久久久久电影 | 午夜精品在线福利| 国产三级在线视频| 午夜福利在线观看免费完整高清在 | 啦啦啦免费观看视频1| 国产精品久久久人人做人人爽| 亚洲18禁久久av| 久久中文字幕一级| 日本a在线网址| 十八禁人妻一区二区| 99久久国产精品久久久| 99久久综合精品五月天人人| 午夜成年电影在线免费观看| 亚洲精品乱码久久久v下载方式 | 色综合欧美亚洲国产小说| 亚洲男人的天堂狠狠| 欧洲精品卡2卡3卡4卡5卡区| 一本精品99久久精品77| 国产探花在线观看一区二区| 欧美高清成人免费视频www| 色综合婷婷激情| 免费在线观看视频国产中文字幕亚洲| 国产精品98久久久久久宅男小说| 亚洲一区二区三区色噜噜| 亚洲精品一区av在线观看| 亚洲国产精品999在线| 黄片小视频在线播放| 国产黄a三级三级三级人| 51午夜福利影视在线观看| 母亲3免费完整高清在线观看| 国产精华一区二区三区| 无人区码免费观看不卡| 亚洲男人的天堂狠狠| 真实男女啪啪啪动态图| 窝窝影院91人妻| 亚洲自偷自拍图片 自拍| 夜夜看夜夜爽夜夜摸| 日韩欧美精品v在线| 九九久久精品国产亚洲av麻豆 | 亚洲欧美一区二区三区黑人| 欧美黑人巨大hd| 亚洲人成电影免费在线| 中出人妻视频一区二区| 亚洲人成网站高清观看| 中文资源天堂在线| 老司机在亚洲福利影院| 午夜福利高清视频| 色综合亚洲欧美另类图片| 成年女人永久免费观看视频| 在线观看美女被高潮喷水网站 | 国内毛片毛片毛片毛片毛片| 成年女人永久免费观看视频| 舔av片在线| 久久亚洲真实| 国产成人aa在线观看| 久久久国产成人精品二区| 看免费av毛片| 非洲黑人性xxxx精品又粗又长| 日本黄色片子视频| 啦啦啦观看免费观看视频高清| 国产精品99久久久久久久久| 日本熟妇午夜| 日本成人三级电影网站| 日本免费一区二区三区高清不卡| 欧美av亚洲av综合av国产av| 亚洲av美国av| 国产成人精品久久二区二区91| 亚洲精品美女久久久久99蜜臀| 国产精品免费一区二区三区在线| 成人特级av手机在线观看| 久久精品91无色码中文字幕| 国产欧美日韩一区二区精品| 精品无人区乱码1区二区| 一卡2卡三卡四卡精品乱码亚洲| 日本在线视频免费播放| 高潮久久久久久久久久久不卡| 国产精品av久久久久免费| 狂野欧美白嫩少妇大欣赏| 黑人巨大精品欧美一区二区mp4| www.精华液| 99国产精品99久久久久| 一区二区三区激情视频| 啦啦啦免费观看视频1| 国产成人福利小说| 69av精品久久久久久| av女优亚洲男人天堂 | 久久欧美精品欧美久久欧美| 亚洲美女视频黄频| 亚洲av第一区精品v没综合| 国产人伦9x9x在线观看| 少妇人妻一区二区三区视频| 午夜激情欧美在线| 国产精品久久久久久久电影 | xxxwww97欧美| 成人av一区二区三区在线看| 丝袜人妻中文字幕| 又黄又爽又免费观看的视频| 嫩草影院精品99| 成人18禁在线播放| 巨乳人妻的诱惑在线观看| 午夜精品久久久久久毛片777| 好看av亚洲va欧美ⅴa在| 美女高潮喷水抽搐中文字幕| 婷婷丁香在线五月| 亚洲欧美日韩无卡精品| 美女 人体艺术 gogo| 白带黄色成豆腐渣| 亚洲av电影在线进入| 男女那种视频在线观看| 国产伦精品一区二区三区视频9 | 亚洲av成人精品一区久久| 美女大奶头视频| 99在线视频只有这里精品首页| 亚洲欧美日韩东京热| 亚洲国产欧美人成| 亚洲欧美日韩高清在线视频| 色综合亚洲欧美另类图片| 夜夜夜夜夜久久久久| 国产一级毛片七仙女欲春2| 欧美激情在线99| 亚洲中文日韩欧美视频| 99在线人妻在线中文字幕| 午夜成年电影在线免费观看| 美女免费视频网站| e午夜精品久久久久久久| 日本黄大片高清| 99久久无色码亚洲精品果冻| 日韩国内少妇激情av| 国产一区二区激情短视频| 高清在线国产一区| 最新中文字幕久久久久 | 不卡一级毛片| 在线观看午夜福利视频| 精品福利观看| 日日干狠狠操夜夜爽| 麻豆一二三区av精品| 国产91精品成人一区二区三区| 久久久国产成人精品二区| 色哟哟哟哟哟哟| 国产精品 国内视频| 一本综合久久免费| 叶爱在线成人免费视频播放| 久久久久久久久中文| 长腿黑丝高跟| 精品久久久久久久久久免费视频| 香蕉av资源在线| 母亲3免费完整高清在线观看| 午夜福利成人在线免费观看| 一级毛片女人18水好多| 后天国语完整版免费观看| 日韩欧美精品v在线| 欧美性猛交╳xxx乱大交人| 午夜激情欧美在线| 可以在线观看毛片的网站| 亚洲色图av天堂| 在线永久观看黄色视频| 欧美成人性av电影在线观看| 欧美极品一区二区三区四区| 变态另类成人亚洲欧美熟女| 国产精品久久久人人做人人爽| 这个男人来自地球电影免费观看| 午夜久久久久精精品| 免费无遮挡裸体视频| 在线观看免费视频日本深夜| 成人av一区二区三区在线看| 成人特级av手机在线观看| 女警被强在线播放| 搡老熟女国产l中国老女人| 亚洲自拍偷在线| 欧美zozozo另类| 久久久久精品国产欧美久久久| 日本黄色视频三级网站网址| 五月玫瑰六月丁香| 国产美女午夜福利| 不卡av一区二区三区| 日本 av在线| 国产成人影院久久av| 夜夜躁狠狠躁天天躁| 国产三级中文精品| 1024香蕉在线观看| 亚洲精品乱码久久久v下载方式 | 亚洲美女视频黄频| 成人18禁在线播放| 1024香蕉在线观看| 国产精品一区二区免费欧美| 91麻豆精品激情在线观看国产| 熟女少妇亚洲综合色aaa.| 男女午夜视频在线观看| 又爽又黄无遮挡网站| 亚洲自拍偷在线| 日本黄色片子视频| 18禁黄网站禁片免费观看直播| 桃色一区二区三区在线观看| 久久人人精品亚洲av| 99热6这里只有精品| 国内少妇人妻偷人精品xxx网站 | 一区福利在线观看| 蜜桃久久精品国产亚洲av| 91av网一区二区| 国产成人欧美在线观看| 国产精品久久久av美女十八| 亚洲成a人片在线一区二区| 嫩草影视91久久| 欧美日韩福利视频一区二区| 日韩人妻高清精品专区| 中文字幕精品亚洲无线码一区| 欧美一区二区精品小视频在线| 午夜精品久久久久久毛片777| 悠悠久久av| 久久午夜亚洲精品久久| 不卡一级毛片| 国产成人aa在线观看| 免费在线观看影片大全网站| 99精品久久久久人妻精品| 老汉色∧v一级毛片| 小蜜桃在线观看免费完整版高清| 国产成人福利小说| 9191精品国产免费久久| 国产精品av久久久久免费| 亚洲一区二区三区不卡视频| 免费观看人在逋| 欧美日韩国产亚洲二区| 日本免费a在线| 国产成+人综合+亚洲专区| 欧美性猛交╳xxx乱大交人| 搡老熟女国产l中国老女人| 偷拍熟女少妇极品色| 韩国av一区二区三区四区| 听说在线观看完整版免费高清| 国产成人精品久久二区二区免费| 国产三级黄色录像| 亚洲无线观看免费| 69av精品久久久久久| 婷婷精品国产亚洲av| 亚洲国产欧美一区二区综合| h日本视频在线播放| 亚洲黑人精品在线| 变态另类成人亚洲欧美熟女| 99riav亚洲国产免费| 九九在线视频观看精品| 成年人黄色毛片网站| 国产一区二区三区视频了| 男人和女人高潮做爰伦理| 999精品在线视频| 精品一区二区三区视频在线 | 久久天堂一区二区三区四区| 精品久久久久久久久久久久久| 久久天堂一区二区三区四区| 亚洲av成人精品一区久久| 99在线人妻在线中文字幕| 小蜜桃在线观看免费完整版高清| 国产精品精品国产色婷婷| 两性午夜刺激爽爽歪歪视频在线观看| cao死你这个sao货| 国产视频一区二区在线看| 性色avwww在线观看| 日本黄大片高清| 18禁黄网站禁片午夜丰满| 日韩欧美国产一区二区入口| 日本撒尿小便嘘嘘汇集6| 999久久久国产精品视频| 国产日本99.免费观看| 国产三级在线视频| 人妻久久中文字幕网| 亚洲片人在线观看| 两个人看的免费小视频| 色综合站精品国产| 天天一区二区日本电影三级| 69av精品久久久久久| 99热这里只有精品一区 | 欧美日韩一级在线毛片| 亚洲精品在线观看二区| 一卡2卡三卡四卡精品乱码亚洲| 久久这里只有精品中国| 怎么达到女性高潮| 亚洲狠狠婷婷综合久久图片| 在线十欧美十亚洲十日本专区| 亚洲黑人精品在线| 日本黄大片高清| 在线免费观看不下载黄p国产 | 午夜久久久久精精品| 国产欧美日韩精品亚洲av| 日韩欧美在线乱码| 最近最新中文字幕大全免费视频| 亚洲国产高清在线一区二区三| 成人性生交大片免费视频hd| 男女午夜视频在线观看| 高清在线国产一区| 亚洲国产欧美人成| 无限看片的www在线观看| 夜夜爽天天搞| 国产午夜福利久久久久久| 亚洲人成电影免费在线| 国产野战对白在线观看| 欧美中文综合在线视频| 99精品欧美一区二区三区四区| 成人一区二区视频在线观看| 午夜亚洲福利在线播放| 网址你懂的国产日韩在线| a在线观看视频网站| 国产高潮美女av| 免费在线观看成人毛片| 草草在线视频免费看| 国产在线精品亚洲第一网站| 欧美一区二区国产精品久久精品| 日韩国内少妇激情av| 丝袜人妻中文字幕| 亚洲av成人不卡在线观看播放网| 91麻豆av在线| 精品乱码久久久久久99久播| 成人精品一区二区免费| 狠狠狠狠99中文字幕| 黑人巨大精品欧美一区二区mp4| 亚洲人成电影免费在线| 美女午夜性视频免费| 天堂影院成人在线观看| 女生性感内裤真人,穿戴方法视频| 搞女人的毛片| a在线观看视频网站| 又粗又爽又猛毛片免费看| 少妇的丰满在线观看| 国产免费av片在线观看野外av| 亚洲欧美日韩高清在线视频| 少妇裸体淫交视频免费看高清| 日本成人三级电影网站| 国产精品美女特级片免费视频播放器 | 国产又色又爽无遮挡免费看| 久久人妻av系列| 亚洲狠狠婷婷综合久久图片| av福利片在线观看| 午夜激情福利司机影院| 在线观看一区二区三区| 午夜精品一区二区三区免费看| 国产精品精品国产色婷婷| av福利片在线观看| 非洲黑人性xxxx精品又粗又长| 男女下面进入的视频免费午夜| 人妻丰满熟妇av一区二区三区| 成在线人永久免费视频| 黄色成人免费大全| 成人性生交大片免费视频hd| www日本黄色视频网| 久久人妻av系列| 国产精品自产拍在线观看55亚洲| 国产乱人伦免费视频| 成人性生交大片免费视频hd| 一a级毛片在线观看| 丰满人妻熟妇乱又伦精品不卡| 国产主播在线观看一区二区| 欧美中文综合在线视频| 草草在线视频免费看| 亚洲男人的天堂狠狠| avwww免费| 成人18禁在线播放| 亚洲18禁久久av| 国产1区2区3区精品| 一二三四社区在线视频社区8| 可以在线观看毛片的网站| 亚洲狠狠婷婷综合久久图片| 欧美乱色亚洲激情| 观看美女的网站| 搞女人的毛片| 国产成人精品久久二区二区91| 亚洲色图av天堂| 午夜福利视频1000在线观看| 国产一级毛片七仙女欲春2| 成人性生交大片免费视频hd| 亚洲av成人不卡在线观看播放网| 首页视频小说图片口味搜索| 色噜噜av男人的天堂激情| 色尼玛亚洲综合影院| 久久天堂一区二区三区四区| 国产精品永久免费网站| 男女下面进入的视频免费午夜| 欧美另类亚洲清纯唯美| 少妇丰满av| 欧美中文综合在线视频| 久久精品国产亚洲av香蕉五月| 欧美国产日韩亚洲一区| 男女做爰动态图高潮gif福利片| 校园春色视频在线观看| 男女下面进入的视频免费午夜| 欧洲精品卡2卡3卡4卡5卡区| 在线永久观看黄色视频| 观看免费一级毛片| 一二三四社区在线视频社区8| 99精品在免费线老司机午夜| 久久久久久久午夜电影| 久久精品国产综合久久久| 成在线人永久免费视频| 91九色精品人成在线观看| 日本免费a在线| 色老头精品视频在线观看| 最近最新免费中文字幕在线| 一区二区三区激情视频| 99在线视频只有这里精品首页| 神马国产精品三级电影在线观看| 中文字幕最新亚洲高清| 观看美女的网站| 每晚都被弄得嗷嗷叫到高潮| 欧洲精品卡2卡3卡4卡5卡区| 最近视频中文字幕2019在线8| 女同久久另类99精品国产91| 精品久久久久久,| 男女那种视频在线观看| 岛国在线免费视频观看| 久久久久久九九精品二区国产| 日本在线视频免费播放| 俄罗斯特黄特色一大片| 日本黄色视频三级网站网址| 亚洲欧美精品综合久久99| 亚洲熟妇熟女久久| av福利片在线观看| 亚洲一区高清亚洲精品| 亚洲18禁久久av| 激情在线观看视频在线高清| 狂野欧美白嫩少妇大欣赏| 18禁国产床啪视频网站| 亚洲专区字幕在线| 亚洲人成电影免费在线| 亚洲激情在线av| 国产午夜精品论理片| 国产淫片久久久久久久久 | 又黄又爽又免费观看的视频| 热99re8久久精品国产| 国产精品久久久人人做人人爽| netflix在线观看网站| 欧美成狂野欧美在线观看| 一区福利在线观看| 国产熟女xx| 麻豆成人午夜福利视频| 日韩欧美一区二区三区在线观看| 国产熟女xx| 一级作爱视频免费观看| 男女做爰动态图高潮gif福利片| 欧美日韩国产亚洲二区| 成人性生交大片免费视频hd| 免费av毛片视频| 久久精品亚洲精品国产色婷小说| 在线观看日韩欧美| 丰满的人妻完整版| 一本综合久久免费| 操出白浆在线播放| 色吧在线观看| 亚洲最大成人中文| 免费在线观看亚洲国产| 国产欧美日韩精品亚洲av| 久久国产精品影院|