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

解鎖多模態大語言模型:從原理到實戰,一文全掌握! 原創

發布于 2025-3-13 10:35
瀏覽
0收藏

引言:人工智能領域的新焦點

在人工智能飛速發展的大環境下,近年來備受矚目的一個領域便是多模態大語言模型(MLLMs)。這些具有變革性的工具不僅能夠處理和生成文本,還能處理圖像、音頻和視頻等其他形式的數據。通過借助機器學習和深度學習算法的強大力量,多模態大語言模型能夠捕捉人類在多種模態下交流的細微差別,為自然語言處理、計算機視覺和多媒體分析等領域的應用開辟了新的可能性。

隨著我們不斷拓展多模態大語言模型的能力邊界,研究這些模型在結合視覺和聽覺信息后生成新穎文本內容的潛力變得愈發重要。在一個由人工智能驅動的 “多模態世界” 中,系統能夠無縫整合多種形式的數據以創造新的意義和價值,這已不再是科幻小說中的情節。

事實上,正如近期的研究和應用所展示的那樣,多模態大語言模型在生成連貫、特定于上下文且富有細微差別的文本方面已經展現出了卓越的能力。例如,一個在圖像和字幕數據集上訓練的多模態模型,能夠生成與新圖像語義準確且在風格上與原始字幕一致的新穎描述。

作為 “讓我們……” 系列的一部分,我們旨在通過進行一項實驗,進一步探索多模態大語言模型的潛力,該實驗旨在突破結合視覺和語言信息時的可能性極限。本研究有兩個具體目標:一是掌握多模態大語言模型的基礎知識;二是通過實驗來展示多模態大語言模型的能力。

多模態大語言模型(MLLM)

多模態大語言模型(MLLM)是一種人工智能(AI)模型,它可以處理和生成文本,以及其他形式的數據,比如:

  1. 圖像:多模態大語言模型能夠理解圖像的內容,包括其中的物體、場景和動作。
  2. 音頻:它可以分析音頻記錄,包括語音、音樂和各種聲音。
  3. 視頻:能夠處理視頻內容,涵蓋視覺和聽覺信息。

換句話說,多模態大語言模型是一種在多樣化的數據類型上進行訓練的大語言模型,這使得它能夠理解和生成與這些不同模態(或形式)的數據相關的文本。

多模態大語言模型旨在處理多模態數據的復雜性,這可能包括:

  1. 語義:理解多種語言中單詞、短語和句子的含義。
  2. 句法:分析語言的結構,包括語法和句子結構。
  3. 視覺:識別圖像和視頻中的物體、場景和動作。
  4. 聽覺:分析語音、音樂和聲音。

解鎖多模態大語言模型:從原理到實戰,一文全掌握!-AI.x社區

多模態大語言模型(MLLMs)基于幾個關鍵組件構建:

  1. 模態編碼器:這個組件將圖像、音頻和視頻等輸入數據轉換為特征表示。例如ViT、CLIP和HuBERT等。
  2. 輸入投影器:該組件將編碼器的特征與大語言模型的文本輸入連接起來。方法包括線性、多層感知器(MLP)和交叉注意力。
  3. 大語言模型(LLMs):在多模態大語言模型中會使用像GPT、LLaMA和Flan-T5這樣的大語言模型架構。
  4. 輸出投影器:此組件將語言模型的特征映射到圖像、視頻或音頻等數據類型的特征。例如MLP和Tiny Transformer。
  5. 模態生成器:該組件使用特征表示生成所需的數據。例如用于圖像的Stable Diffusion、用于視頻的Zeroscope和用于音頻的AudioLDM。

解鎖多模態大語言模型:從原理到實戰,一文全掌握!-AI.x社區

自GPT-4發布以來,由于其多模態示例,對多模態語言模型(MLLMs)的研究激增。

多模態大語言模型的優點包括:

  1. 更好地理解人類交流:通過處理多種形式的數據,多模態大語言模型可以更好地理解人類在不同模態下的交流方式。
  2. 增強的多模態生成能力:多模態大語言模型可以生成更細致入微且特定于上下文的文本,同時考慮到場景或情況的視覺和聽覺方面。
  3. 更好地表示語言:多模態大語言模型能夠捕捉現實世界場景中語言使用的復雜性,在這些場景中通常存在多種形式的數據。

解鎖多模態大語言模型:從原理到實戰,一文全掌握!-AI.x社區

