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

使用Pytorch實現對比學習SimCLR 進行自監督預訓練

開發 前端
SimCLR(Simple Framework for Contrastive Learning of Representations)是一種學習圖像表示的自監督技術。 與傳統的監督學習方法不同,SimCLR 不依賴標記數據來學習有用的表示。 它利用對比學習框架來學習一組有用的特征,這些特征可以從未標記的圖像中捕獲高級語義信息。

SimCLR(Simple Framework for Contrastive Learning of Representations)是一種學習圖像表示的自監督技術。 與傳統的監督學習方法不同,SimCLR 不依賴標記數據來學習有用的表示。 它利用對比學習框架來學習一組有用的特征,這些特征可以從未標記的圖像中捕獲高級語義信息。

SimCLR 已被證明在各種圖像分類基準上優于最先進的無監督學習方法。 并且它學習到的表示可以很容易地轉移到下游任務,例如對象檢測、語義分割和小樣本學習,只需在較小的標記數據集上進行最少的微調。

圖片

SimCLR 主要思想是通過增強模塊 T 將圖像與同一圖像的其他增強版本進行對比,從而學習圖像的良好表示。這是通過通過編碼器網絡 f(.) 映射圖像,然后進行投影來完成的。 head g(.) 將學習到的特征映射到低維空間。 然后在同一圖像的兩個增強版本的表示之間計算對比損失,以鼓勵對同一圖像的相似表示和對不同圖像的不同表示。

本文我們將深入研究 SimCLR 框架并探索該算法的關鍵組件,包括數據增強、對比損失函數以及編碼器和投影的head 架構。

我們這里使用來自 Kaggle 的垃圾分類數據集來進行實驗

增強模塊

SimCLR 中最重要的就是轉換圖像的增強模塊。 SimCLR 論文的作者建議,強大的數據增強對于無監督學習很有用。 因此,我們將遵循論文中推薦的方法。

  • 調整大小的隨機裁剪
  • 50% 概率的隨機水平翻轉
  • 隨機顏色失真(顏色抖動概率為 80%,顏色下降概率為 20%)
  • 50% 概率為隨機高斯模糊

def get_complete_transform(output_shape, kernel_size, s=1.0):
"""
Color distortion transform

Args:
s: Strength parameter

Returns:
A color distortion transform
"""
rnd_crop = RandomResizedCrop(output_shape)
rnd_flip = RandomHorizontalFlip(p=0.5)

color_jitter = ColorJitter(0.8*s, 0.8*s, 0.8*s, 0.2*s)
rnd_color_jitter = RandomApply([color_jitter], p=0.8)

rnd_gray = RandomGrayscale(p=0.2)
gaussian_blur = GaussianBlur(kernel_size=kernel_size)
rnd_gaussian_blur = RandomApply([gaussian_blur], p=0.5)
to_tensor = ToTensor()
image_transform = Compose([
to_tensor,
rnd_crop,
rnd_flip,
rnd_color_jitter,
rnd_gray,
rnd_gaussian_blur,
])
return image_transform

class ContrastiveLearningViewGenerator(object):
"""
Take 2 random crops of 1 image as the query and key.
"""
def __init__(self, base_transform, n_views=2):
self.base_transform = base_transform
self.n_views = n_views

def __call__(self, x):
views = [self.base_transform(x) for i in range(self.n_views)]
return views

下一步就是定義一個PyTorch 的 Dataset 。

class CustomDataset(Dataset):
def __init__(self, list_images, transform=None):
"""
Args:
list_images (list): List of all the images
transform (callable, optional): Optional transform to be applied on a sample.
"""
self.list_images = list_images
self.transform = transform

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

def __getitem__(self, idx):
if torch.is_tensor(idx):
idx = idx.tolist()

img_name = self.list_images[idx]
image = io.imread(img_name)
if self.transform:
image = self.transform(image)

return image

作為樣例,我們使用比較小的模型 ResNet18 作為主干,所以他的輸入是 224x224 圖像,我們按照要求設置一些參數并生成dataloader

out_shape = [224, 224]
kernel_size = [21, 21] # 10% of out_shape

# Custom transform
base_transforms = get_complete_transform(output_shape=out_shape, kernel_size=kernel_size, s=1.0)
custom_transform = ContrastiveLearningViewGenerator(base_transform=base_transforms)

