999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用KL散度度量通道冗余度的深度神經網絡剪枝方法

2021-11-15 11:49:02袁曉彤
計算機應用與軟件 2021年11期
關鍵詞:方法模型

楊 鑫 袁曉彤

1(南京信息工程大學自動化學院 江蘇 南京 210044) 2(江蘇省大數據分析技術重點實驗室大氣環境與裝備技術協同創新中心 江蘇 南京 210044)

0 引 言

卷積神經網絡(Convolutional Neural Network, CNN)的成功通常伴隨著一些問題,如占用內存過大、計算成本過高等,而往往參數數目超過1億的深度神經網絡所需要的計算成本更高,這個問題阻礙了很多實際應用的實施,特別是基于便攜式設備和手機端的應用。以經典的VGG16[1]為例,它擁有高達1.3億的參數數量,且占用了超過500 MB的存儲空間,僅運行VGG16網絡進行圖像識別這一功能就需要完成309億個浮點運算(FLOPs),這些都在嚴重制約著深度神經網絡在實際生活中的應用。

近年來,越來越多的研究人員加入到深度神經網絡的加速與壓縮的行列中,他們提出了各種新穎的算法,在追求模型性能優越的同時,盡可能地降低模型復雜度,追求性能與資源損耗的平衡。很多網絡壓縮方法的總結[2-3]將壓縮方法進行了分類,大體上可以分為以下幾種方法:低秩近似[4]、權重剪枝[5-7]、參數量化[6]、二值化網絡[8]、知識蒸餾[9-11]、緊湊卷積濾波器設計[12]和通道剪枝[13-21]等。剪枝是實現網絡壓縮一種較為直接而且有效的方法,目前大多數剪枝算法都是先訓練一個大型的復雜預訓練模型,然后對這個模型進行剪枝,從而得到一個性能不錯且較為緊湊的小模型。

本文采用結構化剪枝方法,利用KL散度定義通道的重要因子,根據重要因子對CNN的每層卷積層逐層進行通道剪枝,從而達到減少網絡參數數量和FLOPs的目的。Li等[13]和Liu等[18]采用硬剪枝方法,驗證了基于范數剪枝標準的通道剪枝方法有效性,而He等[17]從迭代軟剪枝的角度證明了范數標準的通用性。本文對比了基于范數標準的方法,發現通道之間存在著差異性,保留不同的通道是至關重要的,且實驗表明在CIFAR-10上剪枝ResNet,基于KL散度的剪枝標準優于其他方法,不僅如此,在CIFAR-100這樣稍復雜的數據集上,表現也不錯。本文還發現越深的網絡存在著越多的通道冗余,往往更加需要網絡壓縮來減少計算開銷。同時在增加剪枝率的情況下,網絡性能并未下降太多,而在剪枝率過大的時候,精度下降則會變得嚴重。平衡好剪枝率與性能的關系才能在減少占用內存和浮點運算的同時,還可以提高網絡的魯棒性。本文的實驗代碼與模型都可以在Github上下載。

1 相關工作

隨著CNN深度的加深,大量的研究人員研究了很多不同的算法來加速和壓縮CNN模型,這些算法會以很多指標作為壓縮的標準,比如降低的內存、減少的浮點運算、加速推理的速度等。根據對網絡結構的破壞程度,本文將目前壓縮算法分為非結構化壓縮方法和結構化壓縮方法。

首先,非結構化壓縮方法分為以下幾種方法:低秩近似[4]、權重剪枝[5-7]、參數量化[6]和二值化網絡[8]等。Denton等[4]利用了幾種基于奇異值分解的張量分解方法,并通過低秩近似權重矩陣來壓縮卷積層,可以很大程度上減少所需的計算資源。Han等[5]提出了一種分為三個步驟的權重剪枝方法。首先,通過正常的網絡訓練找出“重要的”權重連接,然后刪除“不重要的”權重連接,最后對剪枝后的稀疏網絡進行微調,直到更好地達到性能和計算開銷的平衡。為了進一步地壓縮網絡,Han等[6]繼續采用霍夫曼編碼來量化剪枝后的權重,這使得剪枝后的網絡得到了最大程度上的壓縮和加速。文獻[5-6]的方法是在訓練過程結束后進行剪枝操作的,而Jin等[7]則提出了迭代硬閾值的方法來提升深度神經網絡的性能,主要分為兩個步驟來執行,先使用硬閾值方法將一些權重小于閾值的連接置為0,對保留的有效連接進行微調,然后再重新激活置0的連接,可以大大減少網絡參數量的大小。Rastegari等[8]提出了兩種二值化網絡:Binary weight network和XNOR-Nets,主要是通過對權重進行二值化操作,達到減少模型存儲的目的,同時可以加速模型。參數量化和二值化網絡大多旨在最大限度地減小網絡規模,會很大程度上改變網絡原本的結構,且需要特殊的硬件來實現加速功能。

