精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

機器學習|深度學習卷積模型

發布于 2025-5-27 06:53
瀏覽
0收藏

在早期的圖像分類中,通常流程是先人工提取特征,然后用對應的機器學習算法對特征進行分類,分類的準確率一般依賴特征選取的方法,甚至依賴經驗主義。
Yann LeCun最早提出將卷積神經網絡應用到圖像識別領域的,其主要邏輯是使用卷積神經網絡提取圖像特征,并對圖像所屬類別進行預測,通過訓練數據不斷調整網絡參數,最終形成一套能自動提取圖像特征并對這些特征進行分類的網絡,如圖:

機器學習|深度學習卷積模型-AI.x社區

圖像處理

1、卷積神經網絡

卷積神經網絡(Convolutional Neural Network,CNN)是一種深度學習模型,它是一種多層的神經網絡,通常由輸入層、卷積層(Convolutional Layer)、池化層(Pooling Layer)和全連接層(Fully Connected Layer)組成。

機器學習|深度學習卷積模型-AI.x社區

卷積神經網絡

  • 卷積層:卷積層是CNN的核心,它通過卷積運算提取圖像的特征,并輸出特征圖,不同的卷積核的目的是提取圖像上的不同的特征,比如邊緣、線條等。
  • 池化層:池化層是對卷積層輸出的特征圖進行降采樣,降低特征圖的維度,同時保留圖像中重要的信息。
  • 激活函數:激活函數是對輸入的數據進行非線性變換,主要目的是通過激活函數的參數化,使得神經網絡能夠擬合非線性函數。
  • 全連接層:通過全連接層將卷積層提取的特征進行組合。

2、池化

池化在上一篇《機器學習|深度學習基礎知識》介紹過,主要是降低采樣率,常用的方法有平均池化,最大池化,K-均值池化等,繼續上一篇代碼做優化,通過??pytorch??的MaxPool2d函數實現最大池化:

import torch  
import torch.nn as nn  
import matplotlib.pyplot as plt  
  
# 定義包含池化層的網絡  
class SimplePoolNet(nn.Module):  
    def __init__(self):  
        super(SimplePoolNet, self).__init__()  
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)  
  
    def forward(self, x):  
        return self.pool(x)  
  
# 初始化網絡  
net = SimplePoolNet()  
  
# 模擬輸入數據  
# 假設輸入是一個1x1x4x4的張量(NxCxHxW),其中N是批次大小,C是通道數  
input_tensor = torch.tensor([[[[1, 2, 3, 4],  
                               [5, 6, 7, 8],  
                               [9, 10, 11, 12],  
                               [13, 14, 15, 16]]]])  
  
# 執行池化操作  
output_tensor = net(input_tensor)  
  
# 可視化輸入和輸出  
plt.figure(figsize=(10, 5))  
  
# 顯示輸入  
plt.subplot(1, 2, 1)  
plt.imshow(input_tensor.squeeze(0).squeeze(0), cmap='gray')  
plt.title('Input')  
  
# 顯示輸出  
plt.subplot(1, 2, 2)  
plt.imshow(output_tensor.squeeze(0).squeeze(0), cmap='gray')  
plt.title('Output')  
  
plt.show()

機器學習|深度學習卷積模型-AI.x社區

池化

從上面生成的Output可以看出,池化有如下有點:

  • 降低特征圖維度,減少計算量
  • 對微小的變化具有魯棒性

3、卷積

3.1 為什么需要卷積?

為什么需要卷積?在全連接網絡中,輸入層是100X100的矩陣(可以是圖像,也可以是其他特性信息),會被變換為10000X1的向量,這樣會存在幾個問題?

  • 輸入的數據會由于變換為1維數據,導致空間信息丟失,比如矩陣(1,1)和(2,1)位置本來是相連的,但是展開后變成(1,1)和(100,1),這樣相鄰的相關性就不存在了;
  • 輸入數據維度過多,會導致模型參數等比例增長,容易發生過擬合;

為了解決這些問題,所以卷積計算就出現了,具體怎么做的呢?