garbage_ds = CustomDataset(
list_images=glob.glob("/kaggle/input/garbage-classification/garbage_classification/*/*.jpg"),
transform=custom_transform
)

BATCH_SZ = 128

# Build DataLoader
train_dl = torch.utils.data.DataLoader(
garbage_ds,
batch_size=BATCH_SZ,
shuffle=True,
drop_last=True,
pin_memory=True)

SimCLR

我們已經準備好了數據,開始對模型進行復現。上面的增強模塊提供了圖像的兩個增強視圖,它們通過編碼器前向傳遞以獲得相應的表示。 SimCLR 的目標是通過鼓勵模型從兩個不同的增強視圖中學習對象的一般表示來最大化這些不同學習表示之間的相似性。

編碼器網絡的選擇不受限制,可以是任何架構。 上面已經說了,為了簡單演示,我們使用 ResNet18。 編碼器模型學習到的表示決定了相似性系數,為了提高這些表示的質量,SimCLR 使用投影頭將編碼向量投影到更豐富的潛在空間中。 這里我們將ResNet18的512維度的特征投影到256的空間中,看著很復雜,其實就是加了一個帶relu的mlp。

class Identity(nn.Module):
def __init__(self):
super(Identity, self).__init__()
def forward(self, x):
return x

class SimCLR(nn.Module):
def __init__(self, linear_eval=False):
super().__init__()
self.linear_eval = linear_eval
resnet18 = models.resnet18(pretrained=False)
resnet18.fc = Identity()
self.encoder = resnet18
self.projection = nn.Sequential(
nn.Linear(512, 512),
nn.ReLU(),
nn.Linear(512, 256)
)
def forward(self, x):
if not self.linear_eval:
x = torch.cat(x, dim=0)
encoding = self.encoder(x)
projection = self.projection(encoding)
return projection

對比損失

對比損失函數,也稱為歸一化溫度標度交叉熵損失 (NT-Xent),是 SimCLR 的一個關鍵組成部分,它鼓勵模型學習相同圖像的相似表示和不同圖像的不同表示。

NT-Xent 損失是使用一對通過編碼器網絡傳遞的圖像的增強視圖來計算的,以獲得它們相應的表示。 對比損失的目標是鼓勵同一圖像的兩個增強視圖的表示相似,同時迫使不同圖像的表示不相似。

NT-Xent 將 softmax 函數應用于增強視圖表示的成對相似性。 softmax 函數應用于小批量內的所有表示對,得到每個圖像的相似性概率分布。 溫度參數temperature 用于在應用 softmax 函數之前縮放成對相似性,這有助于在優化過程中獲得更好的梯度。

在獲得相似性的概率分布后,通過最大化同一圖像的匹配表示的對數似然和最小化不同圖像的不匹配表示的對數似然來計算 NT-Xent 損失。

LABELS = torch.cat([torch.arange(BATCH_SZ) for i in range(2)], dim=0)
LABELS = (LABELS.unsqueeze(0) == LABELS.unsqueeze(1)).float() #one-hot representations
LABELS = LABELS.to(DEVICE)

def ntxent_loss(features, temp):
"""
NT-Xent Loss.

Args:
z1: The learned representations from first branch of projection head
z2: The learned representations from second branch of projection head
Returns:
Loss
"""
similarity_matrix = torch.matmul(features, features.T)
mask = torch.eye(LABELS.shape[0], dtype=torch.bool).to(DEVICE)
labels = LABELS[~mask].view(LABELS.shape[0], -1)
similarity_matrix = similarity_matrix[~mask].view(similarity_matrix.shape[0], -1)

positives = similarity_matrix[labels.bool()].view(labels.shape[0], -1)

negatives = similarity_matrix[~labels.bool()].view(similarity_matrix.shape[0], -1)

logits = torch.cat([positives, negatives], dim=1)
labels = torch.zeros(logits.shape[0], dtype=torch.long).to(DEVICE)

logits = logits / temp
return logits, labels

所有的準備都完成了,讓我們訓練 SimCLR 看看效果!

simclr_model = SimCLR().to(DEVICE)
criterion = nn.CrossEntropyLoss().to(DEVICE)
optimizer = torch.optim.Adam(simclr_model.parameters())

