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

對(duì)抗生成網(wǎng)絡(luò)GAN 原創(chuàng) 精華

發(fā)布于 2024-11-26 09:06
瀏覽
0收藏

前言

在前一階段課程中,我們學(xué)習(xí)了圖像分割中的語(yǔ)義分割、實(shí)例分割、旋轉(zhuǎn)目標(biāo)檢測(cè)等。這些圖像分割算法都是有監(jiān)督學(xué)習(xí),而GAN(生成對(duì)抗網(wǎng)絡(luò))是一種特別的學(xué)習(xí)策略,其核心思想非常值得借鑒,所以本章將以GAN網(wǎng)絡(luò)的代碼為切入口,了解掌握其核心思想。

學(xué)習(xí)策略

人工智能方面的學(xué)習(xí)策略有兩種:有監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)。

有監(jiān)督學(xué)習(xí)

定義:有監(jiān)督學(xué)習(xí)是使用帶標(biāo)簽的數(shù)據(jù)集進(jìn)行訓(xùn)練。每個(gè)輸入數(shù)據(jù)都有對(duì)應(yīng)的輸出標(biāo)簽,模型通過(guò)學(xué)習(xí)輸入與輸出之間的關(guān)系來(lái)進(jìn)行預(yù)測(cè)。

舉個(gè)例子:孩子的個(gè)人成長(zhǎng),有經(jīng)驗(yàn)的家長(zhǎng)為期規(guī)劃了發(fā)展的路線,孩子在規(guī)劃下有計(jì)劃地學(xué)習(xí)成長(zhǎng),這屬于有監(jiān)督學(xué)習(xí)。

無(wú)監(jiān)督學(xué)習(xí)

定義:無(wú)監(jiān)督學(xué)習(xí)使用沒(méi)有標(biāo)簽的數(shù)據(jù)集進(jìn)行訓(xùn)練。模型試圖發(fā)現(xiàn)數(shù)據(jù)中的模式或結(jié)構(gòu),而不依賴(lài)于任何預(yù)先定義的標(biāo)簽。

同樣的例子:孩子在無(wú)監(jiān)督學(xué)習(xí)下,是沒(méi)有家長(zhǎng)為期進(jìn)行規(guī)劃,而是經(jīng)歷社會(huì)"捶打"(做得好了有加分、做不好扣分),最終學(xué)習(xí)成長(zhǎng)起來(lái)。

GAN的基礎(chǔ)介紹

在上述的兩種學(xué)習(xí)策略中,有一種特殊的、獨(dú)立的學(xué)習(xí)策略:GAN(生成對(duì)抗網(wǎng)絡(luò))。

它由兩個(gè)網(wǎng)絡(luò)(生成器和判別器),通過(guò)對(duì)抗在競(jìng)爭(zhēng)中共同發(fā)展。

  • G:生成器(造假)
  • D:鑒別器(打假)
  • 訓(xùn)練過(guò)程:

兩個(gè)網(wǎng)絡(luò)剛開(kāi)始都沒(méi)有任何能力

在競(jìng)爭(zhēng)中共同發(fā)展

最后兩個(gè)網(wǎng)絡(luò)能力都得到提升

舉個(gè)例子:GAN網(wǎng)絡(luò)就像警察和小偷,警察和小偷之間互相對(duì)抗。

GAN示例

為了對(duì)GAN網(wǎng)絡(luò)有個(gè)直觀印象,我們可以參考Github上一個(gè)開(kāi)源項(xiàng)目,對(duì)GAN有個(gè)初步認(rèn)知。

頁(yè)面地址:https://poloclub.github.io/ganlab/

示例目的

  • 在頁(yè)面中添加一個(gè)手寫(xiě)數(shù)字圖像
  • 通過(guò)訓(xùn)練模型來(lái)模擬手寫(xiě)數(shù)字圖像
  • 從而達(dá)到新圖像與原來(lái)的風(fēng)格類(lèi)似,分不出真假

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

核心思想

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

論文地址:https://arxiv.org/pdf/1406.2661

生成器(Generator):

  • 作用:負(fù)責(zé)憑空編造假的數(shù)據(jù)出來(lái)。
  • 目的:通過(guò)機(jī)器生成假的數(shù)據(jù)(大部分情況下是圖像),最終目的是“騙過(guò)”判別器。
  • 過(guò)程:G是一個(gè)生成圖片的網(wǎng)絡(luò),它接收一個(gè)隨機(jī)的噪聲z,通過(guò)這個(gè)噪聲生成圖片,記做G(z)。