結構化壓縮的方法不會破壞原來的網絡結構,主要包括:知識蒸餾[9-11]、緊湊卷積濾波器設計[12]和通道剪枝[13-21]等。CNN主要是從數據集中提取特征來完成分類、識別、預測和分割等任務,在這個環節中提取特征是非常重要的,特征能直接影響到網絡最終的性能,而越深的神經網絡往往能提取出更魯棒的特征,知識蒸餾也就應運而生了。Hinton等[9]提出了將一個大模型作為教師網絡,將一個小模型作為學生網絡,讓學生網絡從教師網絡中蒸餾知識,即用學生網絡的分類概率去逼近教師網絡的分類概率,Yang等[11]也使用了知識蒸餾來提升小網絡的性能。通道剪枝則是另一種較為常見的結構化壓縮方法,這些方法大體上分為兩種:(1) 采用三步驟剪枝方法,先訓練好網絡,然后對網絡剪枝,最后通過微調來提升準確率。如:Li等[13]利用L1范數作為剪枝標準,認為通道權重的L1范數較小的為不重要通道,那么去除后對于網絡最終的結果不會有很大影響。He等[15]則是用LASSO回歸來選擇通道,并用剩下的通道與原始網絡進行誤差重構,使得剪枝后的網絡與剪枝前的網絡輸出特征映射盡量相似,這樣經過微調后剪枝網絡的性能也不會下降太多。(2) 采用軟剪枝的方法,在訓練的過程中通過剪枝標準將不重要通道的權重置0,訓練結束后再進行網絡重構得到剪枝后的網絡。如:He等[16]用L2范數作為剪枝的標準,在訓練的每次迭代中將權重范數較小的通道置0,在迭代更新參數的時候還允許置0通道進行更新,讓網絡在訓練過程中選擇剪枝通道。接下來的工作中,He等[17]還提出了通道之間存在冗余,用歐氏距離來判斷通道能否被其他通道所代替,從很大程度上減少了通道的冗余且極大地減少了浮點運算。靳麗蕾等[21]則將卷積核剪枝和權重剪枝結合起來,混合剪枝CNN,還利用最小化重構誤差來提升網絡的性能。隨著網絡剪枝的發展,網絡結構搜索與自動機器學習逐漸流行起來,Liu等[18]總結了幾種最先進的剪枝算法,提出了為了獲得一個有效的小網絡去訓練一個參數過多的大網絡是不必要的,剪枝算法可以被認為是在搜索有效的網絡結構。由于手工剪枝算法耗費很多的人力與時間,He等[19]提出用強化學習來學習如何剪枝,當準確率上升或下降時用獎勵懲罰機制去訓練自動機器學習工具。目前網絡結構搜索和自動機器學習已經成為熱門研究課題,網絡結構搜索旨在搜索魯棒的遷移性能優越的網絡結構塊,而剪枝標準則可以成為搜索通道的標準。

基于以上結構化剪枝的啟發,不同于使用L1范數衡量通道的重要性,本文提出利用KL散度去衡量通道之間的差異性,如果一個通道與另一個通道的分布比較接近,那就可以說明這兩個通道可以彼此替換,刪去其中一個對最終性能可能影響并不大。而KL散度正好可以表示兩個分布之間的相似度,即KL散度越大說明這兩個通道差異性越大,所以本文利用KL散度去除差異性較小的通道,實現對CNN模型的壓縮與加速。

2 基于KL散度的通道剪枝方法

