在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

UNet和UNet++:醫(yī)學(xué)影像經(jīng)典分割網(wǎng)絡(luò)對比

OpenCV學(xué)堂 ? 來源:AI公園 ? 作者:AI公園 ? 2022-04-25 10:38 ? 次閱讀

導(dǎo)讀

在不同的任務(wù)上對比了UNet和UNet++以及使用不同的預(yù)訓(xùn)練編碼器的效果。

介紹

語義分割是計(jì)算機(jī)視覺的一個(gè)問題,我們的任務(wù)是使用圖像作為輸入,為圖像中的每個(gè)像素分配一個(gè)類。在語義分割的情況下,我們不關(guān)心是否有同一個(gè)類的多個(gè)實(shí)例(對象),我們只是用它們的類別來標(biāo)記它們。有多種關(guān)于不同計(jì)算機(jī)視覺問題的介紹課程,但用一張圖片可以總結(jié)不同的計(jì)算機(jī)視覺問題:

5891bd82-c3e2-11ec-bce3-dac502259ad0.png

語義分割在生物醫(yī)學(xué)圖像分析中有著廣泛的應(yīng)用:x射線、MRI掃描、數(shù)字病理、顯微鏡、內(nèi)窺鏡等。https://grand-challenge.org/challenges上有許多不同的有趣和重要的問題有待探索。

從技術(shù)角度來看,如果我們考慮語義分割問題,對于N×M×3(假設(shè)我們有一個(gè)RGB圖像)的圖像,我們希望生成對應(yīng)的映射N×M×k(其中k是類的數(shù)量)。有很多架構(gòu)可以解決這個(gè)問題,但在這里我想談?wù)剝蓚€(gè)特定的架構(gòu),Unet和Unet++。

有許多關(guān)于Unet的評論,它如何永遠(yuǎn)地改變了這個(gè)領(lǐng)域。它是一個(gè)統(tǒng)一的非常清晰的架構(gòu),由一個(gè)編碼器和一個(gè)解碼器組成,前者生成圖像的表示,后者使用該表示來構(gòu)建分割。每個(gè)空間分辨率的兩個(gè)映射連接在一起(灰色箭頭),因此可以將圖像的兩種不同表示組合在一起。并且它成功了!

58bd8a7a-c3e2-11ec-bce3-dac502259ad0.png

接下來是使用一個(gè)訓(xùn)練好的編碼器。考慮圖像分類的問題,我們試圖建立一個(gè)圖像的特征表示,這樣不同的類在該特征空間可以被分開。我們可以(幾乎)使用任何CNN,并將其作為一個(gè)編碼器,從編碼器中獲取特征,并將其提供給我們的解碼器。據(jù)我所知,Iglovikov & Shvets 使用了VGG11和resnet34分別為Unet解碼器以生成更好的特征和提高其性能。

58dcf5cc-c3e2-11ec-bce3-dac502259ad0.png

TernausNet (VGG11 Unet)

Unet++是最近對Unet體系結(jié)構(gòu)的改進(jìn),它有多個(gè)跳躍連接。

58f2818a-c3e2-11ec-bce3-dac502259ad0.png

根據(jù)論文, Unet++的表現(xiàn)似乎優(yōu)于原來的Unet。就像在Unet中一樣,這里可以使用多個(gè)編碼器(骨干)來為輸入圖像生成強(qiáng)特征。

我應(yīng)該使用哪個(gè)編碼器?

這里我想重點(diǎn)介紹Unet和Unet++,并比較它們使用不同的預(yù)訓(xùn)練編碼器的性能。為此,我選擇使用胸部x光數(shù)據(jù)集來分割肺部。這是一個(gè)二值分割,所以我們應(yīng)該給每個(gè)像素分配一個(gè)類為“1”的概率,然后我們可以二值化來制作一個(gè)掩碼。首先,讓我們看看數(shù)據(jù)。

5913b238-c3e2-11ec-bce3-dac502259ad0.png

來自胸片X光數(shù)據(jù)集的標(biāo)注數(shù)據(jù)的例子