判別器(Discriminator):

  • 作用:負(fù)責(zé)判斷傳來(lái)的數(shù)據(jù)是真還是假。
  • 目的:判斷這張圖像是真實(shí)的還是機(jī)器生成的,目的是找出生成器做的“假數(shù)據(jù)”。
  • 過(guò)程:D是一個(gè)判別網(wǎng)絡(luò),判別一張圖片是不是“真實(shí)的”。它的輸入?yún)?shù)是x,x代表一張圖片,輸出D(x)代表x為真實(shí)圖片的概率,如果為1,就代表100%是真實(shí)的圖片,而輸出為0,就代表不可能是真實(shí)的圖片。

接下來(lái),我們通過(guò)詳細(xì)了解GAN網(wǎng)絡(luò)的代碼,深入了解其運(yùn)行過(guò)程。

引入依賴(lài)

import torch
from torch import nn
from torch.nn import functional as F

import torchvision
from torchvision import transforms
from torchvision import datasets
from torchvision.utils import save_image
from torch.utils.data importDataLoader

import os
import numpy as np
import matplotlib.pyplot as plt

# 判斷當(dāng)前設(shè)備是否GPU
device = torch.device('cuda'if torch.cuda.is_available()else'cpu')
device

讀取數(shù)據(jù)集

# 加載并預(yù)處理圖像
data = datasets.MNIST(root="data", 
                      train=True, 
                      transform = transforms.Compose(transforms=[transforms.ToTensor(),
                      transforms.Normalize(mean=[0.5], std=[0.5])]),
                      download=True)

# 封裝成 DataLoader
data_loader = DataLoader(dataset=data, batch_size=100, shuffle=True)
  • 備注:上述??transform = transforms.Compose?? 的作用主要是進(jìn)行數(shù)據(jù)增強(qiáng),詳細(xì)內(nèi)容在補(bǔ)充知識(shí)部分展開(kāi)介紹。

定義模型

定義生成器

"""
    定義生成器
"""

classGenerator(nn.Module):
"""
        定義一個(gè)圖像生成
        輸入:一個(gè)向量
        輸出:一個(gè)向量(代表圖像)
    """
def__init__(self, in_features=100, out_features=28 * 28):
"""
            掛載超參數(shù)
        """
# 先初始化父類(lèi),再初始化子類(lèi)
super(Generator, self).__init__()
        self.in_features = in_features
        self.out_features = out_features

# 第一個(gè)隱藏層
        self.hidden0 = nn.Linear(in_features=self.in_features, out_features=256)

# 第二個(gè)隱藏層
        self.hidden1 = nn.Linear(in_features=256, out_features=512)

# 第三個(gè)隱藏層
        self.hidden2 = nn.Linear(in_features=512, out_features=self.out_features)

defforward(self, x):

# 第一層 [b, 100] --> [b, 256]
        h = self.hidden0(x)
        h = F.leaky_relu(input=h, negative_slope=0.2)

# 第二層 [b, 256] --> [b, 512]
        h = self.hidden1(h)
        h = F.leaky_relu(input=h, negative_slope=0.2)

# 第三層 [b, 512] --> [b, 28 * 28]
        h = self.hidden2(h)

# 壓縮數(shù)據(jù)的變化范圍
        o = torch.tanh(h)

return o

定義鑒別器

"""
    定義一個(gè)鑒別器
"""

classDiscriminator(nn.Module):
"""
        本質(zhì):二分類(lèi)分類(lèi)器
        輸入:一個(gè)對(duì)象
        輸出:真品還是贗品
    """
def__init__(self, in_features=28*28, out_features=1):
super(Discriminator, self).__init__()

        self.in_features=in_features
        self.out_features=out_features

# 第一個(gè)隱藏層
        self.hidden0= nn.Linear(in_features=self.in_features, out_features=512)

# 第二個(gè)隱藏層
        self.hidden1= nn.Linear(in_features=512, out_features=256)

# 第三個(gè)隱藏層
        self.hidden2= nn.Linear(in_features=256, out_features=32)

# 第四個(gè)隱藏層
        self.hidden3= nn.Linear(in_features=32, out_features=self.out_features)