如今CNN的應用主要受到以下兩個方面的制約:(1) 時間復雜度,即模型的運算次數(FLOPs),主要包括單個卷積層和CNN整體的時間復雜度,時間復雜度決定了模型的訓練以及預測時間,如果復雜度過高,則會導致模型訓練和預測耗費大量時間,既無法快速地驗證想法和改善模型,也無法做到快速的預測。(2) 空間復雜度,主要包括參數數量以及模型在實際運行時每層計算的輸出特征圖大小,空間復雜度決定了模型的參數數量,由于維度的限制,模型的參數越多,訓練模型所需的數據量就越大,這些參數以及網絡結構信息都需要存儲在磁盤上面,占用過大的磁盤存儲空間對于嵌入式設備來說是一個巨大的資源負擔。

通道剪枝的原理是通過某一衡量標準來裁剪不符合要求的通道,減少了卷積通道數目在不改變網絡原始結構的基礎上,還可以減少模型占用內存和FLOPs,進一步提升網絡的推理速度。但是對預訓練的網絡直接進行通道剪枝會帶來一定準確率的下降,這是不可避免的。本文采用硬剪枝方法,對一個預訓練模型直接進行剪枝重構網絡,這種方式較為暴力,往往會造成精度的急劇下降,所以對硬剪枝過后的網絡進行微調,即在較低學習率的情況下,利用數據集再次訓練重構之后的網絡,允許保留的網絡參數進行更新,經過適當的迭代后,剪枝網絡的性能會與原始網絡的性能相差無幾。利用KL散度選擇出重要因子較小的通道并剪枝,然后微調剪枝網絡,直到達到性能和計算開銷上較好的平衡。

2.1 CNN剪枝框架

首先訓練一個性能優越的大網絡,對預訓練網絡的每一層卷積層的通道分別計算KL散度;然后通過每個通道的KL散度來判斷在當前卷積層中與其他通道的差異性,即KL散度大的通道則是不可替代的,而KL散度小的通道與其他通道差異性較小則可以裁剪掉,根據這一方法,CNN的每一層卷積層按照一定的剪枝率剪枝完成后,便可得到剪枝后的模型;最后將剪枝后的網絡進行微調,最終能得到性能優越的小模型,小模型不僅推理速度更快,而且擁有較少的參數量和FLOPs。根據KL散度進行通道剪枝的整體框架如圖1所示。

圖1 基于KL散度的通道剪枝框架

2.2 KL散度

KL散度又叫作相對熵,是描述兩個概率分布P與Q之間差異的一種方法,可以用來衡量一個分布偏離另一個分布的程度,若兩個分布完全一樣,則它們之間的散度為0,當KL散度越小的時候,兩個分布越接近。

首先假設兩個離散概率分布分別為P與Q,那么兩者的KL散度為:

(1)

卷積層的每個通道權重并不是一個離散概率分布,所以本文將每個通道權重進行規范化,即將通道權重進行歸一化,從而獲得通道權重的離散概率分布。具體實施是先對單個通道權重取絕對值,繼而累加起來,然后除以總和,最后可以得到每個通道權重的離散概率分布。

2.3 利用KL散度進行通道選擇

現階段很多研究人員提出了很多不同的剪枝標準來衡量通道的重要性,比較熱門的是用基于范數的通道選擇,基于范數的剪枝標準[13,16,18]認為通道權重范數較大可以認定為是重要通道,即這些通道對于最終結果具有很大影響,相反權重范數較小的通道則沒有太大影響,實驗也表明剪枝權重范數較小的通道對于最終結果影響會小一些。當然還有Liu等[14]提出的以網絡BN層的比例因子作為重要因子,來決定哪些通道將會被剪,具體是利用L1正則化重要因子,將重要因子較小的通道剪枝。基于范數的剪枝標準通常無法考慮到通道之間的相似性,本文則提出利用KL散度來度量通道之間的分布信息,通道之間的差異性相同的通道對于最終的結果影響是大致一樣的,所以剪枝相似的通道可能是更加合理的。

(2)

在第i層卷積層中,這些通道之間的差異性越高,其KL散度就越小,由于差異性只能判斷兩個通道之間的關系,本文便提出重要因子的概念,將通道之間的差異性累加便得到了重要因子,KL散度越小的通道,相似度越高,說明通道之間差異性也就越小,重要因子越小,則需要被剪枝。定義第j個通道的重要因子為:

(3)

如式(3)所示,第i層的每個通道都會計算出相應的重要因子,并根據重要因子排序選擇出重要因子較小的通道,保留重要的通道。

本文實現的通道剪枝方法如圖2所示,首先對第i層卷積層的通道進行KL散度衡量重要性,接下來去除掉差異性較小的通道,最后將剩余通道權重賦值給新網絡,便可得到剪枝后的網絡。圖中用白色虛線代表被剪枝的部分,當然并不存在于剪枝網絡中。

圖2 通道剪枝示意圖

2.4 通道剪枝及網絡重構

算法1給出了本文整體訓練過程。首先對于給定的預訓練好的大型原始網絡,根據每層卷積層的剪枝率,經過通道選擇后,確定每次需要剪枝的通道數量,隨后進行硬剪枝,且根據剪枝率重構出一個新的緊湊網絡。隨后歸一化通道權重并計算通道的重要因子,并將保留重要因子較大的通道權重賦值給緊湊網絡,這樣得到的緊湊網絡便是剪枝后的網絡,參數數量和FLOPs根據不同的剪枝率相應的降低,然后通過一定的迭代來微調剪枝網絡,使得剪枝網絡最終的性能達到與原始網絡相近,甚至更加優越。

算法1基于KL散度的通道剪枝算法

輸入:網絡權重W={Wi,1≤i≤L},剪枝率ri。

輸出:剪枝網絡Ws={Wsi,1≤i≤L}。

Step1遍歷網絡中的L層卷積層。

Step3根據重要因子排序,保留n×(1-ri)個重要因子較大的通道,并刪除剩余n×ri個通道。

Step4將保留通道的權重W賦值給剪枝網絡。

Step5在數據集上微調剪枝網絡,輸出表現良好的網絡權重Ws。

經過通道剪枝與網絡重構之后,微調過后的網絡性能通常會下降一些,甚至低于原始網絡準確率,根據不同的剪枝率,網絡的占用內存和FLOPs都會不同,且越高的剪枝率會使得越多的計算開銷下降,當然也可能導致性能的急劇下降,所以找到性能與計算開銷的平衡點是很重要的。

3 實驗與結果分析

本文在兩種數據集(CIFAR-10[22]和CIFAR-100[22])上實現了利用KL散度來對ResNet[23]進行通道剪枝的實驗,在Pytorch[24]上實現了對ResNet的加速與壓縮。ResNet是經典的CNN框架,其主要的計算量集中在卷積層當中,全連接層參數數量很小,卷積操作的計算開銷占FLOPs的絕大部分,所以壓縮與加速ResNet可以用來證明剪枝標準的有效性。CIFAR-10數據集是深度學習圖像分類的一種較為常用的數據集,它包含60 000幅像素為32×32的彩色圖片,分為10類,每類含有6 000幅圖片,訓練集為50 000幅圖片,測試集為10 000幅圖片。CIFAR-100圖片數目不變只是類別變成了100類,訓練集和測試集圖片數目不變。

3.1 CIFAR-10上不同方法實驗結果對比

在CIFAR-10數據集上,本文對 ResNet56和ResNet110進行了通道剪枝,用KL散度來計算出每個通道的重要因子,將重要因子較小的通道直接剪枝,并將保留的通道權重復制到重構后的緊湊模型中,然后將緊湊模型微調60個迭代,在每個迭代中遍歷數據集,用隨機梯度下降算法進行后向傳播更新緊湊模型的網絡權重,直到達到令人滿意的性能,并且在迭代過程中采用學習率遞減的調參方式,使得性能提升。

本文主要與四種方法進行了比較:L1-pruning[13]、 LCCL[25]、SFP[16]和Rethinking[18]。本文的實驗設置與文獻[18]的Rethinking算法一致,在ResNet56上跳躍第20、38和54層,在ResNet110上跳躍第36、38和74層,即上述層不進行剪枝,因為上述層較為敏感,在這些層上應用過高的剪枝率會導致性能的急劇下降。由于剪枝設置一樣,所以本文的FLOPs下降率與Rethinking算法也相同。