這些是非常大的圖像,通常是2000×2000像素,有很大的mask,從視覺上看,找到肺不是問題。使用segmentation_models_pytorch庫,我們?yōu)閁net和Unet++使用100+個(gè)不同的預(yù)訓(xùn)練編碼器。我們做了一個(gè)快速的pipeline來訓(xùn)練模型,使用Catalyst (pytorch的另一個(gè)庫,這可以幫助你訓(xùn)練模型,而不必編寫很多無聊的代碼)和Albumentations(幫助你應(yīng)用不同的圖像轉(zhuǎn)換)。

  1. 定義數(shù)據(jù)集和增強(qiáng)。我們將調(diào)整圖像大小為256×256,并對訓(xùn)練數(shù)據(jù)集應(yīng)用一些大的增強(qiáng)。
importalbumentationsasA
fromtorch.utils.dataimportDataset,DataLoader
fromcollectionsimportOrderedDict

classChestXRayDataset(Dataset):
def__init__(
self,
images,
masks,
transforms):
self.images=images
self.masks=masks
self.transforms=transforms

def__len__(self):
return(len(self.images))

def__getitem__(self,idx):
"""Willloadthemask,getrandomcoordinatesaround/withthemask,
loadtheimagebycoordinates
"""
sample_image=imread(self.images[idx])
iflen(sample_image.shape)==3:
sample_image=sample_image[...,0]
sample_image=np.expand_dims(sample_image,2)/255
sample_mask=imread(self.masks[idx])/255
iflen(sample_mask.shape)==3:
sample_mask=sample_mask[...,0]
augmented=self.transforms(image=sample_image,mask=sample_mask)
sample_image=augmented['image']
sample_mask=augmented['mask']
sample_image=sample_image.transpose(2,0,1)#channelsfirst
sample_mask=np.expand_dims(sample_mask,0)
data={'features':torch.from_numpy(sample_image.copy()).float(),
'mask':torch.from_numpy(sample_mask.copy()).float()}
return(data)

defget_valid_transforms(crop_size=256):
returnA.Compose(
[
A.Resize(crop_size,crop_size),
],
p=1.0)

deflight_training_transforms(crop_size=256):
returnA.Compose([
A.RandomResizedCrop(height=crop_size,width=crop_size),
A.OneOf(
[
A.Transpose(),
A.VerticalFlip(),
A.HorizontalFlip(),
A.RandomRotate90(),
A.NoOp()
],p=1.0),
])

defmedium_training_transforms(crop_size=256):
returnA.Compose([
A.RandomResizedCrop(height=crop_size,width=crop_size),
A.OneOf(
[
A.Transpose(),
A.VerticalFlip(),
A.HorizontalFlip(),
A.RandomRotate90(),
A.NoOp()
],p=1.0),
A.OneOf(
[
A.CoarseDropout(max_holes=16,max_height=16,max_width=16),
A.NoOp()
],p=1.0),
])


defheavy_training_transforms(crop_size=256):
returnA.Compose([
A.RandomResizedCrop(height=crop_size,width=crop_size),
A.OneOf(
[
A.Transpose(),
A.VerticalFlip(),
A.HorizontalFlip(),
A.RandomRotate90(),
A.NoOp()
],p=1.0),
A.ShiftScaleRotate(p=0.75),
A.OneOf(
[
A.CoarseDropout(max_holes=16,max_height=16,max_width=16),
A.NoOp()
],p=1.0),
])

defget_training_trasnforms(transforms_type):
iftransforms_type=='light':
return(light_training_transforms())
eliftransforms_type=='medium':
return(medium_training_transforms())
eliftransforms_type=='heavy':
return(heavy_training_transforms())
else:
raiseNotImplementedError("Notimplementedtransformationconfiguration")
  1. 定義模型和損失函數(shù)。這里我們使用帶有regnety_004編碼器的Unet++,并使用RAdam + Lookahed優(yōu)化器使用DICE + BCE損失之和進(jìn)行訓(xùn)練。
