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

基于 PyTorch 的人臉關鍵點檢測

人工智能 人臉識別
你是否想過Instagram是如何給你的臉上應用驚人的濾鏡的?該軟件檢測你臉上的關鍵點并在其上投影一個遮罩。本教程將教你如何使用PyTorch構建一個類似的軟件。

計算機真的能理解人臉嗎?你是否想過Instagram是如何給你的臉上應用驚人的濾鏡的?該軟件檢測你臉上的關鍵點并在其上投影一個遮罩。本教程將教你如何使用PyTorch構建一個類似的軟件。

數據集

在本教程中,我們將使用官方的DLib數據集,其中包含6666張尺寸不同的圖像。此外,labels_ibug_300W_train.xml(隨數據集提供)包含每張人臉的68個關鍵點的坐標。下面的腳本將在Colab筆記本中下載數據集并解壓縮。

if not os.path.exists('/content/ibug_300W_large_face_landmark_dataset'):
    !wget http://dlib.net/files/data/ibug_300W_large_face_landmark_dataset.tar.gz
    !tar -xvzf 'ibug_300W_large_face_landmark_dataset.tar.gz'    
    !rm -r 'ibug_300W_large_face_landmark_dataset.tar.gz'

這是數據集中的一張樣本圖像。我們可以看到,人臉只占整個圖像的一小部分。如果我們將完整圖像輸入神經網絡,它也會處理背景(無關信息),這會使模型難以學習。因此,我們需要裁剪圖像,僅輸入人臉部分。

數據集中的樣本圖像和關鍵點

數據預處理

為了防止神經網絡過擬合訓練數據集,我們需要隨機變換數據集。我們將對訓練和驗證數據集應用以下操作:

  • 由于人臉只占整個圖像的一小部分,所以裁剪圖像并僅使用人臉進行訓練。
  • 將裁剪后的人臉調整為(224x224)的圖像。
  • 隨機改變調整后的人臉的亮度和飽和度。
  • 在上述三個轉換之后,隨機旋轉人臉。
  • 將圖像和關鍵點轉換為torch張量,并在[-1, 1]之間進行歸一化。
class Transforms():
    def __init__(self):
        pass
    
    def rotate(self, image, landmarks, angle):
        angle = random.uniform(-angle, +angle)

        transformation_matrix = torch.tensor([
            [+cos(radians(angle)), -sin(radians(angle))], 
            [+sin(radians(angle)), +cos(radians(angle))]
        ])

        image = imutils.rotate(np.array(image), angle)

        landmarks = landmarks - 0.5
        new_landmarks = np.matmul(landmarks, transformation_matrix)
        new_landmarks = new_landmarks + 0.5
        return Image.fromarray(image), new_landmarks

    def resize(self, image, landmarks, img_size):
        image = TF.resize(image, img_size)
        return image, landmarks

    def color_jitter(self, image, landmarks):
        color_jitter = transforms.ColorJitter(brightness=0.3, 
                                              contrast=0.3,
                                              saturation=0.3, 
                                              hue=0.1)
        image = color_jitter(image)
        return image, landmarks

    def crop_face(self, image, landmarks, crops):
        left = int(crops['left'])
        top = int(crops['top'])
        width = int(crops['width'])
        height = int(crops['height'])

        image = TF.crop(image, top, left, height, width)

        img_shape = np.array(image).shape
        landmarks = torch.tensor(landmarks) - torch.tensor([[left, top]])
        landmarks = landmarks / torch.tensor([img_shape[1], img_shape[0]])
        return image, landmarks

    def __call__(self, image, landmarks, crops):
        image = Image.fromarray(image)
        image, landmarks = self.crop_face(image, landmarks, crops)
        image, landmarks = self.resize(image, landmarks, (224, 224))
        image, landmarks = self.color_jitter(image, landmarks)
        image, landmarks = self.rotate(image, landmarks, angle=10)
        
        image = TF.to_tensor(image)
        image = TF.normalize(image, [0.5], [0.5])
        return image, landmarks

數據集類

現在我們已經準備好了轉換,讓我們編寫我們的數據集類。labels_ibug_300W_train.xml包含圖像路徑、關鍵點和邊界框的坐標(用于裁剪人臉)。我們將這些值存儲在列表中,以便在訓練期間輕松訪問。在本文章中,神經網絡將在灰度圖像上進行訓練。