import torch  
import torch.nn as nn  
  
# 隨機生成一個10x10x1的矩陣(假設是單通道圖像)  
input_tensor = torch.rand(1, 1, 10, 10)  # (batch_size, channels, height, width)  
  
# 定義一個3x3的卷積層,padding=1以確保輸出尺寸與輸入相同  
conv_layer = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, padding=1)  
  
# 初始化卷積層的權重(這里PyTorch會自動處理)   
print("Initial weights of the convolution layer:")  
print(conv_layer.weight)  
  
# 進行卷積計算  
output_tensor = conv_layer(input_tensor)  
  
# 打印輸出張量的尺寸  
print("Output tensor shape:", output_tensor.shape)  
  
# 如果需要,可以打印輸出張量的具體內容  
print(output_tensor)

為了方便理解,我從(https://poloclub.github.io/cnn-explainer/)找到動態圖如下:

圖片卷積計算過程

3.2 卷積計算

上一節說了為什么要有卷積,知道卷積就是類似濾波器做矩陣運算,其中具體過程如下:

機器學習|深度學習卷積模型-AI.x社區

卷積計算

卷積核:卷積核是卷積運算的參數,它是一個矩陣,其數值對圖像中與卷積核同樣大小的子塊像素點進行卷積計算時所采用的權重;
權重系數:權重系數就是卷積核的參數,捕獲圖像中某像素點及其鄰域像素點所構成的特有空間模式;
填充:填充是指在圖像邊緣添加像素點,使得卷積核可以覆蓋到整個圖像,避免卷積運算時輸入圖像尺寸變小;
步長:步長是指卷積核移動的步數,一般設置為2或者1,在圖像上表示移動多少個像素點,比如步長為2,圖像為100X100,卷積后的矩陣就是50X50;
感受野:感受野是指卷積核覆蓋的區域,比如3X3的卷積核,1層卷積感受野為3X3,2層卷積感受野為5X5...,根據最后一層卷積核與原始圖像的關聯關系;
多維卷積核:多維卷積核是指卷積核的維度大于2,比如3D圖像的卷積核就是3X3X3;

3.3 卷積算子

3.3.1 1X1卷積

1X1卷積,即輸入通道數與輸出通道數相同,不去考慮輸入數據局部信息之間的關系,而把關注點放在不同通道間,比如輸入通道數為3,輸出通道數為3,那么就是對每個通道做1X1卷積,得到3個輸出通道。

機器學習|深度學習卷積模型-AI.x社區

1X1卷積

從這里看,2D情況下1X1并沒有特殊之處,但是高維情況下,1X1就可以實現降維或者升維的效果,比如將各個維度相同矩陣通過1X1卷積,就可以獲得2D矩陣。

3.3.2 3D卷積

3D與2D卷積的區別是多了一個維度,輸入由(??,??????????,?????????)變為(??,?????????,??????????,?????????),與之對應的應用場景如視頻和醫療圖像圖片等,其中示意圖和樣例代碼如下:

機器學習|深度學習卷積模型-AI.x社區

3D卷積

import torch
import torch.nn as nn

# 輸入數據
# 假設我們有一個批量大小為1,具有1個通道的3D數據,其尺寸為(3, 3, 3)
input_data = torch.tensor([[
    [
        [[1, 2, 3], [4, 5, 6], [7, 8, 9]],
        [[10, 11, 12], [13, 14, 15], [16, 17, 18]],
        [[19, 20, 21], [22, 23, 24], [25, 26, 27]]
    ]
]], dtype=torch.float32)

# 定義3D卷積層
# 輸入通道數為1,輸出通道數為1,卷積核尺寸為(2, 2, 2),步長為1,填充為0
conv3d_layer = nn.Conv3d(in_channels=1, out_channels=1, kernel_size=2, stride=1, padding=0)

# 初始化卷積核權重
conv3d_layer.weight.data = torch.tensor([[
    [
        [[1, 2], [3, 4]],
        [[5, 6], [7, 8]]
    ]
]], dtype=torch.float32)

# 初始化偏置
conv3d_layer.bias.data = torch.tensor([0], dtype=torch.float32)

# 計算3D卷積輸出
output = conv3d_layer(input_data)

# 輸出結果
print("Output shape:", output.shape)
print("Output data:", output)

3.3.3 轉置卷積

什么是轉置卷積?
卷積的逆運算,用于增加上采樣中間層特征圖的空間維度,與通過卷積核減少輸入元素的常規卷積相反,轉置卷積通過卷積核廣播輸入元素,從而產生形狀大于輸入的輸出,其中示意圖和樣例代碼如下:

機器學習|深度學習卷積模型-AI.x社區

轉置卷積

def trans_conv(X, K):
    h, w = K.shape
    Y = torch.zeros((X.shape[0] + h - 1, X.shape[1] + w - 1))
    for i in range(X.shape[0]):
        for j in range(X.shape[1]):
            Y[i: i + h, j: j + w] += X[i, j] * K
    return Y

X = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
K = torch.tensor([[0.0, 1.0], [2.0, 3.0]])
tcov = trans_conv(X, K)
print("trans_conv: ", trans_conv)

# 輸出結果
tensor([[ 0.,  0.,  1.],
        [ 0.,  4.,  6.],
        [ 4., 12.,  9.]])

3.3.4 空洞卷積

空洞卷積顧名思義就補足空洞,通過類似上采樣的方式填充圖片,比如:

機器學習|深度學習卷積模型-AI.x社區

空洞卷積

  • 通過空洞卷積可以再同樣尺寸的卷積核獲得更大的感受野,從而捕獲更多的信息;
  • 減少計算量,因為空洞卷積可以跳過部分輸入元素,從而減少計算量;

3.3.5 分離卷積

卷積神經網絡解決了計算機視覺領域大部分問題,但是可以看到上面一個問題,就是卷積計算是通過矩陣操作,計算量比較大,如何降低計算量呢?擴展到工業領域?利用矩陣計算的特點,將矩陣分解為兩個矩陣相乘,如下圖所示:

機器學習|深度學習卷積模型-AI.x社區

分離卷積

利用矩陣原理是拆分兩個向量的外積:

機器學習|深度學習卷積模型-AI.x社區

卷積外積

這樣可以看出計算量對比:原始的計算量為9次,而拆分計算量為3次+3次,比原始的計算量少了3次,所以對于更大的矩陣計算量將大大減少。

4、LeNet卷積神經網絡

前面已經介紹卷積模型,那么看看最早的卷積神經網絡是如何設計,總體看來,由兩部分組成:

  • 卷積編碼器:兩個卷積層組合,主要是對特征進行提取;
  • 全連接層:三個全連接層組合,主要是對特征進行分類;

機器學習|深度學習卷積模型-AI.x社區

LeNet架構圖

代碼可以參考:https://zh.d2l.ai/chapter_convolutional-neural-networks/lenet.html,這里為了方便測試,我把代碼貼一下:

import torch
from torch import nn
from d2l import torch as d2l

# LeNet-5 
net = nn.Sequential(
    nn.Conv2d(1, 6, kernel_size=5, padding=2), nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Conv2d(6, 16, kernel_size=5), nn.Sigmoid(),
    nn.AvgPool2d(kernel_size=2, stride=2),
    nn.Flatten(),
    nn.Linear(16 * 5 * 5, 120), nn.Sigmoid(),
    nn.Linear(120, 84), nn.Sigmoid(),
    nn.Linear(84, 10))

X = torch.rand(size=(1, 1, 28, 28), dtype=torch.float32)
for layer in net:
    X = layer(X)
    print(layer.__class__.__name__,'output shape: \t',X.shape)

batch_size = 256
# 下載Fashion-MNIST數據集
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size=batch_size)