importtorch
importsegmentation_models_pytorchassmp
importnumpyasnp
importmatplotlib.pyplotasplt
fromcatalystimportdl,metrics,core,contrib,utils
importtorch.nnasnn
fromskimage.ioimportimread
importos
fromsklearn.model_selectionimporttrain_test_split
fromcatalyst.dlimportCriterionCallback,MetricAggregationCallback
encoder='timm-regnety_004'
model=smp.UnetPlusPlus(encoder,classes=1,in_channels=1)
#model.cuda()
learning_rate=5e-3
encoder_learning_rate=5e-3/10
layerwise_params={"encoder*":dict(lr=encoder_learning_rate,weight_decay=0.00003)}
model_params=utils.process_model_params(model,layerwise_params=layerwise_params)
base_optimizer=contrib.nn.RAdam(model_params,lr=learning_rate,weight_decay=0.0003)
optimizer=contrib.nn.Lookahead(base_optimizer)
scheduler=torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,factor=0.25,patience=10)
criterion={
"dice":DiceLoss(mode='binary'),
"bce":nn.BCEWithLogitsLoss()
}
  1. 定義回調(diào)函數(shù)并訓(xùn)練!
callbacks=[
#Eachcriterioniscalculatedseparately.
CriterionCallback(
input_key="mask",
prefix="loss_dice",
criterion_key="dice"
),
CriterionCallback(
input_key="mask",
prefix="loss_bce",
criterion_key="bce"
),

#Andonlythenweaggregateeverythingintooneloss.
MetricAggregationCallback(
prefix="loss",
mode="weighted_sum",
metrics={
"loss_dice":1.0,
"loss_bce":0.8
},
),

#metrics
IoUMetricsCallback(
mode='binary',
input_key='mask',
)

]

runner=dl.SupervisedRunner(input_key="features",input_target_key="mask")
runner.train(
model=model,
criterion=criterion,
optimizer=optimizer,
scheduler=scheduler,
loaders=loaders,
callbacks=callbacks,
logdir='../logs/xray_test_log',
num_epochs=100,
main_metric="loss",
minimize_metric=True,
verbose=True,
)

如果我們用不同的編碼器對Unet和Unet++進(jìn)行驗(yàn)證,我們可以看到每個(gè)訓(xùn)練模型的驗(yàn)證質(zhì)量,并總結(jié)如下:

59583070-c3e2-11ec-bce3-dac502259ad0.png

Unet和Unet++驗(yàn)證集分?jǐn)?shù)

我們注意到的第一件事是,在所有編碼器中,Unet++的性能似乎都比Unet好。當(dāng)然,有時(shí)這種差異并不是很大,我們不能說它們在統(tǒng)計(jì)上是否完全不同 —— 我們需要在多個(gè)folds上訓(xùn)練,看看分?jǐn)?shù)分布,單點(diǎn)不能證明任何事情。第二,resnest200e顯示了最高的質(zhì)量,同時(shí)仍然有合理的參數(shù)數(shù)量。有趣的是,如果我們看看https://paperswithcode.com/task/semantic-segmentation,我們會發(fā)現(xiàn)resnest200在一些基準(zhǔn)測試中也是SOTA。

好的,但是讓我們用Unet++和Unet使用resnest200e編碼器來比較不同的預(yù)測。

597a5e7a-c3e2-11ec-bce3-dac502259ad0.png

Unet和Unet++使用resnest200e編碼器的預(yù)測。左圖顯示了兩種模型的預(yù)測差異

在某些個(gè)別情況下,Unet++實(shí)際上比Unet更糟糕。但總的來說似乎更好一些。

一般來說,對于分割網(wǎng)絡(luò)來說,這個(gè)數(shù)據(jù)集看起來是一個(gè)容易的任務(wù)。讓我們在一個(gè)更難的任務(wù)上測試Unet++。為此,我使用PanNuke數(shù)據(jù)集,這是一個(gè)帶標(biāo)注的組織學(xué)數(shù)據(jù)集(205,343個(gè)標(biāo)記核,19種不同的組織類型,5個(gè)核類)。數(shù)據(jù)已經(jīng)被分割成3個(gè)folds。

