• <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高清一级| 狠狠婷婷综合久久久久久88av| 电影成人av| 在线看a的网站| 精品人妻熟女毛片av久久网站| 国产在线免费精品| 香蕉丝袜av| 久久亚洲真实| 在线观看免费日韩欧美大片| 久久久国产成人免费| 极品人妻少妇av视频| 精品久久蜜臀av无| 国产精品一区二区在线不卡| 国产精品电影一区二区三区 | 大片免费播放器 马上看| 亚洲va日本ⅴa欧美va伊人久久| 欧美精品亚洲一区二区| av视频免费观看在线观看| 国产福利在线免费观看视频| 国产单亲对白刺激| 手机成人av网站| 免费少妇av软件| 中文字幕人妻丝袜制服| 一级片'在线观看视频| 一本大道久久a久久精品| 老熟女久久久| 国产成人精品在线电影| 亚洲伊人久久精品综合| 精品久久久精品久久久| 亚洲第一av免费看| 纵有疾风起免费观看全集完整版| 黑人猛操日本美女一级片| 色婷婷久久久亚洲欧美| 天天影视国产精品| av超薄肉色丝袜交足视频| 欧美成人免费av一区二区三区 | 国产精品国产高清国产av | 国产欧美亚洲国产| 国产麻豆69| 免费一级毛片在线播放高清视频 | 老司机午夜福利在线观看视频 | 人人妻人人爽人人添夜夜欢视频| 男女下面插进去视频免费观看| 国产成人一区二区三区免费视频网站| 亚洲精品中文字幕一二三四区 | 欧美av亚洲av综合av国产av| 真人做人爱边吃奶动态| 日本黄色日本黄色录像| 黄色视频不卡| av有码第一页| 亚洲视频免费观看视频| 欧美黑人精品巨大| 国产精品九九99| 性色av乱码一区二区三区2| 中亚洲国语对白在线视频| 久久久国产成人免费| 中文字幕色久视频| 青青草视频在线视频观看| 天天躁日日躁夜夜躁夜夜| 国产精品98久久久久久宅男小说| 黄色 视频免费看| 久久国产精品男人的天堂亚洲| 国产高清激情床上av| 69av精品久久久久久 | 免费黄频网站在线观看国产| 中文字幕另类日韩欧美亚洲嫩草| 最新在线观看一区二区三区| 777久久人妻少妇嫩草av网站| avwww免费| 久久亚洲真实| 亚洲精品久久午夜乱码| 国产深夜福利视频在线观看| 亚洲欧美一区二区三区黑人| 国产片内射在线| 亚洲精品成人av观看孕妇| kizo精华| 国产极品粉嫩免费观看在线| 国产成人精品久久二区二区免费| 国产真人三级小视频在线观看| 亚洲一码二码三码区别大吗| 成人18禁高潮啪啪吃奶动态图| 在线观看免费视频日本深夜| 日韩三级视频一区二区三区| 久久久久久亚洲精品国产蜜桃av| 欧美精品亚洲一区二区| 成年人免费黄色播放视频| 18禁黄网站禁片午夜丰满| 成人精品一区二区免费| 在线观看人妻少妇| 性色av乱码一区二区三区2| av网站在线播放免费| 亚洲色图av天堂| 日韩欧美一区视频在线观看| 亚洲色图 男人天堂 中文字幕| xxxhd国产人妻xxx| 91成人精品电影| 久久人妻熟女aⅴ| 久久久国产一区二区| 变态另类成人亚洲欧美熟女 | 国产在线免费精品| 亚洲综合色网址| 一边摸一边抽搐一进一出视频| 亚洲精品久久成人aⅴ小说| 中国美女看黄片| 美女扒开内裤让男人捅视频| 亚洲精品国产区一区二| 女性生殖器流出的白浆| 狂野欧美激情性xxxx| 一边摸一边抽搐一进一出视频| 国产免费av片在线观看野外av| 亚洲人成电影观看| 黑人操中国人逼视频| 少妇精品久久久久久久| 国产成人影院久久av| 亚洲精品国产色婷婷电影| 丰满饥渴人妻一区二区三| 19禁男女啪啪无遮挡网站| 午夜老司机福利片| 搡老熟女国产l中国老女人| 亚洲第一av免费看| 波多野结衣一区麻豆| 91精品国产国语对白视频| 亚洲伊人色综图| 肉色欧美久久久久久久蜜桃| 亚洲欧洲精品一区二区精品久久久| 超碰97精品在线观看| 国产精品九九99| 国产区一区二久久| 亚洲三区欧美一区| 99精国产麻豆久久婷婷| 国产人伦9x9x在线观看| 涩涩av久久男人的天堂| 高清毛片免费观看视频网站 | 别揉我奶头~嗯~啊~动态视频| 一区二区三区国产精品乱码| 国产主播在线观看一区二区| 精品国产乱码久久久久久小说| 亚洲av成人一区二区三| 国产欧美日韩一区二区三| 国产欧美日韩一区二区精品| 一区二区三区乱码不卡18| 精品一区二区三卡| 欧美人与性动交α欧美精品济南到| 久久 成人 亚洲| 欧美av亚洲av综合av国产av| 美女高潮喷水抽搐中文字幕| 涩涩av久久男人的天堂| 捣出白浆h1v1| 中文字幕人妻熟女乱码| 正在播放国产对白刺激| 一级黄色大片毛片| 日韩制服丝袜自拍偷拍| 亚洲人成77777在线视频| 免费不卡黄色视频| 少妇猛男粗大的猛烈进出视频| 老汉色∧v一级毛片| 高清视频免费观看一区二区| 欧美乱妇无乱码| 国产精品一区二区免费欧美| 成人精品一区二区免费| 久久久精品区二区三区| 老熟女久久久| 人妻一区二区av| 中文字幕另类日韩欧美亚洲嫩草| e午夜精品久久久久久久| 捣出白浆h1v1| 国产男女超爽视频在线观看| e午夜精品久久久久久久| 两性午夜刺激爽爽歪歪视频在线观看 | 男女午夜视频在线观看| 亚洲国产精品一区二区三区在线| 多毛熟女@视频| 日韩中文字幕欧美一区二区| 99国产精品免费福利视频| bbb黄色大片| 免费在线观看视频国产中文字幕亚洲| 日韩 欧美 亚洲 中文字幕| 一级,二级,三级黄色视频| 国产精品一区二区免费欧美| 18禁观看日本| 精品国产乱码久久久久久男人| 69精品国产乱码久久久| 国产精品一区二区免费欧美| 亚洲专区字幕在线| 在线观看一区二区三区激情| 一二三四社区在线视频社区8| 久久亚洲真实| 久久久精品94久久精品| 精品一区二区三区视频在线观看免费 | 国产精品二区激情视频| 亚洲av国产av综合av卡| xxxhd国产人妻xxx| 国产亚洲精品第一综合不卡| 99国产精品一区二区蜜桃av | svipshipincom国产片| 中文字幕高清在线视频| 狠狠精品人妻久久久久久综合| 国产精品九九99| 99热网站在线观看| 成年版毛片免费区| 国产一卡二卡三卡精品| 午夜福利在线观看吧| 国产熟女午夜一区二区三区| 日本vs欧美在线观看视频| 99香蕉大伊视频| av天堂久久9| 国产成人av激情在线播放| 在线观看66精品国产| 久热这里只有精品99| 亚洲国产精品一区二区三区在线| 狂野欧美激情性xxxx| 欧美乱码精品一区二区三区| 少妇粗大呻吟视频| 欧美激情极品国产一区二区三区| 99精品久久久久人妻精品| 50天的宝宝边吃奶边哭怎么回事| 在线观看免费视频网站a站| 在线观看免费午夜福利视频| 女同久久另类99精品国产91| 久久精品国产亚洲av高清一级| 精品少妇久久久久久888优播| 亚洲美女黄片视频| 欧美日韩福利视频一区二区| 黑人巨大精品欧美一区二区mp4| 国产精品一区二区在线观看99| 国产高清videossex| 日韩欧美国产一区二区入口| 国产欧美日韩一区二区精品| 国产日韩欧美视频二区| 高清黄色对白视频在线免费看| 国产99久久九九免费精品| 精品视频人人做人人爽| 一本色道久久久久久精品综合| 动漫黄色视频在线观看| 1024视频免费在线观看| 久久精品亚洲精品国产色婷小说| 亚洲熟妇熟女久久| 国产一区二区 视频在线| 免费黄频网站在线观看国产| 亚洲熟女精品中文字幕| 欧美成人午夜精品| 满18在线观看网站| 夜夜骑夜夜射夜夜干| 亚洲成av片中文字幕在线观看| 亚洲综合色网址| 91字幕亚洲| 中亚洲国语对白在线视频| 精品国产国语对白av| 深夜精品福利| 国产片内射在线| 天天躁狠狠躁夜夜躁狠狠躁| 黄色片一级片一级黄色片| 久热爱精品视频在线9| 亚洲性夜色夜夜综合| 最新美女视频免费是黄的| 免费少妇av软件| 国产精品美女特级片免费视频播放器 | av有码第一页| 精品少妇久久久久久888优播| 日韩精品免费视频一区二区三区| 亚洲免费av在线视频| 亚洲国产欧美日韩在线播放| 亚洲人成电影观看| 一级黄色大片毛片| 一级片免费观看大全| 欧美日韩国产mv在线观看视频| 99精品欧美一区二区三区四区| 午夜激情久久久久久久| 精品亚洲成a人片在线观看| 18在线观看网站| 欧美精品啪啪一区二区三区| 极品教师在线免费播放| 亚洲国产欧美网| 99re6热这里在线精品视频| 国产精品免费大片| 在线观看一区二区三区激情| 在线av久久热| 国产在线一区二区三区精| 久久午夜亚洲精品久久| 黄网站色视频无遮挡免费观看| 亚洲欧美一区二区三区黑人| 中文字幕精品免费在线观看视频| 成在线人永久免费视频| 真人做人爱边吃奶动态| 久久久水蜜桃国产精品网| 色尼玛亚洲综合影院| 亚洲成人免费av在线播放| 欧美日韩福利视频一区二区| 美女视频免费永久观看网站| 久久精品亚洲av国产电影网| 亚洲三区欧美一区| 高清毛片免费观看视频网站 | svipshipincom国产片| 天天躁狠狠躁夜夜躁狠狠躁| 在线av久久热| 免费黄频网站在线观看国产| 成人国产av品久久久| 男人操女人黄网站| 激情视频va一区二区三区| 母亲3免费完整高清在线观看| av电影中文网址| 成人免费观看视频高清| 国精品久久久久久国模美| 国产伦理片在线播放av一区| 久久人妻av系列| 久久久精品免费免费高清| 成人国语在线视频| 99国产极品粉嫩在线观看| 久久久国产成人免费| 欧美性长视频在线观看| 51午夜福利影视在线观看| 热re99久久国产66热| 捣出白浆h1v1| 久久青草综合色| 欧美午夜高清在线| 老司机福利观看| 久久人人97超碰香蕉20202| 男人操女人黄网站| 黄色 视频免费看| 国产黄频视频在线观看| av免费在线观看网站| 肉色欧美久久久久久久蜜桃| 两性午夜刺激爽爽歪歪视频在线观看 | 久久久精品区二区三区| 国产精品偷伦视频观看了| 国产精品免费视频内射| 男女下面插进去视频免费观看| 我要看黄色一级片免费的| 亚洲性夜色夜夜综合| 男男h啪啪无遮挡| www.999成人在线观看| 成人18禁高潮啪啪吃奶动态图| 人妻 亚洲 视频| 精品午夜福利视频在线观看一区 | 国产国语露脸激情在线看| 久久久久久免费高清国产稀缺| 久久精品成人免费网站| 黑人巨大精品欧美一区二区mp4| 久久久久久久久久久久大奶| 水蜜桃什么品种好| 精品福利永久在线观看| 一二三四在线观看免费中文在| 69av精品久久久久久 | 免费人妻精品一区二区三区视频| 动漫黄色视频在线观看| 亚洲熟女精品中文字幕| 999久久久精品免费观看国产| 啪啪无遮挡十八禁网站| 黄色成人免费大全| 欧美亚洲 丝袜 人妻 在线| 在线观看66精品国产| 男女边摸边吃奶| 97人妻天天添夜夜摸| 满18在线观看网站| 水蜜桃什么品种好| 汤姆久久久久久久影院中文字幕| 中文亚洲av片在线观看爽 | 丰满人妻熟妇乱又伦精品不卡| h视频一区二区三区| 国产激情久久老熟女| 男女无遮挡免费网站观看| 亚洲精品乱久久久久久| 在线观看一区二区三区激情| 国产男女内射视频| 80岁老熟妇乱子伦牲交| 久久人妻av系列| 人妻一区二区av| 黄片播放在线免费| 一二三四社区在线视频社区8| 淫妇啪啪啪对白视频| 美女高潮喷水抽搐中文字幕| av国产精品久久久久影院| 成年人免费黄色播放视频| 99精品在免费线老司机午夜| 国产精品.久久久| 日日夜夜操网爽| 国产午夜精品久久久久久| 日日爽夜夜爽网站| 黑丝袜美女国产一区| 亚洲午夜理论影院| 国产伦人伦偷精品视频| 国产老妇伦熟女老妇高清| 狠狠狠狠99中文字幕| 岛国在线观看网站| 中国美女看黄片| 午夜两性在线视频| 69精品国产乱码久久久| 亚洲av成人不卡在线观看播放网| 国产一区二区在线观看av| 亚洲少妇的诱惑av| 精品午夜福利视频在线观看一区 | 日本撒尿小便嘘嘘汇集6| 涩涩av久久男人的天堂| 婷婷丁香在线五月| 国产av一区二区精品久久| 亚洲欧洲精品一区二区精品久久久| 国产91精品成人一区二区三区 | 国产精品av久久久久免费| 午夜日韩欧美国产| 免费观看人在逋| 不卡av一区二区三区| 国产成人精品无人区| 欧美精品亚洲一区二区| 成人手机av| 飞空精品影院首页| 久久这里只有精品19| 精品亚洲成a人片在线观看| 狂野欧美激情性xxxx| 亚洲成人免费av在线播放| 欧美一级毛片孕妇| 亚洲视频免费观看视频| 精品国内亚洲2022精品成人 | 母亲3免费完整高清在线观看| 少妇 在线观看| 黄片大片在线免费观看| 国产欧美日韩一区二区三区在线| av片东京热男人的天堂| 久久国产精品男人的天堂亚洲| 欧美中文综合在线视频| 免费在线观看完整版高清| 青青草视频在线视频观看| 国产午夜精品久久久久久| 亚洲av成人一区二区三| 亚洲一码二码三码区别大吗| 午夜两性在线视频| 久久久国产成人免费| 国产深夜福利视频在线观看| 欧美一级毛片孕妇| 亚洲视频免费观看视频| 99精品在免费线老司机午夜| 丝袜美腿诱惑在线| 手机成人av网站| 欧美亚洲 丝袜 人妻 在线| 亚洲,欧美精品.| 亚洲欧洲日产国产| 亚洲av美国av| 99国产精品99久久久久| 亚洲精品中文字幕一二三四区 | 中文字幕人妻熟女乱码| 在线观看人妻少妇| 丰满人妻熟妇乱又伦精品不卡| 高清视频免费观看一区二区| 大片免费播放器 马上看| 国产伦人伦偷精品视频| 亚洲精品成人av观看孕妇| 久9热在线精品视频| 国产深夜福利视频在线观看| av网站在线播放免费| 国产欧美日韩一区二区三| 看免费av毛片| 大陆偷拍与自拍| 一边摸一边抽搐一进一出视频| 汤姆久久久久久久影院中文字幕| 男人舔女人的私密视频| 一本色道久久久久久精品综合| 日韩欧美一区视频在线观看| 亚洲精品久久午夜乱码| 日韩欧美免费精品| 下体分泌物呈黄色| 后天国语完整版免费观看| 亚洲全国av大片| 欧美黄色淫秽网站| kizo精华| 精品少妇内射三级| 最近最新中文字幕大全免费视频| 丰满饥渴人妻一区二区三| 午夜老司机福利片| av欧美777| 人人妻人人添人人爽欧美一区卜| 免费高清在线观看日韩| 九色亚洲精品在线播放| 亚洲一卡2卡3卡4卡5卡精品中文| 无遮挡黄片免费观看| √禁漫天堂资源中文www| 99国产精品免费福利视频| 9191精品国产免费久久| a级毛片在线看网站| 黄色 视频免费看| 女人精品久久久久毛片| 国产欧美日韩一区二区三| 日日摸夜夜添夜夜添小说| 国产亚洲精品久久久久5区| 麻豆成人av在线观看| 在线观看免费午夜福利视频| 久久国产精品男人的天堂亚洲| 最近最新中文字幕大全电影3 | 人成视频在线观看免费观看| 亚洲精品在线美女| 国产97色在线日韩免费| 国产精品国产av在线观看| 久久青草综合色| 中文字幕人妻丝袜制服| 日韩中文字幕欧美一区二区| 99久久精品国产亚洲精品| 国产精品香港三级国产av潘金莲| 50天的宝宝边吃奶边哭怎么回事| 少妇裸体淫交视频免费看高清 | 咕卡用的链子| 久久久久久久久久久久大奶| 中文字幕制服av| 精品欧美一区二区三区在线| 亚洲av美国av| 亚洲专区字幕在线| 亚洲国产欧美一区二区综合| 天天躁夜夜躁狠狠躁躁| 国产精品久久电影中文字幕 | 中文字幕人妻丝袜制服| 国产亚洲一区二区精品| 久久久久久亚洲精品国产蜜桃av| 国产91精品成人一区二区三区 | 一级,二级,三级黄色视频| 日韩免费av在线播放| 日韩中文字幕视频在线看片| 国产精品二区激情视频| 老司机深夜福利视频在线观看| 夜夜爽天天搞| 亚洲 国产 在线| 亚洲欧洲日产国产| videosex国产| 97人妻天天添夜夜摸| 亚洲人成电影免费在线| 在线观看免费视频网站a站| 日日夜夜操网爽| 99国产精品一区二区蜜桃av | 国产亚洲欧美在线一区二区| 老司机在亚洲福利影院| 视频区图区小说| 国产高清激情床上av| 免费一级毛片在线播放高清视频 | 亚洲国产成人一精品久久久| 午夜激情久久久久久久| 亚洲精品粉嫩美女一区| 成年版毛片免费区| 99久久国产精品久久久| 日韩欧美一区视频在线观看| 午夜福利视频精品| 色精品久久人妻99蜜桃| 99国产极品粉嫩在线观看| 亚洲欧洲精品一区二区精品久久久| 一个人免费在线观看的高清视频| 变态另类成人亚洲欧美熟女 | 午夜福利欧美成人| 丁香六月欧美| 久久免费观看电影| 人人妻,人人澡人人爽秒播| 亚洲精品国产色婷婷电影| 国产一区二区三区在线臀色熟女 | 黑人操中国人逼视频| 最新的欧美精品一区二区| 免费看a级黄色片| 丰满迷人的少妇在线观看| 肉色欧美久久久久久久蜜桃| 亚洲成人免费电影在线观看| 亚洲成a人片在线一区二区| 日韩欧美三级三区| 亚洲va日本ⅴa欧美va伊人久久| 成人黄色视频免费在线看| 国产日韩欧美在线精品| 日日爽夜夜爽网站| 亚洲一区二区三区欧美精品| 欧美+亚洲+日韩+国产| 伦理电影免费视频| 国产精品av久久久久免费| 亚洲精品在线美女| 少妇的丰满在线观看| 99在线人妻在线中文字幕 | 国产又爽黄色视频| 国产aⅴ精品一区二区三区波| 少妇裸体淫交视频免费看高清 | 十分钟在线观看高清视频www| kizo精华| 黑人操中国人逼视频| 18在线观看网站| 少妇精品久久久久久久| 精品国内亚洲2022精品成人 | 精品国产乱码久久久久久小说| 久久久精品免费免费高清| 在线观看舔阴道视频| 两性夫妻黄色片| 国产淫语在线视频| 色播在线永久视频| 成人手机av| 久久精品熟女亚洲av麻豆精品| 精品少妇内射三级| 国产精品偷伦视频观看了| 国产真人三级小视频在线观看| 在线观看免费高清a一片| 汤姆久久久久久久影院中文字幕| 国产精品久久久av美女十八| 久久青草综合色| 中亚洲国语对白在线视频| 涩涩av久久男人的天堂| 看免费av毛片| 男女边摸边吃奶| 日韩成人在线观看一区二区三区| 窝窝影院91人妻| 久久久久国内视频| 天天影视国产精品| 国产成人精品久久二区二区免费| 久久精品亚洲av国产电影网| 国产淫语在线视频| 亚洲欧美一区二区三区久久| 亚洲熟女精品中文字幕| 国产av一区二区精品久久| 夜夜骑夜夜射夜夜干| 免费在线观看黄色视频的| 宅男免费午夜| 久久久久网色| 99久久精品国产亚洲精品| 捣出白浆h1v1| 又紧又爽又黄一区二区| 亚洲成国产人片在线观看| 黄色视频不卡|