class FaceLandmarksDataset(Dataset):

    def __init__(self, transform=None):

        tree = ET.parse('ibug_300W_large_face_landmark_dataset/labels_ibug_300W_train.xml')
        root = tree.getroot()

        self.image_filenames = []
        self.landmarks = []
        self.crops = []
        self.transform = transform
        self.root_dir = 'ibug_300W_large_face_landmark_dataset'
        
        for filename in root[2]:
            self.image_filenames.append(os.path.join(self.root_dir, filename.attrib['file']))

            self.crops.append(filename[0].attrib)

            landmark = []
            for num in range(68):
                x_coordinate = int(filename[0][num].attrib['x'])
                y_coordinate = int(filename[0][num].attrib['y'])
                landmark.append([x_coordinate, y_coordinate])
            self.landmarks.append(landmark)

        self.landmarks = np.array(self.landmarks).astype('float32')     

        assert len(self.image_filenames) == len(self.landmarks)

    def __len__(self):
        return len(self.image_filenames)

    def __getitem__(self, index):
        image = cv2.imread(self.image_filenames[index], 0)
        landmarks = self.landmarks[index]
        
        if self.transform:
            image, landmarks = self.transform(image, landmarks, self.crops[index])

        landmarks = landmarks - 0.5

        return image, landmarks

dataset = FaceLandmarksDataset(Transforms())

注意:landmarks = landmarks - 0.5 是為了將關鍵點居中,因為中心化的輸出對神經網絡學習更容易。經過預處理后的數據集輸出如下所示(關鍵點已經繪制在圖像中):

預處理后的數據樣本

神經網絡

我們將使用ResNet18作為基本框架。我們需要修改第一層和最后一層以適應我們的目的。在第一層中,我們將輸入通道數設為1,以便神經網絡接受灰度圖像。同樣,在最后一層中,輸出通道數應為68 * 2 = 136,以便模型預測每張人臉的68個關鍵點的(x,y)坐標。

class Network(nn.Module):
    def __init__(self,num_classes=136):
        super().__init__()
        self.model_name='resnet18'
        self.model=models.resnet18()
        self.model.conv1=nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
        self.model.fc=nn.Linear(self.model.fc.in_features, num_classes)
        
    def forward(self, x):
        x=self.model(x)
        return x

訓練神經網絡

我們將使用預測關鍵點和真實關鍵點之間的均方誤差作為損失函數。請記住,要避免梯度爆炸,學習率應保持低。每當驗證損失達到新的最小值時,網絡權重將被保存。至少訓練20個epochs以獲得最佳性能。


network = Network()
network.cuda()    

criterion = nn.MSELoss()
optimizer = optim.Adam(network.parameters(), lr=0.0001)

loss_min = np.inf
num_epochs = 10

start_time = time.time()
for epoch in range(1,num_epochs+1):
    
    loss_train = 0
    loss_valid = 0
    running_loss = 0
    
    network.train()
    for step in range(1,len(train_loader)+1):
    
        images, landmarks = next(iter(train_loader))
        
        images = images.cuda()
        landmarks = landmarks.view(landmarks.size(0),-1).cuda() 
        
        predictions = network(images)
        
        # clear all the gradients before calculating them
        optimizer.zero_grad()
        
        # find the loss for the current step
        loss_train_step = criterion(predictions, landmarks)
        
        # calculate the gradients
        loss_train_step.backward()
        
        # update the parameters
        optimizer.step()
        
        loss_train += loss_train_step.item()
        running_loss = loss_train/step
        
        print_overwrite(step, len(train_loader), running_loss, 'train')
        
    network.eval() 
    with torch.no_grad():
        
        for step in range(1,len(valid_loader)+1):
            
            images, landmarks = next(iter(valid_loader))
        
            images = images.cuda()
            landmarks = landmarks.view(landmarks.size(0),-1).cuda()
        
            predictions = network(images)

            # find the loss for the current step
            loss_valid_step = criterion(predictions, landmarks)

            loss_valid += loss_valid_step.item()
            running_loss = loss_valid/step

            print_overwrite(step, len(valid_loader), running_loss, 'valid')
    
    loss_train /= len(train_loader)
    loss_valid /= len(valid_loader)
    
    print('\n--------------------------------------------------')
    print('Epoch: {}  Train Loss: {:.4f}  Valid Loss: {:.4f}'.format(epoch, loss_train, loss_valid))
    print('--------------------------------------------------')
    
    if loss_valid < loss_min:
        loss_min = loss_valid
        torch.save(network.state_dict(), '/content/face_landmarks.pth') 
        print("\nMinimum Validation Loss of {:.4f} at epoch {}/{}".format(loss_min, epoch, num_epochs))
        print('Model Saved\n')
     