defforward(self, x):

# 第一層
        h = self.hidden0(x)
        h = F.leaky_relu(input=h, negative_slope=0.2)
        h = F.dropout(input=h, p=0.2)

# 第二層
        h = self.hidden1(h)
        h = F.leaky_relu(input=h, negative_slope=0.2)
        h = F.dropout(input=h, p=0.2)

# 第三層
        h = self.hidden2(h)
        h = F.leaky_relu(input=h, negative_slope=0.2)
        h = F.dropout(input=h, p=0.2)

# 第四層
        h = self.hidden3(h)

# 輸出概率
        o = torch.sigmoid(h)

return o

構(gòu)建模型

"""
    構(gòu)建模型
"""
# 定義一個(gè)生成器
generator = Generator(in_features=100, out_features=784)
generator.to(device=device)

# 定義一個(gè)鑒別器
discriminator = Discriminator(in_features=784, out_features=1)
discriminator.to(device=device)

定義優(yōu)化器

"""
    定義優(yōu)化器
"""

# 定義一個(gè)生成器的優(yōu)化器
g_optimizer = torch.optim.Adam(params=generator.parameters(), lr=1e-4)

# 定義一個(gè)鑒別的優(yōu)化器
d_optimizer = torch.optim.Adam(params=discriminator.parameters(), lr=1e-4)

定義損失函數(shù)

"""
    定義一個(gè)損失函數(shù)
"""
loss_fn = nn.BCELoss()

籌備訓(xùn)練

定義訓(xùn)練輪次

# 定義訓(xùn)練輪次
num_epochs = 1000

獲取數(shù)據(jù)的標(biāo)簽

"""
    獲取數(shù)據(jù)的標(biāo)簽
"""

defget_real_data_labels(size):
"""
        獲取真實(shí)數(shù)據(jù)的標(biāo)簽
    """
    labels = torch.ones(size,1, device=device)

return labels

defget_fake_data_labels(size):
"""
        獲取虛假數(shù)據(jù)的標(biāo)簽
    """
    labels = torch.zeros(size,1, device=device)

return labels

定義噪聲生成器

"""
    噪聲生成器
"""
defget_noise(size):
"""
        給生成器準(zhǔn)備數(shù)據(jù)
        - 100維度的向量
    """
    X = torch.randn(size,100, device=device)

return X

# 獲取一批測(cè)試數(shù)據(jù)

num_test_samples =16
test_noise = get_noise(num_test_samples)

噪聲生成器的作用:因?yàn)槲覀冃枰O(jiān)控模型訓(xùn)練的效果,所以將噪聲固定下來(lái),在訓(xùn)練過(guò)程中看同樣的噪聲最后給出的結(jié)果是否變得越來(lái)越好。

訓(xùn)練模型

"""
    訓(xùn)練過(guò)程
"""

g_losses =[]
d_losses =[]
for epoch inrange(1, num_epochs+1):

print(f"當(dāng)前正在進(jìn)行 第 {epoch} 輪 ....")

# 設(shè)置訓(xùn)練模式
    generator.train()
    discriminator.train()

# 遍歷真實(shí)的圖像
for batch_idx,(batch_real_data, _)inenumerate(data_loader):
"""
        1, 先訓(xùn)練鑒別器
            鑒別器就是一個(gè)二分類(lèi)問(wèn)題
            - 給一批真數(shù)據(jù),輸出真
            - 給一批假數(shù)據(jù),輸出假
        
        """

# 1.1 準(zhǔn)備數(shù)據(jù)
# 圖像轉(zhuǎn)向量 [b, 1, 28, 28] ---> [b, 784]
# 從數(shù)據(jù)集中獲取100個(gè)真實(shí)的手寫(xiě)數(shù)字圖像
        real_data = batch_real_data.view(batch_real_data.size(0),-1).to(device=device)

# 噪聲[b, 100]
# 隨機(jī)生成100個(gè)100維度的噪聲,用于生成假圖像
        noise = get_noise(real_data.size(0))

# 根據(jù)噪聲,生成假數(shù)據(jù) 
# [b, 100] --> [b, 784]
        fake_data = generator(noise).detach()


# 1.2 訓(xùn)練過(guò)程

# 鑒別器的優(yōu)化器梯度情況
        d_optimizer.zero_grad()