# 計算數據集上的精度
def evaluate_accuracy_gpu(net, data_iter, device=None):
    if isinstance(net, nn.Module):
        net.eval()  # 設置為評估模式
        if not device:
            device = next(iter(net.parameters())).device

    metric = d2l.Accumulator(2)
    with torch.no_grad():
        for X, y in data_iter:
            if isinstance(X, list):
                X = [x.to(device) for x in X]
            else:
                X = X.to(device)
            y = y.to(device)
            metric.add(d2l.accuracy(net(X), y), y.numel())
    return metric[0] / metric[1]

# 訓練letnet
def train_letnet(net, train_iter, test_iter, num_epochs, lr, device):
    def init_weights(m):
        if type(m) == nn.Linear or type(m) == nn.Conv2d:
            nn.init.xavier_uniform_(m.weight)
    net.apply(init_weights)
    print('training on', device)
    net.to(device)
    optimizer = torch.optim.SGD(net.parameters(), lr=lr)
    loss = nn.CrossEntropyLoss()
    animator = d2l.Animator(xlabel='epoch', xlim=[1, num_epochs],
                            legend=['train loss', 'train acc', 'test acc'])
    timer, num_batches = d2l.Timer(), len(train_iter)
    for epoch in range(num_epochs):
        # 訓練損失之和,訓練準確率之和,樣本數
        metric = d2l.Accumulator(3)
        net.train()
        for i, (X, y) in enumerate(train_iter):
            timer.start()
            optimizer.zero_grad()
            X, y = X.to(device), y.to(device)
            y_hat = net(X)
            l = loss(y_hat, y)
            l.backward()
            optimizer.step()
            with torch.no_grad():
                metric.add(l * X.shape[0], d2l.accuracy(y_hat, y), X.shape[0])
            timer.stop()
            train_l = metric[0] / metric[2]
            train_acc = metric[1] / metric[2]
            if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:
                animator.add(epoch + (i + 1) / num_batches,
                             (train_l, train_acc, None))
        test_acc = evaluate_accuracy_gpu(net, test_iter)
        animator.add(epoch + 1, (None, None, test_acc))
    print(f'loss {train_l:.3f}, train acc {train_acc:.3f}, '
          f'test acc {test_acc:.3f}')
    print(f'{metric[2] * num_epochs / timer.sum():.1f} examples/sec '
          f'on {str(device)}')
    