print('Training Complete')
print("Total Elapsed Time : {} s".format(time.time()-start_time))

在未知數據上進行預測

使用以下代碼段在未知圖像中預測關鍵點。


import time
import cv2
import os
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import imutils

import torch
import torch.nn as nn
from torchvision import models
import torchvision.transforms.functional as TF
#######################################################################
image_path = 'pic.jpg'
weights_path = 'face_landmarks.pth'
frontal_face_cascade_path = 'haarcascade_frontalface_default.xml'
#######################################################################
class Network(nn.Module):
    def __init__(self,num_classes=136):
        super().__init__()
        self.model_name='resnet18'
        self.model=models.resnet18(pretrained=False)
        self.model.conv1=nn.Conv2d(1, 64, kernel_size=7, stride=2, padding=3, bias=False)
        self.model.fc=nn.Linear(self.model.fc.in_features,num_classes)
        
    def forward(self, x):
        x=self.model(x)
        return x

#######################################################################
face_cascade = cv2.CascadeClassifier(frontal_face_cascade_path)

best_network = Network()
best_network.load_state_dict(torch.load(weights_path, map_location=torch.device('cpu'))) 
best_network.eval()

image = cv2.imread(image_path)
grayscale_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
display_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
height, width,_ = image.shape

faces = face_cascade.detectMultiScale(grayscale_image, 1.1, 4)

all_landmarks = []
for (x, y, w, h) in faces:
    image = grayscale_image[y:y+h, x:x+w]
    image = TF.resize(Image.fromarray(image), size=(224, 224))
    image = TF.to_tensor(image)
    image = TF.normalize(image, [0.5], [0.5])

    with torch.no_grad():
        landmarks = best_network(image.unsqueeze(0)) 

    landmarks = (landmarks.view(68,2).detach().numpy() + 0.5) * np.array([[w, h]]) + np.array([[x, y]])
    all_landmarks.append(landmarks)

plt.figure()
plt.imshow(display_image)
for landmarks in all_landmarks:
    plt.scatter(landmarks[:,0], landmarks[:,1], c = 'c', s = 5)

plt.show()

OpenCV Haar級聯分類器用于檢測圖像中的人臉。使用Haar級聯進行對象檢測是一種基于機器學習的方法,其中使用一組輸入數據對級聯函數進行訓練。OpenCV已經包含了許多預訓練的分類器,用于人臉、眼睛、行人等等。在我們的案例中,我們將使用人臉分類器,你需要下載預訓練的分類器XML文件并將其保存到你的工作目錄中。

人臉檢測

在輸入圖像中檢測到的人臉將被裁剪、調整大小為(224,224)并輸入到我們訓練好的神經網絡中以預測其中的關鍵點。

裁剪人臉上的關鍵點

在裁剪的人臉上疊加預測的關鍵點。結果如下圖所示。相當令人印象深刻,不是嗎?

最終結果

同樣,在多個人臉上進行關鍵點檢測:

在這里,你可以看到OpenCV Haar級聯分類器已經檢測到了多個人臉,包括一個誤報(一個拳頭被預測為人臉)。

責任編輯:趙寧寧 來源: 小白玩轉Python
相關推薦

2024-06-12 12:57:12

2013-05-28 11:08:51

人臉識別html5

2019-03-27 15:10:02

開源人臉檢測庫

2021-09-07 09:01:07

人臉識別人工智能數據

2015-02-10 10:08:59

JavaScript

2021-08-13 10:01:19

人臉識別人工智能數據

2021-05-10 11:08:00

人工智能人臉識別

2021-10-13 15:15:22

人工智能AI人臉識別

2017-03-20 08:58:02

Python人臉識別AI

2024-12-16 08:06:42

2017-01-23 21:35:58

Android人臉檢測介紹

2024-04-28 11:42:39

Python模型數據

2022-04-05 20:54:21

OpenCVPython人臉檢測

2020-12-23 08:29:08

人臉識別AI人工智能

2013-10-22 10:27:59

2019-10-08 15:08:28

人臉數據AI數據收集