# 對(duì)真實(shí)數(shù)據(jù)鑒別
        real_pred = discriminator(real_data)

# 計(jì)算真實(shí)數(shù)據(jù)的誤差
        real_loss = loss_fn(real_pred, get_real_data_labels(real_data.size(0)))

# 真實(shí)數(shù)據(jù)的梯度回傳
        real_loss.backward()


# 對(duì)假數(shù)據(jù)鑒別
        fake_pred = discriminator(fake_data)

# 計(jì)算假數(shù)據(jù)的誤差
        fake_loss = loss_fn(fake_pred, get_fake_data_labels(fake_data.size(0)))

# 假數(shù)據(jù)梯度回傳
        fake_loss.backward()

# 梯度更新
        d_optimizer.step()

# ----------------
        d_losses.append((real_loss + fake_loss).item())
# print(f"鑒別器的損失:{real_loss + fake_loss}")


"""2, 再訓(xùn)練生成器"""

# 獲取生成器的生成結(jié)果
        fake_pred = generator(get_noise(real_data.size(0)))

# 生產(chǎn)器梯度清空
        g_optimizer.zero_grad()

# 把假數(shù)據(jù)讓鑒別器鑒別一下
# 把discriminator requires_grad = False
# 設(shè)置為不可學(xué)習(xí)
for param in discriminator.parameters():
            param.requires_grad =False

        d_pred = discriminator(fake_pred)

# 設(shè)置為可學(xué)習(xí)
for param in discriminator.parameters():
            param.requires_grad =True

# 計(jì)算損失
# 把一個(gè)假東西,給專(zhuān)家看,專(zhuān)家說(shuō)是真的,這個(gè)時(shí)候,造假的水平就可以了
        g_loss = loss_fn(d_pred, get_real_data_labels(d_pred.size(0)))

# 梯度回傳
        g_loss.backward()

# 參數(shù)更新
        g_optimizer.step()

# print(f"生成器誤差:{g_loss}")
        g_losses.append(g_loss.item())

# 每輪訓(xùn)練之后,觀察生成器的效果
    generator.eval()

with torch.no_grad():

# 正向推理
        img_pred = generator(test_noise)
        img_pred = img_pred.view(img_pred.size(0),28,28).cpu().data

# 畫(huà)圖
        display.clear_output(wait=True)

# 設(shè)置畫(huà)圖的大小
        fig = plt.figure(1, figsize=(12,8))
# 劃分為 4 x 4 的 網(wǎng)格
        gs = gridspec.GridSpec(4,4)

# 遍歷每一個(gè)
for i inrange(4):
for j inrange(4):
# 取每一個(gè)圖
                X = img_pred[i *4+ j,:,:]
# 添加一個(gè)對(duì)應(yīng)網(wǎng)格內(nèi)的子圖
                ax = fig.add_subplot(gs[i, j])
# 在子圖內(nèi)繪制圖像
                ax.matshow(X, cmap=plt.get_cmap("Greys"))
# ax.set_xlabel(f"{label}")
                ax.set_xticks(())
                ax.set_yticks(())
        plt.show()

運(yùn)行結(jié)果:

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

核心代碼說(shuō)明:

訓(xùn)練過(guò)程

  • 隨機(jī)生成一組潛在向量z,并使用生成器生成一組假數(shù)據(jù)。
  • 將一組真實(shí)數(shù)據(jù)和一組假數(shù)據(jù)作為輸入,訓(xùn)練判別器。
  • 使用生成器生成一組新的假數(shù)據(jù),并訓(xùn)練判別器。
  • 重復(fù)步驟2和3,直到生成器生成的假數(shù)據(jù)與真實(shí)數(shù)據(jù)的分布相似。

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

核心代碼

  • ??fake_data = generator(noise).detach()??:

作用:是生成器生成一組假數(shù)據(jù),并使用detach()方法將其從計(jì)算圖中分離出來(lái),防止梯度回傳。

說(shuō)明:(因?yàn)樵谟?xùn)練鑒別器時(shí),生成器只是工具人,其前向傳播過(guò)程中記錄的梯度信息不會(huì)被使用,所以不需要記錄梯度信息)

  • ??g_loss = loss_fn(d_pred, get_real_data_labels(d_pred.size(0)))?? 這里是體現(xiàn)對(duì)抗的核心代碼,即:生成器訓(xùn)練的好不好,是要與真實(shí)數(shù)據(jù)的判別結(jié)果越接近越好。