lr, num_epochs = 0.9, 10
train_letnet(net, train_iter, test_iter, num_epochs, lr, d2l.try_gpu())

# 輸出結果(運行在CPU上)
Conv2d output shape:     torch.Size([1, 6, 28, 28])
Sigmoid output shape:    torch.Size([1, 6, 28, 28])
AvgPool2d output shape:          torch.Size([1, 6, 14, 14])
Conv2d output shape:     torch.Size([1, 16, 10, 10])
Sigmoid output shape:    torch.Size([1, 16, 10, 10])
AvgPool2d output shape:          torch.Size([1, 16, 5, 5])
Flatten output shape:    torch.Size([1, 400])
Linear output shape:     torch.Size([1, 120])
Sigmoid output shape:    torch.Size([1, 120])
Linear output shape:     torch.Size([1, 84])
Sigmoid output shape:    torch.Size([1, 84])
Linear output shape:     torch.Size([1, 10])
...
loss 0.465, train acc 0.825, test acc 0.783
6611.0 examples/sec on cpu

參考

(1)https://paddlepedia.readthedocs.io/en/latest/tutorials/CNN/convolution_operator/Deformable_Convolution.html
(2)https://zh.d2l.ai/chapter_convolutional-neural-networks/lenet.html

本文轉載自????周末程序猿??,作者:周末程序猿