總之,多模態大語言模型是一種強大的人工智能工具,它可以處理、生成和理解文本以及其他形式的數據,如圖像、音頻和視頻。

代碼實現

BLIP-2模型架構將問題和圖像作為輸入進行處理,其輸出是基于問題和圖像上下文的答案。BLIP-2由以下組件組成:

  1. 圖像編碼器:使用CLIP ViT(視覺變換器)從輸入圖像中提取視覺特征。
  2. 輸入投影器:Q-Former負責將問題和圖像特征投影為適合大語言模型的統一表示。
  3. 大語言模型(LLMs):我們使用Flan-T5/OPT作為其語言模型核心,它根據問題和圖像的組合上下文生成最終答案。

BLIP-2是一種高效且有效的視覺與語言預訓練策略,它利用凍結的預訓練模型和輕量級的查詢變換器,以顯著更少的可訓練參數實現了領先的性能。這種方法使模型在各種任務中表現出色,包括零樣本VQAv2以及帶有自然語言指令的圖像到文本生成。

在接下來的部分,我們將使用transformers庫在VQA數據集上訓練BLIP-2模型。VQA數據集包含14,550個樣本,每個樣本由一個輸入(圖像 + 問題)和一個輸出(答案)組成。

環境設置

我們從指定位置下載VQA數據集以及必要的庫。

# 下載并解壓數據集
!gdown 1--CmXocqkrcPR-bbSDztnxBM9dBC8uUJ 
!unzip /content/IconDomainVQAData.zip

# 安裝必要的庫
!pip install -q peft transformers bitsandbytes datasets

然后,我們調用在實驗過程中會用到的庫。

import os, json
from PIL import Image

from tqdm import tqdm

import torch
from torch.utils.data import Dataset, DataLoader
from torch import optim

from peft import LoraConfig, get_peft_model

from transformers import BlipProcessor, BlipForQuestionAnswering

from datasets import load_dataset, DatasetDict

實驗設置

在這一步,我們準備數據集,構建模型,并制定訓練策略,以確保模型在視覺問答任務中表現最佳。

現在,將數據集加載到數據集設置中:

ds = load_dataset("json", data_files=f"{data_path}/train.jsonl")
ds

輸出結果為:

DatasetDict({
    train: Dataset({
        features: ['question', 'answer', 'ques_type', 'grade', 'label', 'pid', 'unit', 'hint'],
        num_rows: 14551
    })
})

由于我們已經擁有了數據集,接下來開始構建在訓練過程中起著至關重要作用的Dataset對象。

# 構建Dataset
class VQADataset(Dataset):

    def __init__(self, dataset, processor, data_path):
        self.dataset = dataset
        self.processor = processor
        self.data_path = data_path

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

    def __getitem__(self, idx):

        question = self.dataset[idx]['question']
        answer = self.dataset[idx]['answer']
        image_id = self.dataset[idx]['pid']
        image_path = os.path.join(self.data_path, f"train_fill_in_blank/train_fill_in_blank/{image_id}/image.png")
        image = Image.open(image_path).convert("RGB")
        text = question

        encoding = self.processor(image, text, padding="max_length", truncatinotallow=True, return_tensors="pt")
        labels = self.processor.tokenizer.encode(answer, max_length=8, pad_to_max_length=True, return_tensors="pt")
        encoding['labels'] = labels
        for k, v in encoding.items():
            encoding[k] = v.squeeze()

        return encoding

由于我們在VQADataset對象中有了處理器,接下來加載處理所需的內容。我們使用Salesforce/blip-vqa-base模型,并對模型進行一些量化處理。

model_id = "Salesforce/blip-vqa-base"
processor = BlipProcessor.from_pretrained(model_id)
model = BlipForQuestionAnswering.from_pretrained(model_id)

lora_config = LoraConfig(
                    r=16,
                    lora_alpha=32,
                    lora_dropout=0.05,
                    bias="none",
                    target_modules=["query", "key"]
                    )

model = get_peft_model(model, lora_config )
device = torch.device("cuda"if torch.cuda.is_available() else"cpu")
model.to(device)
model.print_trainable_parameters()

輸出結果為:

trainable params: 2,359,296 || all params: 387,031,868 || trainable%: 0.6096

我們創建DataLoader。首先,為訓練數據集和驗證數據集創建Dataset對象。

train_dataset = VQADataset(dataset=ds["train"],
                           processor=processor,
                           data_path=data_path)