補(bǔ)充知識(shí)

數(shù)據(jù)增強(qiáng)

在人工智能模型的訓(xùn)練中,采集樣本是需要成本的,所以為了提升樣本的豐富性,一般會(huì)采用數(shù)據(jù)增強(qiáng)的方式。

  • 方式:在樣本固定的基礎(chǔ)上,通過(guò)軟件模擬,來(lái)生成假數(shù)據(jù),豐富樣本的多樣性
  • 本質(zhì):給樣本加上適當(dāng)?shù)脑肼暎M出不同場(chǎng)景的樣本
  • 說(shuō)明:數(shù)據(jù)增強(qiáng)只發(fā)生在模型訓(xùn)練中,為了增加訓(xùn)練樣本的多樣性

transform介紹

在 PyTorch 中,transform 主要用于數(shù)據(jù)預(yù)處理和增強(qiáng),特別是在圖像處理任務(wù)中。transform 是 torchvision 庫(kù)的一部分,能夠?qū)?shù)據(jù)集中的圖像進(jìn)行各種轉(zhuǎn)換,以便更好地適應(yīng)模型訓(xùn)練的需求。以下是 transform 的主要作用

import torch
from torchvision import datasets, transforms

from PIL import Image
import matplotlib.pyplot as plt

# 讀取本地下載的一張圖片
img = Image.open('girl.png')
img

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

重設(shè)圖片尺寸

resize = transforms.Resize((300, 200))
resize_img = resize(img)
resize_img

運(yùn)行效果:

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

中心裁剪

centercrop = transforms.CenterCrop(size=(200, 200))
center_img = centercrop(img)
center_img

運(yùn)行效果:

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

隨機(jī)調(diào)整亮度、飽和度、對(duì)比度等

color_jitter = transforms.ColorJitter(brightness=0.5, 
                                      contrast=0.5, 
                                      saturation=0.5, 
                                      hue=0.5)
color_jitter(img)

運(yùn)行效果:

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

隨機(jī)旋轉(zhuǎn)

random_rotation = transforms.RandomRotation(degrees=10)
random_rotation(img)

運(yùn)行效果:

對(duì)抗生成網(wǎng)絡(luò)GAN-AI.x社區(qū)

組合變換

Compose:可以將多個(gè)變換組合在一起,形成一個(gè)轉(zhuǎn)換管道,方便批量處理。例如:

from torchvision import transforms

transform = transforms.Compose([
    transforms.Resize((128, 128)),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),          # 將PIL Image轉(zhuǎn)換為T(mén)ensor
    transforms.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]), # 將數(shù)據(jù)歸一化到[-1, 1]之間
])

內(nèi)容小結(jié)

  • GAN(生成對(duì)抗網(wǎng)絡(luò))是一種特殊的學(xué)習(xí)策略,它由生成器和判別器組成,生成器生成假數(shù)據(jù),判別器判斷真假。
  • 生成器(Generator)通過(guò)機(jī)器生成假的數(shù)據(jù)(大部分情況下是圖像),最終目的是“騙過(guò)”判別器。
  • 判別器(Discriminator):判斷這張圖像是真實(shí)的還是機(jī)器生成的,目的是找出生成器做的“假數(shù)據(jù)”。
  • 訓(xùn)練過(guò)程是:先訓(xùn)練判別器,再訓(xùn)練生成器。
  • 訓(xùn)練判別器時(shí),生成器是"工具人",所以需要使用detach()方法,將生成器生成的假數(shù)據(jù)從計(jì)算圖中分離出來(lái),防止梯度回傳。
  • 訓(xùn)練生成器時(shí),判別器是"工具人",為了避免整個(gè)梯度消失,需要使用param.requires_grad = False設(shè)置為不可學(xué)習(xí),判別完之后再使用param.requires_grad = True設(shè)置為可學(xué)習(xí)。
  • 在人工智能模型訓(xùn)練過(guò)程中,通常會(huì)使用數(shù)據(jù)增強(qiáng)的方式,在樣本固定的基礎(chǔ)上,通過(guò)軟件模擬,來(lái)生成假數(shù)據(jù),豐富樣本的多樣性。
  • transform:在 PyTorch 中,transform 主要用于數(shù)據(jù)預(yù)處理和增強(qiáng),特別是在圖像處理任務(wù)中。