epochs = 10
with tqdm(total=epochs) as pbar:
for epoch in range(epochs):
t0 = time.time()
running_loss = 0.0
for i, views in enumerate(train_dl):
projections = simclr_model([view.to(DEVICE) for view in views])
logits, labels = ntxent_loss(projections, temp=2)
loss = criterion(logits, labels)
optimizer.zero_grad()
loss.backward()
optimizer.step()

# print stats
running_loss += loss.item()
if i%10 == 9: # print every 10 mini-batches
print(f"Epoch: {epoch+1} Batch: {i+1} Loss: {(running_loss/100):.4f}")
running_loss = 0.0
pbar.update(1)
print(f"Time taken: {((time.time()-t0)/60):.3f} mins")

上面代碼訓練了10輪,假設我們已經完成了預訓練過程,可以將預訓練的編碼器用于我們想要的下游任務。這可以通過下面的代碼來完成。

from torchvision.transforms import Resize, CenterCrop
resize = Resize(255)
ccrop = CenterCrop(224)
ttensor = ToTensor()

custom_transform = Compose([
resize,
ccrop,
ttensor,
])

garbage_ds = ImageFolder(
root="/kaggle/input/garbage-classification/garbage_classification/",
transform=custom_transform
)

classes = len(garbage_ds.classes)

BATCH_SZ = 128

train_dl = torch.utils.data.DataLoader(
garbage_ds,
batch_size=BATCH_SZ,
shuffle=True,
drop_last=True,
pin_memory=True,
)

class Identity(nn.Module):
def __init__(self):
super(Identity, self).__init__()
def forward(self, x):
return x

class LinearEvaluation(nn.Module):
def __init__(self, model, classes):
super().__init__()
simclr = model
simclr.linear_eval=True
simclr.projection = Identity()
self.simclr = simclr
for param in self.simclr.parameters():
param.requires_grad = False
self.linear = nn.Linear(512, classes)
def forward(self, x):
encoding = self.simclr(x)
pred = self.linear(encoding)
return pred

eval_model = LinearEvaluation(simclr_model, classes).to(DEVICE)
criterion = nn.CrossEntropyLoss().to(DEVICE)
optimizer = torch.optim.Adam(eval_model.parameters())

preds, labels = [], []
correct, total = 0, 0

with torch.no_grad():
t0 = time.time()
for img, gt in tqdm(train_dl):
image = img.to(DEVICE)
label = gt.to(DEVICE)
pred = eval_model(image)
_, pred = torch.max(pred.data, 1)
total += label.size(0)
correct += (pred == label).float().sum().item()

print(f"Time taken: {((time.time()-t0)/60):.3f} mins")

print(
"Accuracy of the network on the {} Train images: {} %".format(
total, 100 * correct / total
)
)

上面的代碼最主要的部分就是讀取剛剛訓練的simclr模型,然后凍結所有的權重,然后再創建一個分類頭self.linear ,進行下游的分類任務

總結

本文介紹了SimCLR框架,并使用它來預訓練隨機初始化權重的ResNet18。預訓練是深度學習中使用的一種強大的技術,用于在大型數據集上訓練模型,學習可以轉移到其他任務中的有用特征。SimCLR論文認為,批量越大,性能越好。我們的實現只使用128個批大小,只訓練10個epoch。所以這不是模型的最佳性能,如果需要性能對比還需要進一步的訓練。

下圖是論文作者給出的性能結論:

圖片

責任編輯:華軒 來源: DeepHub IMBA
相關推薦

2022-01-06 09:57:02

數據計算機神經網絡

2023-09-06 09:59:12

雷達技術

2022-11-28 14:00:24

人工智能

2024-09-26 16:51:23

2024-01-29 00:24:07

圖像模型預訓練

2020-07-29 12:16:12

預訓練自訓練神經網絡

2019-03-10 22:22:06

PyTorchKeras深度學習

2020-01-20 14:25:19

數據平臺架構

2025-06-12 08:46:00

2025-06-11 14:45:57

強化學習訓練模型

2024-07-30 09:14:13

模型數據

2025-03-17 09:12:00

訓練模型AI

2025-07-09 07:52:59

2024-12-03 09:49:07