收藏
回復
舉報
回復
相關推薦
精品国产www| 精品无人区无码乱码毛片国产 | 国产精品毛片视频| 欧美午夜电影在线| 日本在线视频一区| 国产熟女一区二区三区五月婷| 亚洲视频精品| 亚洲天堂成人在线视频| 欧美激情国内自拍| 无码小电影在线观看网站免费| 欧美极品另类videosde| 91丝袜脚交足在线播放| 国产免费一区二区三区四区五区| 91久久国产| 日韩经典中文字幕在线观看| 国产精品区在线| 成人国产电影在线观看| 欧美激情在线观看视频免费| 岛国一区二区三区高清视频| 日韩欧美一级大片| 一区视频在线| 久久精品国产亚洲精品2020| 蜜桃精品成人影片| 一区二区三区高清在线观看| 在线精品观看国产| 妞干网在线视频观看| 蜜芽在线免费观看| 久久精品免费在线观看| 粉嫩av免费一区二区三区| 久久久国产免费| 精品99视频| 欧美精品在线免费观看| 亚洲午夜精品久久久久久高潮| 成人激情自拍| 日韩免费在线观看| 国内自拍第二页| 朝桐光一区二区| 欧美日韩色婷婷| 欧美中日韩在线| av片在线观看免费| 中文字幕一区三区| 欧美一区亚洲二区| 欧美一区二区视频| 91在线视频官网| 国产精品免费一区二区三区在线观看 | 日韩三级免费看| 不卡在线一区二区| 亚洲欧美综合图区| 三级黄色片网站| 国产欧美一区二区三区米奇| 日韩欧美卡一卡二| 少妇愉情理伦片bd| 日韩一区网站| 日韩欧美一区二区久久婷婷| 午夜激情视频网| 亚洲综合视频| 91精品国产综合久久小美女| av污在线观看| 精品美女一区| 欧美猛男男办公室激情| 欧美成年人视频在线观看| 久久三级毛片| 欧美另类久久久品| 久久6免费视频| 国产视频网站一区二区三区| 日韩一区和二区| 亚洲丝袜在线观看| 电影一区二区在线观看| 亚洲аv电影天堂网| 噜噜噜在线视频| 日本午夜精品久久久| 亚洲欧美资源在线| 天堂在线中文视频| 国产精品久久久久久影院8一贰佰| 日韩天堂在线视频| 欧美国产在线看| 亚洲国内欧美| 国产97在线|亚洲| 在线观看中文字幕2021| 国产一区二区三区免费在线观看| 91精品国产高清久久久久久91裸体| a天堂视频在线| 99视频精品免费视频| 欧美一区二区三区在线免费观看| av在线播放网| 亚洲女厕所小便bbb| 丁香六月激情婷婷| 日韩av首页| 制服丝袜亚洲色图| 完美搭档在线观看| 国产欧美日韩视频在线| 久久久999精品视频| 国产亚洲欧美精品久久久www| 一级成人国产| 国产精品影片在线观看| 亚洲奶汁xxxx哺乳期| 久久亚洲精品国产精品紫薇 | 欧美精品偷拍| 热99精品只有里视频精品| 夜夜躁狠狠躁日日躁av| 成人午夜又粗又硬又大| 日韩欧美一区二区三区四区五区 | 少妇精品高潮欲妇又嫩中文字幕 | 亚洲国产精品综合| av在线免费观看网址| 欧美日韩午夜剧场| 天堂网成人在线| 伊人成综合网yiren22| 久久九九有精品国产23| 久久免费激情视频| 国产在线精品视频| 欧美午夜欧美| 欧美人与禽猛交乱配| 日本韩国一区二区三区| 潘金莲一级淫片aaaaaaa| 视频国产一区| 欧美日韩国产第一页| 欧美另类高清videos的特点| av动漫一区二区| 欧美aaa在线观看| 卡通欧美亚洲| 亚洲国产精品成人精品| 日本中文字幕免费在线观看| 久久青草久久| 国偷自产av一区二区三区小尤奈| 免费观看在线午夜影视| 在线亚洲免费视频| 欲求不满的岳中文字幕| 欧美在线日韩| 成人免费激情视频| av在线电影免费观看| 一本色道亚洲精品aⅴ| 日本不卡视频一区| 午夜精品影院| 亚洲综合大片69999| 香蕉视频在线免费看| 色婷婷综合久久久中文一区二区 | 国产精品丝袜在线| 国产极品美女高潮无套久久久| 国产在线播放精品| 久久人人爽人人| 免费a级片在线观看| 依依成人精品视频| 无套内谢丰满少妇中文字幕| 无码一区二区三区视频| 国产日韩精品在线| 欧美96在线| 欧美福利一区二区| 国产午夜精品理论片| 黄页视频在线91| 精品一区二区成人免费视频 | 顶级黑人搡bbw搡bbbb搡| 蜜桃av一区二区三区电影| 日韩久久在线| 国产精品xxx| 久久精品青青大伊人av| 国产剧情精品在线| 一区二区三区丝袜| 女同性恋一区二区三区| 亚洲一区自拍| 日本视频一区二区在线观看| 亚洲国产尤物| 日韩视频一区在线| 午夜老司机福利| 香蕉av福利精品导航| 黄色性生活一级片| 国产精品久久777777毛茸茸 | 国产自产一区二区| 亚洲成年人影院| 无码国产精品一区二区免费式直播| 国产亚洲电影| 成人av番号网| gogo在线观看| 日韩久久精品一区| 麻豆亚洲av熟女国产一区二| 91日韩在线专区| 精品中文字幕av| 亚洲精品亚洲人成在线| 国产成人综合久久| 永久免费av在线| 日韩久久免费av| 精品美女久久久久| 国产午夜精品一区二区三区视频 | 欧美亚韩一区二区三区| 91亚洲精品一区二区乱码| 日本福利视频在线| 欧洲激情综合| 91九色蝌蚪国产| 大香伊人中文字幕精品| 日韩av资源在线播放| 成年人免费看毛片| 国产视频一区在线播放| 中文字幕精品一区二区三区在线| 精品国产123区| 99国产高清| 激情视频网站在线播放色| 亚洲色图美腿丝袜| 国产免费一区二区三区最新不卡| 亚洲综合激情另类小说区| 亚洲天堂成人av| 美女视频黄频大全不卡视频在线播放| 中文字幕日韩精品久久| 米奇精品关键词| 国产精品免费久久久久影院| 在线观看男女av免费网址| 亚洲精品美女免费| av中文字幕免费| 岛国av一区二区| 欧美做爰啪啪xxxⅹ性| av一本久道久久综合久久鬼色| 亚洲精品久久久中文字幕| 在线不卡欧美| 无遮挡亚洲一区| 国内精品麻豆美女在线播放视频| 欧美中文在线免费| 牛牛精品视频在线| 最近中文字幕2019免费| 日韩一级免费视频| 欧美电影一区二区| 日韩乱码一区二区三区| 亚洲va国产va欧美va观看| 农村老熟妇乱子伦视频| 99久久精品免费精品国产| 小明看看成人免费视频| 国产一区二区三区的电影 | 图片区偷拍区小说区| 日韩国产一区二| 日韩精品在线观看av| 欧美第一精品| 久久99精品国产99久久| 国产精品久久免费视频 | 亚洲aⅴ网站| 97在线观看视频| 伊人手机在线| 日韩在线免费av| 看电影就来5566av视频在线播放| 亚洲成人免费网站| 国产免费一区二区三区最新不卡| 欧洲国产伦久久久久久久| 国产一级在线免费观看| 国产精品免费丝袜| av永久免费观看| 久久精品夜色噜噜亚洲a∨| 亚洲精品第二页| 久久精品国产网站| 在线不卡一区二区三区| 日韩电影一二三区| 久久国产色av免费观看| 影音先锋在线一区| 男人和女人啪啪网站| 日韩午夜在线电影| 免费超爽大片黄| 在线成人国产| 97超碰在线人人| 国内综合精品午夜久久资源| www.-级毛片线天内射视视| 中文字幕乱码亚洲无线精品一区 | 日本一区二区在线看| 欧美日韩电影一区二区三区| 日本中文字幕在线一区| 久久国产主播精品| 少妇精品久久久一区二区三区| 欧美二区三区在线| 中文字幕av一区二区三区人| 久久久久久久久久久久久9999| 久久av资源| 欧美午夜精品久久久久久蜜| 国产欧美日韩在线一区二区| 免费观看成人高| 青青草91久久久久久久久| 视频一区视频二区视频三区视频四区国产 | 91成品人影院| 在线不卡一区二区| av在线免费在线观看| 日韩欧美一区二区久久婷婷| www久久久com| 精品欧美久久久| 日本午夜在线| 亚洲视频欧洲视频| 91亚洲精选| 久久久久久亚洲精品不卡| 国产精选在线| 日韩av免费在线播放| 国产亚洲欧美日韩精品一区二区三区 | 精品久久在线观看| 日韩一级免费观看| 欧美自拍第一页| 亚洲欧美日韩久久久久久| 精品欧美不卡一区二区在线观看| 最近2019年好看中文字幕视频 | 久久九九久精品国产免费直播| 色噜噜噜噜噜噜| 中文字幕在线一区免费| 成人免费毛片xxx| 亚洲成a人v欧美综合天堂| 国产美女www| 4438成人网| 婷婷色在线视频| 亚洲欧洲在线免费| 污的网站在线观看| 国产精品高潮呻吟久久av黑人| 日韩福利影视| 久久久一本精品99久久精品66| 国产成人久久| 看全色黄大色大片| 亚洲综合国产| 国产伦精品一区二区三区妓女下载| 99精品视频在线播放观看| 中字幕一区二区三区乱码| 亚洲精品亚洲人成人网在线播放| 无码免费一区二区三区| 欧美一区二区三区的| 日中文字幕在线| 不卡av日日日| 精品国产黄a∨片高清在线| 国产午夜精品在线| 五月天综合网站| 国产一区二区视频免费在线观看| 国产高清在线精品| 成人激情五月天| 亚洲成av人片在线观看无码| www.天堂av.com| 在线视频欧美日韩精品| 99爱在线视频| 91精品视频大全| 色综合综合色| 91动漫在线看| 极品少妇xxxx精品少妇偷拍 | 亚洲动漫在线观看| 4444在线观看| 久久av老司机精品网站导航| 日本女人黄色片| 综合久久久久综合| 亚洲精品国产无码| 亚洲激情自拍图| segui88久久综合9999| 亚洲自拍偷拍色片视频| 日韩在线欧美| 午夜激情福利在线| 久久久午夜精品理论片中文字幕| 国产无遮挡裸体免费视频| 欧美丰满美乳xxx高潮www| 免费在线国产| 日韩美女免费视频| 米奇777超碰欧美日韩亚洲| 久久久久免费看黄a片app| fc2成人免费人成在线观看播放 | 热re99久久精品国产66热| 国产精品极品| 免费拍拍拍网站| av资源网一区| 日韩成人免费在线观看| 亚洲精品在线一区二区| 97人人爽人人澡人人精品| 国产精品一区二区a| 国内一区二区三区| 蜜臀aⅴ国产精品久久久国产老师| 亚洲综合免费观看高清完整版 | 久久精品国产av一区二区三区| 欧洲精品在线观看| 欧美日韩影视| 国产精品99久久久久久久久| 成人网18免费网站| 超碰在线播放91| 国产精品乱人伦中文| 老熟妇一区二区三区| 自拍偷拍免费精品| 国产原创一区| 永久免费精品视频网站| 国产精品77777| 久久久久久激情| 亚洲国产91精品在线观看| 日韩电影av| 视频一区二区三| 国内成+人亚洲+欧美+综合在线 | 欧美午夜电影在线| 国产资源在线观看| 国产欧美va欧美va香蕉在| 欧美成人一区二免费视频软件| 佐山爱在线视频| 亚洲成av人片一区二区三区| 国产一区电影| 国产这里只有精品| 欧美精品啪啪| www.久久国产| 欧美日韩精品一区二区三区蜜桃 | 人人妻人人爽人人澡人人精品| 最近更新的2019中文字幕| 久久视频社区| 欧美高清中文字幕| 久久亚洲二区三区| 国产一区二区三区视频免费观看 | 看高清中日韩色视频| 秋霞电影网一区二区| 国产真实乱人偷精品视频| 日韩久久精品电影| 色婷婷成人网| 国产精品久久久久9999爆乳| 久久精品一区二区三区四区| 91成人在线免费|