59e83314-c3e2-11ec-bce3-dac502259ad0.png

PanNuke樣本的例子

我們可以使用類似的代碼在這個(gè)數(shù)據(jù)集上訓(xùn)練Unet++模型,如下所示:

5a230200-c3e2-11ec-bce3-dac502259ad0.png

驗(yàn)證集上的Unet++得分

我們在這里看到了相同的模式 - resnest200e編碼器似乎比其他的性能更好。我們可以用兩個(gè)不同的模型(最好的是resnest200e編碼器,最差的是regnety_002)來可視化一些例子。

5a37ee2c-c3e2-11ec-bce3-dac502259ad0.png

resnest200e和regnety_002的預(yù)測

我們可以肯定地說,這個(gè)數(shù)據(jù)集是一項(xiàng)更難的任務(wù) —— 不僅mask不夠精確,而且個(gè)別的核被分配到錯(cuò)誤的類別。然而,使用resnest200e編碼器的Unet++仍然表現(xiàn)很好。

總結(jié)

這不是一個(gè)全面語義分割的指導(dǎo),這更多的是一個(gè)想法,使用什么來獲得一個(gè)堅(jiān)實(shí)的基線。有很多模型、FPN,DeepLabV3, Linknet與Unet有很大的不同,有許多Unet-like架構(gòu),例如,使用雙編碼器的Unet,MAnet,PraNet,U2-net — 有很多的型號供你選擇,其中一些可能在你的任務(wù)上表現(xiàn)的比較好,但是,一個(gè)堅(jiān)實(shí)的基線可以幫助你從正確的方向上開始。

審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3673

    瀏覽量

    135310
  • 醫(yī)學(xué)影像
    +關(guān)注

    關(guān)注

    1

    文章

    111

    瀏覽量

    17405