如表1所示,本文是基于Rethinking基礎上實現的算法,所以它們的基本精度相同,而與SFP不同,根據下降精度來看本文的剪枝標準性能更加客觀一點,本文還將每次剪枝后性能最優的方法加粗了,這樣可以直觀地看出在CIFAR-10數據集上,本文在ResNet56和ResNet110上剪枝10%和30%都超過了上述方法,與原始網絡性能相比也不遜色,且參數量與FLOPs都減少很多。卷積神經網絡的本質是通過卷積層提取特征,然后通過分類器進行分類任務,而通道之間提取到的特征存在著冗余,可以由其他通道提取的特征替換,所以適當剪枝后有些網絡的預測性能提升,而當剪枝率過高時,裁剪掉不可替換的通道時便會導致網絡性能的下降。本文通過通道之間的差異性來判別冗余通道,能在最大限度上降低精度損失。

表1 不同剪枝方法在CIFAR-10數據集上對ResNet剪枝的實驗結果對比

續表1

3.2 基于CIFAR-10不同剪枝標準實驗結果對比

本節比較了兩種不同剪枝標準對于剪枝網絡最終的影響,如表2所示,其中剪枝標準為KL散度是基于KL散度保留差異性較大的通道,而L1范數則是將通道權重的L1范數較大的通道保留。在進行對比實驗時,除了剪枝標準不同外,其余設置都是相同的,都是采用三步剪枝方法,預訓練網絡相同,且剪枝后微調次數也一致,超參數的設置也都相同。

表2 不同剪枝標準在CIFAR-10數據集上對ResNet剪枝實驗(%)

表2實驗結果是基于CIFAR-10的,通過剪枝后精度對比原始網絡精度,用基于KL散度的剪枝標準最高可以提升0.9百分點的精度。此外,剪枝精度大多略高于原始精度,可以看出剪枝從一定程度上提升了網絡的性能。同樣對比剪枝后的精度發現基于KL散度的剪枝標準是優于L1范數的剪枝標準的,也可以從另一方面解釋通道之間存在可替代性,所以,利用剪枝標準選擇差異性較大的通道并保留是至關重要的。

表3是在CIFAR-100數據集上剪枝ResNet56和ResNet110的,可以看出精度下降有點嚴重,可能是網絡并不存在很大的冗余,每次提取的特征都是很重要的。KL散度方法較之L1范數的方法也較為有優勢,在下降精度方面KL散度大多高于L1范數。當剪枝率從10%增加到30%可以對比看出有時候剪去20%效果與10%效果相差不大,但是較之原始網絡下降較多,說明CNN卷積層中剪枝一部分重要通道后,還會存在一些重要通道之間的冗余。ResNet56與ResNet110的下降精度可以看出在大網絡中冗余度是隨著深度增加而增加的,而且去除更多的通道精度下降并不是很多,所以大網絡上運用剪枝效果會更加明顯。

表3 不同剪枝標準在CIFAR-100數據集上對ResNet剪枝實驗(%)

3.3 基于CIFAR-10不同剪枝率實驗結果對比

由3.2節得出的結論,CNN的卷積層都存在一定的冗余通道,在不同的剪枝率下,卷積層的冗余通道不斷減少,最終達到性能與計算開銷的平衡,所以剪枝率的選擇對于網絡壓縮是很關鍵的。

如圖3所示,本文通過在CIFAR-10數據集上對ResNet56應用不同剪枝率,來找到剪枝率對于性能的影響。可以看出,剪枝率在50%的時候精度下降了很多,一些重要通道被剪枝時導致性能的急劇下降。而在10%~40%剪枝率下,性能略微有所提升,且基本保持不變,可以看出網絡刪減了冗余的通道,還從一定程度上提高了網絡的性能。通常網絡剪枝是需要一個嚴格的剪枝標準來衡量濾波器重要性,即使達到了這個標準,過高的剪枝率還是會對網絡性能產生影響,使用一些特殊的方法來提升準確率便必不可少,可以利用特征映射重構來最小化重構誤差,還可以通過知識蒸餾來提升網絡性能,即在盡可能減少網絡尺寸的同時維持網絡性能才是關鍵。