2023-02-08 10:49:56

深度學習模型

2025-08-15 12:36:04

2022-10-30 15:00:40

小樣本學習數據集機器學習

2017-12-26 13:53:31

深度學習遷移學習

2023-06-15 15:45:42

自然語言語言模型
點贊
收藏

51CTO技術棧公眾號

999久久久国产精品| 91黄色在线| 蜜桃精品在线观看| 久久精品99久久久久久久久| 久久久久久久高清| a视频在线免费看| 国产99久久久精品| 久久夜色精品国产亚洲aⅴ| 国产精品嫩草影视| 国产网站在线| 国产精品久久久久婷婷二区次| 成人欧美在线观看| 999精品视频在线观看播放| 欧美成人黄色| 一区二区三区久久久| 久久久久久一区| 国产又黄又粗又猛又爽| 精品91在线| 在线一区二区日韩| 理论片大全免费理伦片| a∨色狠狠一区二区三区| 亚洲乱码精品一二三四区日韩在线| 国产日本一区二区三区| 中国一级特黄视频| 精品999网站| 日韩在线资源网| 国产精品手机在线观看| 欧美xxxx性| 欧美午夜激情视频| 艳母动漫在线观看| 超碰在线影院| 久久久久久久电影| 国产三区二区一区久久| 国产欧美一级片| 麻豆91精品视频| 国产成人精品国内自产拍免费看| 久久在线视频精品| 欧美日韩三级| 欧美剧在线观看| 亚洲精品卡一卡二| 久久在线视频| 日韩中文综合网| 调教驯服丰满美艳麻麻在线视频| 亚洲激情播播| 亚洲精品美女在线观看| 美女扒开腿免费视频| 欧美专区一区| 日韩欧美在线影院| 免费观看黄网站| 日本国产亚洲| 7777精品伊人久久久大香线蕉最新版| 中文字幕视频在线免费观看| 玛雅亚洲电影| 欧美中文字幕一区| 50路60路老熟妇啪啪| 女厕盗摄一区二区三区| 亚洲va欧美va国产va天堂影院| 国产一二三四区在线观看| 在线看三级电影| 国产精品国产精品国产专区不片| 亚洲综合色激情五月| www.成人精品| 99久久精品国产一区二区三区| 国内视频一区| 久久久久久女乱国产| 久久久久久久久免费| 亚洲精品国产一区| 黄在线免费看| 亚洲综合清纯丝袜自拍| 日韩伦理在线免费观看| 澳门成人av网| 欧美日韩国产在线观看| 天天色天天干天天色| 成人av综合网| 亚洲人成电影网站色xx| 欧美激情精品久久久久久免费 | 日韩小视频在线观看专区| 性色av浪潮av| 亚洲制服欧美另类| 色av中文字幕一区| 伊人365影院| 麻豆91精品| 91亚洲精品在线| 免费看日韩av| 国产精品美女久久久久久| 亚洲最新免费视频| www欧美xxxx| 色综合天天狠狠| 亚洲精品免费一区亚洲精品免费精品一区| 美女精品久久| 亚洲理论在线a中文字幕| 网站永久看片免费| 亚洲看片一区| 国产免费成人av| 秋霞欧美在线观看| 国产精品麻豆视频| 国产3p露脸普通话对白| 免费一区二区三区四区| 亚洲成人免费在线视频| 亚洲av毛片基地| 亚洲国产专区校园欧美| 国产精品免费一区| 五月婷婷丁香网| **性色生活片久久毛片| 国产精品97在线| 日韩精品久久久久久久软件91| 精品无码久久久久久国产| 青青操在线视频观看| 嫩草成人www欧美| 成人性色av| 国产黄大片在线观看画质优化| 精品人伦一区二区三区蜜桃免费| 午夜剧场在线免费观看| 国产伦一区二区三区| 久久青草福利网站| aaa一区二区三区| 中国色在线观看另类| 好吊妞无缓冲视频观看| 97久久亚洲| 久久综合久久88| 中文字幕日本人妻久久久免费| av中文字幕不卡| 狠狠干视频网站| 欧美成人毛片| 中文字幕免费国产精品| 免费看毛片网站| 波多野结衣中文字幕一区| 国产成人免费高清视频| 黄色成人在线观看网站| 亚洲欧洲日本专区| 婷婷激情五月网| 99久久精品国产一区| 男人天堂av片| 中文一区二区三区四区| 欧美另类高清videos| 国产又黄又粗又硬| 国产精品三级在线观看| 视频二区在线播放| 成人av动漫在线观看| 奇米成人av国产一区二区三区| 色一情一乱一乱一区91av| 亚洲高清一区二区三区| 逼特逼视频在线观看| 狠狠88综合久久久久综合网| 91亚洲精品久久久久久久久久久久| 青青影院在线观看| 欧美精品三级在线观看| 看黄色录像一级片| 久久99久久久欧美国产| 99re99热| 激情视频亚洲| 欧美第一黄色网| 亚洲精品久久久久久久久久久久久久 | 国产精品久久久久久久久久久久冷 | 亚洲一区二区三区四区不卡| 在线播放av网址| 亚洲国产清纯| 欧美成ee人免费视频| 成人开心激情| 日韩午夜在线视频| av中文字幕观看| 亚洲午夜电影在线观看| 亚洲国产果冻传媒av在线观看| 中文欧美日韩| 天天人人精品| 国产精品日本一区二区三区在线| 欧美疯狂性受xxxxx另类| 亚洲欧洲国产综合| 欧美影院一区二区三区| 91精品少妇一区二区三区蜜桃臀| 国产精品77777| 能在线观看的av| 欧美岛国激情| 91久色国产| 亚洲v.com| 日韩中文在线中文网在线观看| 99在线观看精品视频| 丁香五六月婷婷久久激情| 粉嫩精品久久99综合一区| 国产一区日韩二区欧美三区| 国产精品久久久久9999爆乳| 国产不卡一二三区| 91久久精品美女高潮| 国产欧洲在线| 日韩最新av在线| 天堂网在线观看视频| 欧美日韩一区久久| 国产在线观看你懂的| 亚洲国产成人自拍| 亚洲一区二区三区四区av| 视频在线在亚洲| 欧美中文字幕在线观看视频| 亚洲8888| 91一区二区三区| 8av国产精品爽爽ⅴa在线观看| 久久6免费高清热精品| 国产在线观看精品一区| 欧美刺激午夜性久久久久久久| 国产一级片av| 亚洲高清免费观看高清完整版在线观看| 熟女俱乐部一区二区| 国产精品 日产精品 欧美精品| aa在线免费观看| 国产一区二区三区四区三区四| 乱一区二区三区在线播放| 久久影院一区二区三区| 国产精品久久一区| 麻豆免费在线| 欧美黄色www| 精品国产丝袜高跟鞋| 亚洲人成在线播放| 人妻视频一区二区三区| 91精品久久久久久久91蜜桃| www.五月婷婷.com| 精品国产成人av| 久久精品99国产精| 亚洲欧美一区二区在线观看| 日本一区二区视频在线播放| 成人av免费在线观看| 丰满少妇一区二区三区专区| 麻豆成人免费电影| 欧美自拍小视频| 天堂资源在线中文精品| www一区二区www免费| 欧美日韩一卡| 日本老太婆做爰视频| 午夜av一区| 在线成人性视频| 日韩国产专区| 午夜精品亚洲一区二区三区嫩草 | 国产成人高清在线| 在线观看免费视频污| 久久国产成人午夜av影院| 牛夜精品久久久久久久| 奇米精品一区二区三区在线观看一| 国产视频九色蝌蚪| 亚洲欧洲日本mm| 成人性生活视频免费看| 91久久亚洲| aa视频在线播放| 99伊人成综合| 69堂免费视频| 亚洲综合电影一区二区三区| 国产精品va无码一区二区| 亚洲麻豆一区| 久在线观看视频| 亚洲综合不卡| 日本精品久久久久中文字幕| 久久一区中文字幕| 丝袜制服一区二区三区| 麻豆国产欧美日韩综合精品二区| www.99av.com| 国产美女娇喘av呻吟久久| 午夜剧场在线免费观看| 国产精品一区二区久久精品爱涩 | 色在人av网站天堂精品| 欧美草逼视频| 91精品国产乱码久久久久久蜜臀| 久草免费在线视频| 国产97在线观看| 高清在线一区| 91aaaa| 欧美五码在线| 日韩亚洲不卡在线| 天天天综合网| 人妻无码久久一区二区三区免费 | 啪一啪鲁一鲁2019在线视频| 日韩三区免费| 96国产粉嫩美女| 卡通动漫国产精品| 欧美一区二区三区电影在线观看| 欧美在线电影| 精品视频在线观看一区二区| 亚洲黄页一区| 国内自拍视频网| 丁香激情综合五月| 中文字字幕码一二三区| 国产精品久久久久久久久搜平片| 老妇女50岁三级| 欧美性xxxxx极品娇小| 在线免费观看高清视频| 精品国产伦一区二区三区观看体验| 亚洲欧美色视频| 久久综合久久88| 男人皇宫亚洲男人2020| 91亚洲国产精品| 国产日产一区| 人人妻人人澡人人爽欧美一区 | 国产福利精品一区二区三区| 成人短视频下载| 亚洲色图第四色| 婷婷中文字幕综合| 99视频免费看| 国产午夜精品视频| av2020不卡| 成人黄色激情网| 色综合综合色| r级无码视频在线观看| 久久99国产精品尤物| 天堂久久久久久| 亚洲精品网站在线观看| 国产美女www爽爽爽| 亚洲福利视频网站| 老司机福利在线视频| 日本一本a高清免费不卡| 在线一区二区三区视频| 亚洲欧美国产不卡| 亚洲欧美卡通另类91av| 国产一精品一aⅴ一免费| 国产精品入口麻豆九色| 亚洲黄色激情视频| 精品国产在天天线2019| 免费大片在线观看www| 热re91久久精品国99热蜜臀| 98视频精品全部国产| 国产精品h视频| 日韩精品色哟哟| aaaaa一级片| 亚洲成人av一区二区三区| av免费观看网址| 日韩中文字幕在线看| 经典三级一区二区| 欧美日韩大片一区二区三区| 一区在线播放| 污网站免费观看| 一区二区三区在线视频免费观看| 欧美视频xxxx| 尤物yw午夜国产精品视频明星| 欧亚av在线| 久久av一区二区三区亚洲| 亚洲福利久久| 国产免费a级片| 一区二区三区在线观看视频| 国产欧美综合视频| 久久精品99久久久久久久久| 日韩成人精品一区二区三区| 日韩久久精品一区二区三区| 可以看av的网站久久看| 永久免费看mv网站入口78| 欧美午夜精品伦理| 亚洲欧洲综合在线| 欧美一区二粉嫩精品国产一线天| 日本欧美韩国国产| 爱福利视频一区二区| 26uuu久久天堂性欧美| 精品人妻一区二区三区免费看| 亚洲欧美日韩成人| 精品成人av| 一区二区三区四区不卡| 国内成人免费视频| 放荡的美妇在线播放| 日韩精品中午字幕| jizz一区二区三区| 久久精品日韩| 日韩成人精品视频| 亚洲波多野结衣| 日韩精品专区在线| 校园春色亚洲| 亚洲国产高清国产精品| 韩国v欧美v亚洲v日本v| 欧美精品一级片| 亚洲精品久久久久久下一站 | 99热精品在线| 亚洲午夜久久久久久久国产| 欧美人与禽zozo性伦| 青草在线视频| 欧美第一黄网| 美女性感视频久久| 九九九在线视频| 亚洲精品一二区| 在线欧美激情| 欧美 日韩 国产在线观看| 国产欧美日韩久久| 国产视频一区二区三区四区五区| 欧美精品精品精品精品免费| 亚洲婷婷丁香| 中文字幕色网站| 欧美日韩国产在线看| h视频在线观看免费| 91在线看www| 亚洲综合精品四区| 免费国产羞羞网站美图| 精品99999| 高清av一区| 大伊香蕉精品视频在线| 国产日韩精品一区二区三区| 国产人妻精品一区二区三区| 57pao成人永久免费视频| 婷婷丁香综合| 强伦人妻一区二区三区| 91精品国产综合久久久蜜臀图片| 日韩脚交footjobhd| 伊人久久99| 久久久99精品免费观看不卡| 国产91视频在线| 国产精品久久色| 亚洲一区日韩| 麻豆changesxxx国产| 中文字幕亚洲国产| 神马久久av|