原文標(biāo)題:UNet 和 UNet++:醫(yī)學(xué)影像經(jīng)典分割網(wǎng)絡(luò)對比

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    三維測量在醫(yī)療領(lǐng)域的應(yīng)用

    三維測量在醫(yī)療領(lǐng)域的應(yīng)用十分廣泛,為醫(yī)療診斷、治療及手術(shù)規(guī)劃等提供了重要的技術(shù)支持。以下是對三維測量在醫(yī)療領(lǐng)域應(yīng)用的分析: 一、醫(yī)學(xué)影像的三維重建與分析 CT、MRI等影像的三維重建 : 三維測量
    的頭像 發(fā)表于 12-30 15:21 ?280次閱讀

    東軟發(fā)布新一代醫(yī)學(xué)影像解決方案

    近日,東軟全新發(fā)布新一代醫(yī)學(xué)影像解決方案,以智能化為核心,以數(shù)據(jù)引擎為驅(qū)動,面向未來醫(yī)學(xué)影像行業(yè)的發(fā)展需求,全新定義醫(yī)學(xué)影像的產(chǎn)品價(jià)值,推動醫(yī)學(xué)影像信息化的全面升級與一體化融合。這是東
    的頭像 發(fā)表于 11-25 09:32 ?255次閱讀

    Dell PowerScale數(shù)據(jù)湖助力醫(yī)研一體化建設(shè)

    近年來,醫(yī)療影像設(shè)備不斷向更高水平和精密化發(fā)展,推動醫(yī)療服務(wù)向更高更快的品質(zhì)發(fā)展。基于醫(yī)學(xué)影像多學(xué)科會診的協(xié)作、智能輔助診斷、智能質(zhì)控、智能術(shù)前規(guī)劃,將快速推進(jìn)各項(xiàng)醫(yī)學(xué)科研成果進(jìn)行規(guī)范化的臨床應(yīng)用與轉(zhuǎn)化。
    的頭像 發(fā)表于 10-16 10:13 ?369次閱讀

    UNet模型屬于哪種神經(jīng)網(wǎng)絡(luò)

    U-Net模型屬于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的一種特殊形式 。它最初由德國弗萊堡大學(xué)計(jì)算機(jī)科學(xué)系的研究人員在2015年提出,專為生物醫(yī)學(xué)圖像
    的頭像 發(fā)表于 07-24 10:59 ?3300次閱讀

    醫(yī)學(xué)影像存儲與傳輸系統(tǒng)源碼,PACS系統(tǒng)源碼

    ?醫(yī)學(xué)影像存儲與傳輸系統(tǒng)中,PACS部分主要提供醫(yī)學(xué)影像獲取、影像信息網(wǎng)絡(luò)傳遞、大容量數(shù)據(jù)存儲、影像顯示和處理、
    的頭像 發(fā)表于 07-18 16:31 ?438次閱讀
    <b class='flag-5'>醫(yī)學(xué)影像</b>存儲與傳輸系統(tǒng)源碼,PACS系統(tǒng)源碼

    圖像語義分割的實(shí)用性是什么

    圖像語義分割是一種重要的計(jì)算機(jī)視覺任務(wù),它旨在將圖像中的每個(gè)像素分配到相應(yīng)的語義類別中。這項(xiàng)技術(shù)在許多領(lǐng)域都有廣泛的應(yīng)用,如自動駕駛、醫(yī)學(xué)圖像分析、機(jī)器人導(dǎo)航等。 一、圖像語義分割的基本原理 1.1
    的頭像 發(fā)表于 07-17 09:56 ?545次閱讀

    圖像分割和語義分割的區(qū)別與聯(lián)系

    圖像分割和語義分割是計(jì)算機(jī)視覺領(lǐng)域中兩個(gè)重要的概念,它們在圖像處理和分析中發(fā)揮著關(guān)鍵作用。 1. 圖像分割簡介 圖像分割是將圖像劃分為多個(gè)區(qū)域或?qū)ο蟮倪^程。這些區(qū)域或?qū)ο缶哂邢嗨频膶傩?/div>
    的頭像 發(fā)表于 07-17 09:55 ?1199次閱讀

    圖像識別技術(shù)在醫(yī)療領(lǐng)域的應(yīng)用

    的應(yīng)用已經(jīng)成為推動醫(yī)療技術(shù)發(fā)展的重要力量。 二、醫(yī)學(xué)影像診斷 醫(yī)學(xué)影像診斷是圖像識別技術(shù)在醫(yī)療領(lǐng)域應(yīng)用最為廣泛和成熟的領(lǐng)域之一。醫(yī)學(xué)影像診斷主要包括X射線、CT、MRI、超聲等影像技術(shù)
    的頭像 發(fā)表于 07-16 10:48 ?1210次閱讀

    經(jīng)典卷積網(wǎng)絡(luò)模型介紹

    經(jīng)典卷積網(wǎng)絡(luò)模型在深度學(xué)習(xí)領(lǐng)域,尤其是在計(jì)算機(jī)視覺任務(wù)中,扮演著舉足輕重的角色。這些模型通過不斷演進(jìn)和創(chuàng)新,推動了圖像處理、目標(biāo)檢測、圖像生成、語義分割等多個(gè)領(lǐng)域的發(fā)展。以下將詳細(xì)探討幾個(gè)經(jīng)典
    的頭像 發(fā)表于 07-11 11:45 ?640次閱讀

    圖像分割與語義分割中的CNN模型綜述

    圖像分割與語義分割是計(jì)算機(jī)視覺領(lǐng)域的重要任務(wù),旨在將圖像劃分為多個(gè)具有特定語義含義的區(qū)域或?qū)ο蟆>矸e神經(jīng)網(wǎng)絡(luò)(CNN)作為深度學(xué)習(xí)的一種核心模型,在圖像分割與語義
    的頭像 發(fā)表于 07-09 11:51 ?1197次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)在圖像和醫(yī)學(xué)診斷中的優(yōu)勢

    隨著人工智能技術(shù)的迅猛發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡稱CNN)作為一種深度學(xué)習(xí)的代表算法,在圖像處理和醫(yī)學(xué)診斷領(lǐng)域展現(xiàn)出了巨大的潛力和優(yōu)勢。CNN
    的頭像 發(fā)表于 07-01 15:59 ?1421次閱讀

    聽醫(yī)信人說 | 為什么醫(yī)院建網(wǎng)選擇極簡以太彩光網(wǎng)絡(luò)

    效率、改善患者的就醫(yī)體驗(yàn),網(wǎng)絡(luò)部署需要更加靈活、高效。傳統(tǒng)的頻繁打孔和布線方式不僅影響醫(yī)療業(yè)務(wù)的正常進(jìn)行,而且使用Hub和簡易交換機(jī)可能會給網(wǎng)絡(luò)穩(wěn)定性和運(yùn)維管理帶來額外的挑戰(zhàn)。 醫(yī)學(xué)影像的即時(shí)讀取 :高清
    的頭像 發(fā)表于 06-20 14:56 ?356次閱讀

    利用NVIDIA的nvJPEG2000庫分析DICOM醫(yī)學(xué)影像的解碼功能

    本文將深入分析 DICOM 醫(yī)學(xué)影像的解碼功能。AWS HealthImaging 利用 NVIDIA 的 nvJPEG2000 庫來實(shí)現(xiàn)此功能。
    的頭像 發(fā)表于 05-28 14:27 ?926次閱讀
    利用NVIDIA的nvJPEG2000庫分析DICOM<b class='flag-5'>醫(yī)學(xué)影像</b>的解碼功能

    AI醫(yī)學(xué)影像企業(yè)深智透醫(yī)完成B+輪近千萬美元融資

    AI醫(yī)學(xué)影像領(lǐng)域的領(lǐng)軍企業(yè)深智透醫(yī)(Subtle Medical Inc.)近日成功完成了B+輪近千萬美元的融資,使其累計(jì)融資額超過五千萬美元。此次融資的注入,將為公司全球商業(yè)拓展和產(chǎn)品研發(fā)創(chuàng)新提供強(qiáng)大的資金支持。
    的頭像 發(fā)表于 05-14 10:08 ?542次閱讀

    常見的醫(yī)學(xué)圖像讀取方式和預(yù)處理方法

    基于深度學(xué)習(xí)做醫(yī)學(xué)圖像數(shù)據(jù)分析,例如病灶檢測、腫瘤或者器官分割等任務(wù),第一步就是要對數(shù)據(jù)有一個(gè)大概的認(rèn)識。但是我剛剛?cè)腴T醫(yī)學(xué)圖像分割的時(shí)候,很迷茫不知道自己該干啥,不知道需要準(zhǔn)備哪些知
    發(fā)表于 04-19 11:43 ?1017次閱讀
    常見的<b class='flag-5'>醫(yī)學(xué)</b>圖像讀取方式和預(yù)處理方法
    主站蜘蛛池模板: 爽好舒服快受不了了老师 | 天天插视频 | 小雪被撑暴黑人黑人与亚洲女人 | 91啦中文在线观看 | 老师叫我下面含着精子去上课 | 日本一区不卡视频 | 天天干天天色综合 | 毛片官网 | 高清视频免费观看 | 日一日操一操 | 激情在线视频 | 97就要鲁就要鲁夜夜爽 | 国产成人精品视频一区二区不卡 | 免费无码看av的网站 | 久草亚洲视频 | 国产精品午夜自在在线精品 | 青青青久97在线观看香蕉 | 天堂网www天堂在线资源链接 | 国产成都一二三四区 | 亚洲成网777777国产精品 | 久草男人天堂 | 国产三级在线观看 | 九九视频热 | 99热久久国产精品 | 亚洲国产一区二区三区a毛片 | 国产大片黄在线看免费 | 亚洲人成影院在线高清 | 日韩一级视频 | 奇米影视第四色7777 | 国产卡一卡2卡三卡免费视频 | 女人牲交一级毛片 | 天天干干干干 | 精品一区二区三区18 | 黄色激情小说视频 | 狠狠狠色丁香婷婷综合久久88 | 久久艹影院 | 日本黄色电影在线 | 香港三级理论在线影院 | 电影天堂在线观看三级 | 在线欧美国产 | 日本不卡视频在线观看 |