val_dataset = VQADataset(dataset=ds["train"],
                           processor=processor,
                           data_path=data_path)

然后,進行創建DataLoader所需的操作。

batch_size=8
train_dataloader = DataLoader(train_dataset,
                              batch_size=batch_size,
                              shuffle=True,
                              pin_memory=True)
val_dataloader = DataLoader(val_dataset,
                            batch_size=batch_size,
                            shuffle=False,
                            pin_memory=True)

此時我們可以開始訓練過程。

# ======== 設置部分========
# 
optimizer = optim.AdamW(model.parameters(),
                        lr=4e-5)
scheduler = optim.lr_scheduler.ExponentialLR(optimizer,
                                             gamma=0.9,
                                             last_epoch=-1,
                                             verbose=True)
n_epochs = 1
min_val_loss = float("inf")
scaler = torch.cuda.amp.GradScaler()

# ======== 訓練部分========
# 
for epoch in range(n_epochs):

    # 訓練設置
    train_loss = []
    model.train()
    for idx, batch in zip(tqdm(range(len(train_dataloader)),
                               desc=f"Training Batch {epoch+1}"), train_dataloader):
        input_ids = batch.pop("input_ids").to(device)
        pixel_values = batch.pop("pixel_values").to(device)
        attention_masked = batch.pop('attention_mask').to(device)
        labels = batch.pop('labels').to(device)

        with torch.amp.autocast(device_type='cuda', dtype=torch.float16):
            outputs = model(input_ids=input_ids,
                            pixel_values=pixel_values,
                            labels=labels)

        loss = outputs.loss
        train_loss.append(loss.item())

        ## 反向傳播
        optimizer.zero_grad()
        scaler.scale(loss).backward()
        scaler.step(optimizer)
        scaler.update()

    # 驗證設置
    val_loss = []
    model.eval()
    for idx, batch in zip(tqdm(range(len(val_dataloader)),
                               desc=f"Validating Batch {epoch+1}"), val_dataloader):
        input_ids = batch.pop("input_ids").to(device)
        pixel_values = batch.pop("pixel_values").to(device)
        attention_masked = batch.pop('attention_mask').to(device)
        labels = batch.pop('labels').to(device)

        with torch.amp.autocast(device_type='cuda', dtype=torch.float16):
            outputs = model(input_ids=input_ids,
                            pixel_values=pixel_values,
                            attention_mask=attention_masked,
                            labels=labels)

        loss = outputs.loss
        val_loss.append(loss.item())

        avg_train_loss = sum(train_loss)/len(train_loss)
        avg_val_loss = sum(val_loss)/len(val_loss)
        lr_per_epoch = optimizer.param_groups[0]["lr"]
    print(f"Epoch: {epoch + 1} - Training Loss: {avg_train_loss} - Eval Loss: {avg_val_loss} - LR: {lr_per_epoch}")

    scheduler.step()

    if avg_val_loss < min_val_loss:
        model.save_pretrained('./save_model', from_pt=True)
        print ("Saved model to ./save_model")
        min_eval_loss = avg_val_loss
processor.save_pretrained ("./save_model", from_pt=True )

最后,我們可以通過以下步驟測試模型的能力:

調用剛剛訓練好的模型

retrain_model_dir = './save_model'
processor = BlipProcessor.from_pretrained(retrain_model_dir)
model = BlipForQuestionAnswering.from_pretrained(retrain_model_dir).to(device)

選擇一個樣本進行測試

test_data_dir = f"{data_path}/test_data/test_data"
samples = os.listdir(test_data_dir)
sample_path = os.path.join(test_data_dir, samples[0])
json_path = os.path.join(sample_path, "data.json")

with open(json_path, "r") as json_file:
    data = json.load(json_file)
    question = data["question"]
    image_id = data["id"]

"""
question
"""

"""
image_path = os.path.join(test_data_dir, f"{image_id}", "image.png")
image = Image.open(image_path).convert("RGB")
image
"""

使用檢索到的樣本向模型提問答案

encoding = processor(image,
                     question,
                     return_tensors="pt").to(device, torch.float16)

outputs = model.generate(**encoding)

generated_text = processor.decode(outputs[0], skip_special_tokens=True)

generated_text

結論