2024-11-01 07:00:00

人臉識別Python機器學習

2024-05-09 10:36:53

AI視覺人工智能

2020-12-30 08:20:04

人臉檢測Retina FacemobileNet

2024-06-12 08:10:08

點贊
收藏

51CTO技術棧公眾號

精品三级av在线导航| 91在线高清| 亚洲少妇自拍| 亚洲系列中文字幕| 成人日韩在线视频| 不卡av免费观看| 久久婷婷成人综合色| 国产欧美一区二区三区久久| 538任你躁在线精品视频网站| 亚洲日本va中文字幕| 欧美日韩激情美女| 三区精品视频| 亚洲精品97久久中文字幕| 亚洲综合日本| 大胆人体色综合| www.免费av| 欧美成人福利| 无码av免费一区二区三区试看| 欧洲国产精品| av中文字幕第一页| 亚洲欧美视频一区二区三区| 久久天堂电影网| 成人在线视频免费播放| 欧美成人xxxx| 色偷偷88欧美精品久久久| 糖心vlog在线免费观看| 蜜桃成人在线视频| 成人激情黄色小说| 91精品国产自产在线老师啪| 日韩黄色在线视频| 欧美黄色精品| 中文字幕国产亚洲| 成人免费av片| eeuss国产一区二区三区四区| 欧美性生活久久| 国产中文字幕视频在线观看| 香蕉久久aⅴ一区二区三区| 国产欧美日韩三区| 久久综合入口| 人妻妺妺窝人体色www聚色窝| 老司机免费视频一区二区| 欧美亚洲国产精品| 国产奶水涨喷在线播放| 一区二区三区在线| 少妇av一区二区三区| 四虎国产精品成人免费入口| 无码熟妇人妻av| 国产日产欧美视频| 男男电影完整版在线观看| 国产精品18久久久久久久久久久久 | 波多野结衣不卡视频| 日韩免费久久| 亚洲一区二区久久| 素人fc2av清纯18岁| 91精品啪在线观看国产爱臀| 欧美一区二区三区四区久久| 91亚洲精品久久久蜜桃借种| 久久久久黄色| 欧美亚男人的天堂| 最新中文字幕免费视频| 91天天综合| 欧美亚洲一区二区在线| 青青草精品视频在线观看| **欧美日韩在线观看| 一本色道久久综合狠狠躁的推荐| 欧美 国产 日本| 成人av观看| 色综合久久综合| 激情五月开心婷婷| 欧美va在线观看| 在线观看成人免费视频| 浓精h攵女乱爱av| 欧美成人毛片| 91精品国产品国语在线不卡| 国产探花在线观看视频| 国产精品777777在线播放| 欧美一级久久久| 国产一卡二卡三卡四卡| 亚洲系列另类av| 中文字幕日韩精品在线观看| 日韩在线不卡av| 欧美午夜一区| 欧美一区亚洲一区| 又污又黄的网站| 国产在线视频不卡二| 97se亚洲综合在线| 亚洲色图另类小说| 欧美韩日一区二区三区| 精品嫩模一区二区三区| 大菠萝精品导航| 欧美中文字幕久久| 欧美一级免费在线| 欧美激情15p| 色偷偷综合社区| 精品一区二区三区四| 亚洲一区久久| 成人性生交大片免费看小说| 亚洲欧美强伦一区二区| 久久精品一级爱片| av 日韩 人妻 黑人 综合 无码| av电影免费在线看| 欧美日韩精品免费观看视频| 久久性爱视频网站| 波多野结衣在线播放一区| 日韩在线观看免费av| 日操夜操天天操| 久久91精品国产91久久小草| 国产一区国产精品| 日本蜜桃在线观看| 精品国产乱码久久久久久天美| 亚洲免费看av| 精品精品国产毛片在线看| 色综合亚洲精品激情狠狠| 成年免费在线观看| 国产美女娇喘av呻吟久久| 欧美日韩亚洲一区二区三区在线观看 | 欧美一区二区三区在线| 久久人人爽人人爽人人片| 日韩免费av| 人体精品一二三区| 亚洲国产一二三区| 中文字幕乱码日本亚洲一区二区| 成人免费毛片在线观看| av一级久久| 尤物yw午夜国产精品视频| 久久草视频在线| 国产九色精品成人porny| 日韩性感在线| 麻豆蜜桃在线观看| 精品国产乱码久久久久久牛牛| 日本激情视频一区二区三区| 日韩激情中文字幕| 麻豆av福利av久久av| www中文字幕在线观看| 日韩一级免费一区| 情侣偷拍对白清晰饥渴难耐| 久久夜色精品| 国内一区二区在线视频观看| 在线电影福利片| 欧美日韩三级一区二区| 在哪里可以看毛片| 欧美专区18| 久久久久久99| 麻豆蜜桃在线观看| 亚洲福利视频网| 国产亚洲精品久久久久久无几年桃 | 久久成年人免费电影| 91精品国产乱码久久久| 亚洲国产成人午夜在线一区| 午夜精品久久久内射近拍高清 | 久久国产精品久久久久久电车 | 亚洲精品第五页| 亚洲精品乱码久久久久久| 性欧美在线视频| 欧美mv日韩| 国产主播精品在线| 在线看黄色av| 91精品国产91久久综合桃花| frxxee中国xxx麻豆hd| 国产在线观看免费一区| 亚洲欧美日韩不卡| 欧美1区2区3| 欧美激情亚洲综合一区| 免费的黄色av| 亚洲成人动漫在线观看| 无码精品一区二区三区在线播放| 国产精品三上| 日韩福利视频| 亚洲日本中文| 欧美人在线视频| 人妻偷人精品一区二区三区| 精品免费在线观看| 麻豆av免费观看| 美国毛片一区二区三区| av不卡在线免费观看| theporn国产在线精品| 91精品国产亚洲| 成人在线播放视频| 日韩亚洲欧美在线观看| 精品视频久久久久| 久久亚洲一区二区三区四区| 久久综合伊人77777麻豆最新章节| 日韩欧美一区二区三区免费看| 成人性生交大片免费观看嘿嘿视频| 日本高清成人vr专区| 日韩av影视综合网| 在线观看国产精品视频| 亚洲激情综合网| 亚洲国产精品成人综合久久久| 人禽交欧美网站| 欧美一级中文字幕| 日韩三级av| 成人av色在线观看| 国产激情视频在线看| 一区二区欧美久久| 亚洲乱码国产乱码精品精软件| 欧美日韩一区二区免费视频| 天堂а√在线中文在线鲁大师| 国产91对白在线观看九色| 欧美日韩在线免费播放| 欧美一区二区三区久久精品茉莉花 | 国产一区二中文字幕在线看| 成人高清在线| 日韩一区二区三区精品视频| 亚洲 欧美 成人| 亚洲欧美在线另类| 在线免费观看成年人视频| 久久成人免费网| 午夜免费福利小电影| 久久国产精品亚洲人一区二区三区 | 日韩一区二区影院| 三级网站在线播放| 亚洲综合清纯丝袜自拍| jizz中文字幕| 99久久免费视频.com| 97人人爽人人| 三级影片在线观看欧美日韩一区二区| 日韩欧美猛交xxxxx无码| 国产日韩欧美一区二区三区| 国产成人精品福利一区二区三区| 韩国精品主播一区二区在线观看| 久久99国产综合精品女同| www日韩tube| 国产丝袜一区视频在线观看| xxxx国产精品| 69久久99精品久久久久婷婷 | 一级做a爰片毛片| 国产精品一区二区久久精品爱涩| 五月天婷婷激情视频| 午夜一级久久| 国产69精品久久久久999小说| 欧美一区二区| 日日噜噜夜夜狠狠久久丁香五月 | 亚洲精品视频在线播放| 亚洲av少妇一区二区在线观看| 9191成人精品久久| 中文字幕一级片| 色综合中文字幕国产| 欧美福利视频一区二区| 亚洲高清在线视频| 麻豆一区二区三区精品视频| 一区二区三区色| 综合五月激情网| 亚洲婷婷综合久久一本伊一区| av片在线免费看| 欧美极品少妇xxxxⅹ高跟鞋| 国精产品一区一区三区免费视频| 99国产一区二区三精品乱码| yjizz视频| 成人精品视频网站| 麻豆免费在线观看视频| 国产成人午夜电影网| 日批视频在线看| 国产一区二区福利视频| 欧美国产在线一区| 国产乱码精品一区二区三区忘忧草 | 在线观看欧美日本| 久久久久亚洲视频| 欧美视频一区二区三区四区| 亚洲一区二区人妻| 91精品中文字幕一区二区三区| 一级黄色大片免费观看| 777亚洲妇女| 亚洲AV无码精品国产| 亚洲风情亚aⅴ在线发布| 亚洲人妻一区二区三区| 亚洲人成伊人成综合网久久久| 成人在线播放视频| 久热爱精品视频线路一| 欧美hdxxx| 国产91精品青草社区| 日韩美女在线看免费观看| 国产精品自在线| 精品一区二区三区亚洲| 国产亚洲一区在线播放| 中文字幕无码人妻少妇免费| 蜜桃久久精品一区二区| 天天色天天综合网| 国产99精品国产| 五级黄高潮片90分钟视频| 欧美国产乱子伦| 国产视频精品免费| 亚洲影院在线观看| 精品在线播放视频| 91成人国产精品| 国产露脸无套对白在线播放| 精品国产免费久久| 国产视频精选在线| 久久69精品久久久久久久电影好| 麻豆国产在线| 国产欧美日韩精品在线观看 | 一区二区三区国产在线| 国产精彩免费视频| 国产九色精品成人porny| 欧美熟妇精品黑人巨大一二三区| 国产精品国产三级国产专播品爱网| 九九热国产精品视频| 欧美性猛xxx| aaa一区二区| 亚洲欧美日韩精品久久亚洲区| 国产乱色在线观看| 日韩av高清不卡| 亚洲高清在线一区| 日韩高清国产一区在线观看| 你懂的国产精品永久在线| 国产成人综合一区| 懂色av噜噜一区二区三区av| 欧美另类z0zx974| 亚洲国产欧美在线| 在线免费看91| 亚洲欧美精品一区| 免费影视亚洲| 91系列在线观看| 久久爱www成人| a级片一区二区| 麻豆成人久久精品二区三区红| 北岛玲一区二区| 成人豆花视频| 国产精品久久久久免费a∨大胸| 亚洲午夜精品| 中文字幕一区二区三区四区五区| 亚洲欧美视频| 亚洲一区二区在线免费| 亚洲精品久久嫩草网站秘色| 波多野结衣小视频| 日韩精品欧美激情| 国产做受高潮漫动| 成人av网站免费观看| 九九热久久免费视频| 91久久精品网| 亚洲欧洲国产综合| 久久久久久久久久国产| 国产在线一区不卡| 正在播放91九色| 日韩国产精品久久久久久亚洲| 极品白嫩丰满美女无套| 亚洲午夜视频在线| www.黄色片| 美日韩精品免费视频| 香蕉久久一区| 亚洲春色在线视频| 日韩中文字幕一区二区三区| 中文字幕狠狠干| 午夜精品久久久久久久久久久| 精品国产乱码一区二区三 | 亚洲美女爱爱视频| 国产精品剧情在线亚洲| 伊人成年综合网| 亚洲视屏在线播放| av激情成人网| 婷婷久久青草热一区二区 | 久久不卡国产精品一区二区| 日本不卡在线观看视频| 99re热视频精品| 久久不卡免费视频| 日韩久久免费电影| 惠美惠精品网| 日韩欧美亚洲v片| 日本 国产 欧美色综合| 中文字幕求饶的少妇| 欧美一区二区三区四区久久| 青春草在线免费视频| 韩日午夜在线资源一区二区 | 亚洲精品视频导航| 中文子幕无线码一区tr| 一区二区www| 久久99亚洲热视| 国产精品一线| 干日本少妇首页| 国产亚洲福利社区一区| 中文字幕一区二区免费| 久久久国产视频| 国产精品对白| 成年人网站大全| 国产精品久久久久久妇女6080| 国产叼嘿视频在线观看| 高清亚洲成在人网站天堂| 伊人久久大香线蕉综合网蜜芽| 污污视频网站免费观看| 日韩一区欧美一区| 亚洲奶汁xxxx哺乳期| 欧美在线视频免费| 99久久精品网| 亚洲色图欧美另类| 色av成人天堂桃色av| 中文字幕免费高清电视剧网站在线观看| 99在线高清视频在线播放| 香蕉久久夜色精品| fc2ppv在线播放| 精品1区2区在线观看| 日本精品在线一区| 青青草视频国产| 久久这里只有精品6| 国产内射老熟女aaaa∵| 午夜精品蜜臀一区二区三区免费| 成人中文视频| 色综合久久五月| 欧美精品乱码久久久久久按摩| 国产精品13p| 综合久久国产|