圖3 ResNet56在CIFAR-10上不同剪枝率的性能比較

3.4 剪枝后ResNet性能指標

剪枝后網絡的參數數量、浮點運算率(FLOPs)和網絡測算時間都是在卷積神經網絡應用時需要重點考慮的事情。表4為剪枝后的ResNet在10 000幅圖片的CIFAR-10數據集上推理的時間、網絡參數數量和浮點運算數量的對比。

表4 ResNet在CIFAR-10數據集上的性能指標

表4中,Baseline表示未剪枝的原網絡模型,網絡測算時間的計算方法是推理5次,去除最高值和最低值,剩余3次網絡測算時間取平均網絡測算時間。隨著剪枝率的提高,參數數量和浮點運算數量都大幅地下降了,并與剪枝率基本呈線性關系,網絡測算時間也下降了0.5 s左右。

4 結 語

本文將KL散度用作通道之間差異性的衡量標準,并定義通道的重要因子,在精度下降不大的情況下,剪枝不重要的冗余通道,從而達到減少網絡參數以及FLOPs的目的。對于一個預訓練好的網絡模型,本文直接對其進行剪枝,然后再通過微調的方法恢復與原始網絡相近的性能。一個嚴格的剪枝標準在結構化剪枝中是必不可少的,而本文通過實驗證明了KL散度能夠選擇出冗余的通道,是一個較為有效的標準。實驗還表明越深的網絡往往存在更多的冗余,設置合適的剪枝率可以提升網絡性能,降低網絡測算時間。

猜你喜歡
方法模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
學習方法
3D打印中的模型分割與打包
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 99久久免费精品特色大片| 黄色网在线免费观看| 亚洲精品成人片在线观看 | 为你提供最新久久精品久久综合| 亚洲欧洲日本在线| 好吊日免费视频| m男亚洲一区中文字幕| 亚洲国产精品一区二区高清无码久久| 第一区免费在线观看| 国产欧美日韩另类精彩视频| 成人免费视频一区| 女人av社区男人的天堂| 亚洲va欧美ⅴa国产va影院| 人妻中文久热无码丝袜| 国产高清不卡| 亚洲制服丝袜第一页| 波多野结衣一区二区三视频| 国产精品露脸视频| 亚洲熟女中文字幕男人总站| 国内精品久久久久久久久久影视 | 91视频区| 中文字幕欧美日韩| 日本不卡视频在线| 一级成人a毛片免费播放| 97超爽成人免费视频在线播放| 污污网站在线观看| 国产精品视频导航| 亚洲女同欧美在线| 一级不卡毛片| 啪啪永久免费av| 欧美成a人片在线观看| av在线无码浏览| 综合色在线| 欧美日韩国产成人高清视频| 色成人亚洲| 97成人在线观看| 免费无码AV片在线观看中文| 99在线视频精品| 久久无码av一区二区三区| 黄网站欧美内射| 亚洲国产成人久久精品软件| 97在线免费视频| 91精品国产自产在线观看| 国产在线小视频| 又粗又硬又大又爽免费视频播放| 国产在线观看一区二区三区| 第一页亚洲| 在线精品欧美日韩| 国产一级一级毛片永久| 在线a网站| 欧美无遮挡国产欧美另类| 欧美一区中文字幕| 久久综合伊人77777| 国产精品无码翘臀在线看纯欲| 美女国内精品自产拍在线播放| 女人天堂av免费| 久久综合丝袜日本网| 欧美成一级| а∨天堂一区中文字幕| 99久久精品免费视频| 亚洲三级a| 亚洲成网站| 日本亚洲国产一区二区三区| 一区二区理伦视频| www.国产福利| 欧美日韩一区二区三区四区在线观看| 在线人成精品免费视频| 日韩成人高清无码| 中文成人无码国产亚洲| 欧美成人综合视频| 首页亚洲国产丝袜长腿综合| 国产91熟女高潮一区二区| 亚洲天堂免费观看| 亚洲系列无码专区偷窥无码| 国产一级裸网站| 亚洲精品动漫| 一级全黄毛片| 1769国产精品视频免费观看| 欧美黄色a| 国产va在线观看免费| 久久国产精品77777| 久久一日本道色综合久久|