?

本文轉(zhuǎn)載自公眾號(hào)一起AI技術(shù) 作者:Dongming

原文鏈接:??https://mp.weixin.qq.com/s/tHEfP7_rTXkXWfWJZu9vYw??

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
国产精品99精品无码视亚| 99在线视频首页| 欧美福利第一页| 999色成人| 亚洲成人免费在线| 一本久道久久综合狠狠爱亚洲精品| 国产强伦人妻毛片| 999在线观看精品免费不卡网站| 亚洲欧美日韩视频一区| 国产永久免费网站| 伊人色综合一区二区三区影院视频| 国产精品麻豆网站| 精品无码久久久久久久动漫| 亚洲综合一区中| 亚洲毛片一区| 久久精品福利视频| 在线观看福利片| 日韩免费精品| 欧美日韩大陆在线| 97成人在线视频| 欧美精品videosex牲欧美| 男生操女生视频在线观看| 大菠萝精品导航| 亚洲欧美综合色| 蜜桃91精品入口| 亚洲国产精品视频在线| 卡一卡二国产精品 | 成人做爰视频网站| 亚洲v天堂v手机在线| 欧美一区二区免费观在线| 国产精彩免费视频| 欧美私密网站| 亚洲v中文字幕| 国产在线观看欧美| 欧美成人三区| 亚洲国产精华液网站w| 精品毛片久久久久久| 亚洲第一天堂在线观看| 韩国成人精品a∨在线观看| 国产成人在线精品| 特级西西444www大精品视频免费看| 欧美日韩国产高清| 久久久久北条麻妃免费看| 国产传媒视频在线| 精品视频久久| 伊人青青综合网站| 亚洲午夜精品久久久久久高潮| 亚洲另类春色校园小说| 亚洲国产毛片完整版| 特级特黄刘亦菲aaa级| 日韩欧美中文字幕一区二区三区 | 日韩一级在线播放| 成人动漫在线一区| 国产厕所精品在线观看| 亚洲精品久久久久久无码色欲四季 | 91免费看片在线| 国产又粗又猛视频免费| 久久精品二区亚洲w码| 成人黄色片网站| 国产熟女精品视频| 国产成人免费视频| 国产精品果冻传媒潘| 超碰在线播放97| 成人黄色在线看| 久久精品二区| 久久久免费看| 国产一区二区三区四区视频| 美女视频网站久久| 91丨九色丨国产在线| 精品区在线观看| 国产99久久久久久免费看农村| 成人做爰66片免费看网站| 韩国av永久免费| 久久综合999| 日韩免费三级| 毛片在线播放a| 亚洲人吸女人奶水| www国产精品内射老熟女| 欧美男男tv网站在线播放| 91福利资源站| 国产又粗又长又爽又黄的视频| 欧洲一区在线| 亚洲精品日韩在线| 欧美福利在线视频| 欧美精品99| 欧美重口另类videos人妖| 综合久久中文字幕| 国产成人在线色| 欧美高清性xxxxhd| 久久亚洲天堂| 狠狠干狠狠久久| 色噜噜狠狠一区二区| 91成人在线精品视频| 亚洲欧美日韩中文在线| 欧美在线视频第一页| 99国内精品| 亚洲a成v人在线观看| 亚洲人妻一区二区三区| av中字幕久久| 成人高清伦理免费影院在线观看| 成人综合色站| 中国日本在线视频中文字幕| 亚洲国产一区二区三区| wwwwxxxx日韩| 久久这里只有精品一区二区| 日韩在线中文字| 成年人免费高清视频| 国产做a爰片久久毛片| 久久手机视频| 日本理论片午伦夜理片在线观看| 91成人在线精品| 女女调教被c哭捆绑喷水百合| 国产精品最新| 国产69精品99久久久久久宅男| 亚洲天堂777| 2024国产精品| 人妻av无码专区| 日韩毛片网站| 国产亚洲a∨片在线观看| 国产黄色片视频| 国产精品自拍三区| 欧美一区1区三区3区公司| av影片在线| 欧美一区二区三区四区在线观看| 国产精品久久免费观看| 在线综合亚洲| 国产一区二区三区av在线| av网址在线看| 5月丁香婷婷综合| 国产精品无码无卡无需播放器| 亚洲免费一区二区| 成人免费看片网址| 91麻豆免费在线视频| 91精品国产色综合久久不卡电影 | 色天下一区二区三区| 色综合91久久精品中文字幕| 国产精品久久久久久久成人午夜| 中文字幕av一区二区三区免费看 | 国产卡一卡二在线| 欧美一区二区三区婷婷| 一区二区三区久久精品| 午夜影院免费在线观看| 99re成人精品视频| 男女超爽视频免费播放| 欧美精品国产白浆久久久久| 欧美激情国产高清| 亚洲国产欧美另类| 亚洲综合激情网| 中文字幕18页| 99精品国产一区二区青青牛奶| 国内精品视频在线播放| 男人av在线播放| 亚洲欧美在线x视频| 91video| 国产日韩精品一区二区三区在线| 日韩手机在线观看视频| 国产麻豆一区二区三区精品视频| 国产97免费视| 中文字幕日本在线| 欧美一区二区三区喷汁尤物| 美女福利视频在线观看| 岛国av在线一区| 国产97在线 | 亚洲| 你微笑时很美电视剧整集高清不卡| 日韩免费观看在线观看| 在线观看麻豆蜜桃| 日韩丝袜情趣美女图片| 国产奶水涨喷在线播放| 久久网站最新地址| 中文字幕成人在线视频| 亚洲无中文字幕| 国产日韩欧美二区| 小视频免费在线观看| 国产午夜精品视频| www黄色网址| 欧美日韩一区二区免费视频| 嘿嘿视频在线观看| 国产成人在线视频免费播放| 人妻熟女一二三区夜夜爱| 日韩欧美1区| 动漫美女被爆操久久久| 外国成人直播| 欧美成人激情在线| 欧美视频综合| 免费看男女www网站入口在线| 欧美日韩国产另类一区| 欧美片一区二区| 久久品道一品道久久精品| 思思久久精品视频| 在线综合欧美| 亚洲欧美日韩不卡| 日韩系列在线| 91一区二区三区| 小黄鸭精品aⅴ导航网站入口| y97精品国产97久久久久久| 国产成人无码www免费视频播放| 欧美特级www| 99久久婷婷国产综合| 99国产一区二区三精品乱码| 中文字幕成人在线视频| 国产日韩综合| 超碰在线免费观看97| 亚洲老女人视频免费| 91在线精品视频| 性高爱久久久久久久久| 欧美精品免费看| 成年在线观看免费人视频| 欧美三级视频在线| 五月婷婷中文字幕| 亚洲激情成人在线| www成人啪啪18软件| 成人国产精品免费| 激情图片中文字幕| 日韩av不卡在线观看| 免费国产a级片| 欧美精品麻豆| 国产又大又长又粗又黄| 精品视频日韩| 玛丽玛丽电影原版免费观看1977| 亚洲天堂中文字幕在线观看| 成人信息集中地欧美| 99久久精品一区二区成人| 97精品在线视频| 美洲精品一卡2卡三卡4卡四卡| 日韩在线视频观看正片免费网站| 你懂的免费在线观看视频网站| 亚洲第一国产精品| 亚洲精品久久久久久久久久久久久久| 欧美妇女性影城| 中文字幕在线2019| 欧美视频在线播放| 国产精品久久久久久久久夜色| 欧美日韩国产中文字幕 | 成人高清免费在线播放| 亚洲码在线观看| 天天操天天操天天操| 欧美不卡一二三| 亚洲精品国产精| 精品卡一卡二卡三卡四在线| 成人高潮片免费视频| 欧美一区二区大片| 国产精品午夜福利| 欧美一区三区四区| 国产福利免费视频| 日韩欧美亚洲一区二区| 国产成人精品白浆久久69| 制服丝袜日韩国产| 国产精品高潮呻吟AV无码| 欧美精品777| av网站在线免费看| 精品欧美乱码久久久久久| 丁香花免费高清完整在线播放| 日韩欧美一卡二卡| 亚洲av综合色区无码一二三区| 精品美女被调教视频大全网站| 韩国中文字幕hd久久精品| 亚洲第一页自拍| 欧美女优在线观看| 一区二区亚洲精品国产| 日本最黄一级片免费在线| 久久精品在线播放| 青草影视电视剧免费播放在线观看| 欧美激情国产精品| 中文一区一区三区高中清不卡免费 | 天天操夜夜操av| 亚洲综合成人在线视频| 国产一区二区99| 欧美三级一区二区| 亚洲av无码国产综合专区| 亚洲黄色片网站| 成人精品一区二区三区免费| 久久精品亚洲国产| 老牛影视精品| 国产精品啪视频| 秋霞一区二区| 欧洲精品国产| 欧美一区亚洲| 国产最新免费视频| 久久精品国产99| 亚洲国产精品自拍视频| 国产亚洲欧美一级| 午夜免费激情视频| 狠狠躁天天躁日日躁欧美| 一区二区三区播放| 亚洲国产欧美一区| 伊人在线视频| 高清欧美一区二区三区| 日韩中文视频| 国产一区不卡在线观看| 日韩片欧美片| 久久久久久久中文| 精品一区二区三区香蕉蜜桃 | 亚洲av无码乱码在线观看性色| 日韩电影第一页| 免费a级在线播放| 国产91精品不卡视频| 精品午夜av| 日韩一区二区三区高清| 国产精品国码视频| wwww.国产| 99视频在线精品| 日本午夜在线观看| 91豆麻精品91久久久久久| 丰满少妇一级片| 少妇精品久久久| 444亚洲人体| 欧美精品尤物在线观看| av日韩一区二区三区| 久久国产尿小便嘘嘘| 少妇大叫太粗太大爽一区二区| 亚洲综合清纯丝袜自拍| 97av免费视频| 国产一区二区久久精品| 乱人伦视频在线| caoporn国产精品免费公开| 久久国产成人午夜av影院宅| 激情综合在线观看| 大美女一区二区三区| 黑鬼狂亚洲人videos| 欧美在线一二三| 亚洲 小说区 图片区 都市| 欧美疯狂做受xxxx高潮| crdy在线观看欧美| 亚洲精品中文字幕乱码三区不卡| 亚洲欧美日韩国产一区二区| 任你躁av一区二区三区| 亚洲欧美日韩一区二区三区在线观看 | 国产sm在线观看| 亚洲视频在线观看一区| 一级片免费网站| 色吧影院999| 国产精品伦一区二区| 日韩成人av网站| 久久久久网站| 蜜桃无码一区二区三区| 欧美午夜精品久久久久久久| 色资源在线观看| 热99精品里视频精品| 婷婷精品在线| 激情六月丁香婷婷| 久久先锋影音av| 91黑人精品一区二区三区| 亚洲另类xxxx| 日韩和的一区二在线| 香蕉久久夜色| 麻豆精品新av中文字幕| 污污的视频在线免费观看| 欧美一区二区三区在线视频| 国产鲁鲁视频在线观看特色| 亚洲一区二区免费| 欧美日本一区二区高清播放视频| 成年人看片网站| 亚洲va中文字幕| 外国精品视频在线观看 | 在线视频国产区| 国产一区二区三区四区hd| 99国产一区| 国产精品av久久久久久无| 精品视频在线免费| 国产黄色小视频在线| 999国产在线| 9国产精品视频| 在线观看免费小视频| 欧美精品在线观看一区二区| 日韩三级免费| 久久99精品久久久水蜜桃| 日韩一区精品视频| 最新av电影网站| 精品第一国产综合精品aⅴ| 松下纱荣子在线观看| 一本色道久久综合亚洲精品婷婷| 亚洲第一区av| 亚洲成人久久网| 日韩精品第1页| 亚洲美女15p| 男人的天堂日韩| 亚洲人成影院在线观看| 人妻一区二区三区| 国产97在线|日韩| 综合视频在线| 黄色国产在线观看| 六九午夜精品视频| av在线不卡观看| 亚洲香蕉av| 美国黄色一级毛片| 7777精品伊人久久久大香线蕉| wwwww亚洲| 欧美日韩免费高清| 久久99久国产精品黄毛片色诱| 久久久久99精品| 日韩中文字幕在线看| 成人看片爽爽爽| 亚洲第一狼人区| 午夜精品福利一区二区三区av| 欧美日韩在线看片| 久久精品magnetxturnbtih| 极品少妇一区二区三区精品视频 | 野花视频免费在线观看| 色综合色狠狠综合色| 日本aa在线|