我們探索了多模態大語言模型(MLLMs)這個充滿魅力的世界,深入研究了它們的基本原理以及在各種應用中,尤其是在視覺問答領域所蘊含的令人興奮的潛力。此外,我們看到了這些模型如何經過訓練來理解和推理文本和視覺信息,使它們能夠以令人印象深刻的準確性回答與圖像和視頻相關的問題。

隨著我們不斷前進,多模態大語言模型的研究和開發將繼續推動人工智能領域的可能性邊界。我們可以期待看到更復雜的模型,這些模型能夠處理需要深入理解我們周圍世界的復雜任務。


本文轉載自公眾號Halo咯咯    作者:基咯咯

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

?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
收藏
回復
舉報
回復
相關推薦
疯狂揉花蒂控制高潮h| 久热这里只精品99re8久| 在线视频这里只有精品| crdy在线观看欧美| 日本一区二区三区久久久久久久久不 | 亚洲污视频在线观看| 国产盗摄在线观看| 成人动漫一区二区三区| 国产精品女主播| 国产亚洲精品码| 国产精品美女久久久久久不卡| 五月激情综合色| 亚洲欧洲三级| 亚洲 国产 欧美 日韩| 在线日韩中文| 久久精品国产亚洲精品2020| 中文文字幕文字幕高清| 色综合视频一区二区三区44| 精品久久香蕉国产线看观看gif| 国产在线一区二区三区播放| 日本三级理论片| 欧美www视频在线观看| 亚洲精品电影网站| 伦伦影院午夜理论片| 三上悠亚一区二区| 亚洲国产欧美在线| 国产成年人在线观看| 头脑特工队2在线播放| 国产精品一级在线| 久久久亚洲精选| 久久一区二区电影| 日韩精品一区二区三区免费视频| 亚洲制服丝袜一区| 在线观看欧美亚洲| 成人影视在线播放| 26uuu国产日韩综合| 鬼打鬼之黄金道士1992林正英| 国产亚洲精品久久777777| 天天超碰亚洲| 这里只有精品视频在线| 亚洲专区区免费| 韩国女主播一区二区三区| 日韩一区二区三区视频在线| 无尽裸体动漫2d在线观看| 影视一区二区三区| 五月天丁香久久| 亚洲欧美影院| av大片在线看| 国产精品久久久久久久久果冻传媒| 亚洲影视中文字幕| 888奇米影视| 精品一区二区综合| 成人妇女淫片aaaa视频| 在线免费观看av片| 国内精品久久久久影院色| 国产综合香蕉五月婷在线| 亚洲网站免费观看| 精品在线一区二区三区| 国产欧美日韩视频| 亚洲天堂国产精品| 国产毛片精品视频| 草莓视频一区| 天天舔天天干天天操| 91网页版在线| 五月天色一区| 免费高清在线观看| 一区二区三区精品| 国产资源在线免费观看| 第一福利在线视频| 色婷婷久久99综合精品jk白丝| www.18av.com| 欧美成人高清在线| 亚洲免费在线看| 亚洲欧美综合一区| 97caopron在线视频| 亚洲一二三区视频在线观看| 男女高潮又爽又黄又无遮挡| 玛雅亚洲电影| 欧美日韩一区二区在线观看视频 | 精品资源在线看| 国产日韩欧美电影| 激情伦成人综合小说| 免费动漫网站在线观看| 亚洲天堂中文字幕| 日韩av在线播放不卡| 最新欧美电影| 欧美大片在线观看| 免费观看av网站| 亚洲精品国模| 日韩亚洲欧美中文高清在线| 黄色一级视频免费| 丝袜美腿亚洲色图| 亚洲综合成人婷婷小说| 青草久久伊人| 亚洲理论在线观看| 成人黄色片视频| 亚洲一区二区免费在线观看| 亚洲欧洲一区二区三区久久| 91精品国产自产| 欧美精品中文字幕亚洲专区| 最近2019年手机中文字幕| 激情五月婷婷小说| 蜜桃一区二区三区在线| 国产日韩欧美二区| 好了av在线| 色综合久久综合网欧美综合网 | 国产日韩欧美在线观看视频| 日韩视频一区| 成人国内精品久久久久一区| 日韩中文字幕观看| 亚洲色图欧美偷拍| 一二三四中文字幕| 日本欧美一区| 欧美日韩精品高清| 91精品国产自产| 国产主播一区| 91久久久在线| 国产九色在线| 欧美日韩国产一区二区三区| 任你操这里只有精品| 亚洲一区二区三区日本久久九| 日韩美女在线视频| 免费成人美女女在线观看| 午夜在线精品| 国产精品一区二区欧美黑人喷潮水| 少妇喷水在线观看| 国产亚洲欧美激情| 黄色免费观看视频网站| 国产精品jk白丝蜜臀av小说| 久久久精品国产亚洲| 亚洲av人无码激艳猛片服务器| 美女一区二区久久| 色噜噜一区二区| 国产精品一区二区av影院萌芽| 欧美中文一区二区三区| www.自拍偷拍| 欧美亚洲网站| 美女被啪啪一区二区| 韩国精品一区| 亚洲精品国偷自产在线99热| 免费网站看av| 成人在线视频首页| av高清在线免费观看| 91麻豆精品激情在线观看最新| 亚洲精品一区二区网址| 久久午夜免费视频| 99国产精品久久久| 欧美精品99久久| 香蕉久久夜色精品国产使用方法 | 手机免费观看av| 日韩和欧美一区二区三区| 欧美一二三区| 亚洲人免费短视频| 自拍偷拍免费精品| 国产精品久久久久毛片| 一区二区三区四区不卡在线 | 老司机精品视频在线| 日韩和欧美的一区二区| 成人免费网站www网站高清| 国产亚洲欧美aaaa| 91精品视频免费在线观看| 自拍偷在线精品自拍偷无码专区| 成年人观看网站| 免费av一区二区三区四区| 国产精品www网站| 午夜在线视频| 欧美一区二视频| 国产一级视频在线播放| 91香蕉视频黄| 欧美日韩在线成人| 丝袜久久网站| 国产精品久久久久影院日本| 头脑特工队2免费完整版在线观看| 亚洲丝袜美腿综合| 天天干天天综合| 亚洲色图欧美| 久久99精品久久久久久秒播放器| 女同视频在线观看| 亚洲开心激情网| 日韩欧美亚洲一区二区三区| 久久精品一区二区三区四区| 青青草久久伊人| 国产综合欧美| 欧美日韩亚洲在线| 中文字幕在线高清| 日韩av在线天堂网| 亚洲精品国产精品国自产网站按摩| 91亚洲精品久久久蜜桃网站| 亚洲综合在线网站| 欧美国产高潮xxxx1819| 欧美激情第一页在线观看| 电影91久久久| 久久艹在线视频| 国产人妻精品一区二区三区| 偷窥少妇高潮呻吟av久久免费| a级一a一级在线观看| 99视频精品| 综合视频免费看| 日韩在线麻豆| 亚洲在线视频福利| 亚洲精品国产嫩草在线观看| 久久av在线播放| 成人精品福利| 亚洲精品久久久久国产| 国产又大又黄又爽| 色成年激情久久综合| 中文字幕精品亚洲| av综合在线播放| 日本高清免费在线视频| 国产欧美91| 激情五月婷婷六月| 天天av综合| 亚洲欧美日韩精品综合在线观看| 国产高清亚洲| 午夜精品在线视频| 四虎精品成人影院观看地址| 日韩欧美在线免费观看| 国产一级在线视频| 亚洲精品中文在线影院| 国产一级免费片| 国产日韩一区二区三区在线播放| 免费精品视频一区| 久久精品嫩草影院| 国产成人精品视频| 国产乱色在线观看| 中文字幕一区电影| 性猛交富婆╳xxx乱大交天津| 午夜视频久久久久久| 婷婷在线精品视频| 亚洲欧洲精品天堂一级| 91精产国品一二三| 国产日韩专区| 成人毛片视频网站| 日韩一区二区久久| 三上悠亚久久精品| 日韩中文在线电影| 韩国一区二区三区美女美女秀| 日韩欧美一区二区三区免费观看| www.欧美精品一二三区| 成人免费在线电影| 日韩视频中文字幕| 久草免费在线观看| 久久精品国产2020观看福利| 日本三级视频在线观看| 色妞一区二区三区| 黄色成人影院| 欧美黑人视频一区| 国产探花在线观看| 午夜剧场成人观在线视频免费观看| 成人av一区| 最近2019中文字幕第三页视频| 人妻一区二区三区免费| 欧美老人xxxx18| 国产视频第一页| 色8久久人人97超碰香蕉987| 亚洲中文字幕无码爆乳av| 在线免费观看不卡av| 中日韩av在线| 欧美丝袜一区二区| 日韩不卡高清视频| 欧美精品在线一区二区| 国产成人精品a视频| 亚洲精品在线网站| 国产专区在线| 久久中文久久字幕| 都市激情久久综合| 国产ts一区二区| 国产99在线观看| 国产成人精彩在线视频九色| 青娱乐极品盛宴一区二区| 亚洲最大激情中文字幕| 美女视频亚洲色图| 天堂资源在线亚洲视频| 午夜精品视频| 欧美一级片中文字幕| 国产农村妇女精品一区二区| 久久综合久久久久| 久久久xxx| 红桃视频 国产| 成人免费三级在线| 亚洲色图第四色| 亚洲午夜三级在线| 波多野结衣一二区| 日韩亚洲欧美成人一区| 国产手机av在线| 亚洲美女动态图120秒| 免费在线观看黄色| 97高清免费视频| 欧美v亚洲v综合v国产v仙踪林| 国产精品va在线| 年轻的保姆91精品| 欧美午夜免费| 狠狠爱www人成狠狠爱综合网| 欧美日韩中文字幕在线播放| 午夜精品网站| 午夜视频在线瓜伦| av激情亚洲男人天堂| 最新黄色av网址| 精品人伦一区二区三区蜜桃免费| 国产一级做a爱片久久毛片a| 欧美乱妇20p| 国产视频二区在线观看| 中文字幕欧美日韩精品| 高清毛片在线观看| 亚洲精品欧美日韩| 成人激情自拍| 精品国产一区二区三| 91精品国产91久久久久久黑人| 99视频精品全部免费看| 老牛影视一区二区三区| 日韩精品视频一二三| 91视频国产资源| 久久久综合久久久| 欧美久久一二区| h网站在线免费观看| 91成人性视频| 大型av综合网站| 久久久天堂国产精品| 国产精品五区| 成年网站在线播放| 久久青草欧美一区二区三区| 国产一级特黄aaa大片| 欧美二区三区的天堂| 91.xxx.高清在线| 国产精品 欧美在线| 色88888久久久久久影院| 欧美黑人在线观看| 国产精品一级黄| 老司机成人免费视频| 亚洲高清不卡在线观看| va视频在线观看| 久久999免费视频| 国产精品一区三区在线观看| 一区二区三区视频在线播放| 人人爽香蕉精品| 国产黄色录像视频| 欧美日韩一区二区三区在线| 国产视频精品久久| 久久久女女女女999久久| 成av人片在线观看www| 国产精品视频入口| 成人网18免费网站| 小泽玛利亚视频在线观看| 国产精品区一区二区三| 天堂网avav| 欧美一区二区三区免费观看视频| 欧美一级在线免费观看| 日韩精品亚洲精品| 中文日产幕无线码一区二区| 国产精品偷伦视频免费观看国产 | 欧美日韩在线免费观看| 五月婷婷丁香花| 欧美又大又硬又粗bbbbb| 秋霞影院一区二区三区| 日韩有码免费视频| 中文字幕不卡一区| 国产精品人妻一区二区三区| 日韩成人在线视频| 成年人黄视频在线观看| 91嫩草免费看| 99精品视频免费观看| 中文字幕丰满乱子伦无码专区| **性色生活片久久毛片| 999av视频| 777777777亚洲妇女| 九九热线有精品视频99| 手机看片福利日韩| 成人丝袜18视频在线观看| 粉嫩aⅴ一区二区三区| 亚洲欧洲国产精品| 亚洲一区二区av| 日本不卡二区高清三区| 免费在线观看视频一区| 欧美xxxxx精品| 日本高清不卡视频| 五月天婷婷视频| 国产69精品久久久久9999| 在线亚洲a色| 小早川怜子一区二区三区| 亚洲6080在线| 18视频免费网址在线观看| 成人在线观看网址| 噜噜噜久久亚洲精品国产品小说| 91传媒理伦片在线观看| 中文字幕日韩一区二区| 免费看黄网站在线观看| 国产精品吹潮在线观看| 欧美日韩一区二区高清| 国产乱叫456| 黑人精品xxx一区一二区| 四虎永久在线精品免费网址| 欧美激情手机在线视频| 日韩www.| 亚洲av无码国产精品久久| 欧美精品丝袜中出| 91精彩视频在线观看| 国产精品亚洲综合| 99亚洲一区二区| 欧美特级一级片| 中日韩美女免费视频网站在线观看|