日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pytorch使用Vision Transformer做肺癌和结肠癌组织病理学图像分类

發布時間:2024/9/30 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch使用Vision Transformer做肺癌和结肠癌组织病理学图像分类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

模型介紹

文章鏈接:https://arxiv.org/pdf/2010.11929.pdf
github地址:
視頻教程:https://www.bilibili.com/video/BV1Jh411Y7WQ?spm_id_from=333.337.search-card.all.click是B站大佬霹靂吧啦Wz的講解視頻,講得特別好,我的代碼也是完全按照他的代碼抄的,自己抄一遍代碼對Vision Transformer的理解會更深刻,很多模型細節看論文中是感受不到的,例如embedding的方法。Vision Transformer模型的結構如下圖所示:

VIT將一張圖片劃分個圖像patch,通過一個卷積層實現,其中卷積核的大小以及步長都是patch塊的大小。通過卷積層之后使用flatten操作將拉直成序列的形式,然后加上位置編碼,因為Attention機制沒有CNN的位置信息,在加上一個分類頭cls token,一起傳入然后Transformer Encoder。

數據集介紹

使用的數據集是肺癌和結腸癌組織病理學圖像,共包含五個類別的病理圖像,如下:

{"0": "colon_aca","1": "colon_n","2": "lung_aca","3": "lung_n","4": "lung_scc" }

總共包含25000張圖像,每個類別5000張圖像,文件夾組織結構如下:

dataset ├── colon_aca │ ├── colonca1.jpeg │ ├── colonca2.jpeg │ ├── colonca3.jpeg │ ├── ............. │ ├── colonca5000.jpeg ├── colon_n ├── lung_aca ├── lung_n └── lung_scc

其中包含兩種結腸癌的病理圖像以及三種肺癌的病理圖像,直接拿過來用做五分類任務,要是分解成為兩個單獨的癌癥分類準確率應該會更高。圖像如下所示:

代碼

VIT 模型

''' Author: weifeng liu Date: 2022-03-22 19:35:01 LastEditTime: 2022-03-22 21:35:02 LastEditors: Please set LastEditors Description: 打開koroFileHeader查看配置 進行設置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE FilePath: /Project/vision-transformer-implemment/vit_model.py ''' """ original code from rwightman: https://github.com/rwightman/pytorch-image-models/blob/master/timm/models/vision_transformer.py """ from functools import partial from collections import OrderedDictimport torch import torch.nn as nndef drop_path(x, drop_prob: float = 0., training: bool = False):"""Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks).This is the same as the DropConnect impl I created for EfficientNet, etc networks, however,the original name is misleading as 'Drop Connect' is a different form of dropout in a separate paper...See discussion: https://github.com/tensorflow/tpu/issues/494#issuecomment-532968956 ... I've opted forchanging the layer and argument names to 'drop path' rather than mix DropConnect as a layer name and use'survival rate' as the argument."""if drop_prob == 0. or not training:return xkeep_prob = 1 - drop_probshape = (x.shape[0],) + (1,) * (x.ndim - 1) # work with diff dim tensors, not just 2D ConvNetsrandom_tensor = keep_prob + torch.rand(shape, dtype=x.dtype, device=x.device)random_tensor.floor_() # binarizeoutput = x.div(keep_prob) * random_tensorreturn outputclass DropPath(nn.Module):"""Drop paths (Stochastic Depth) per sample (when applied in main path of residual blocks)."""def __init__(self, drop_prob=None):super(DropPath, self).__init__()self.drop_prob = drop_probdef forward(self, x):return drop_path(x, self.drop_prob, self.training)class PatchEmbed(nn.Module):"""圖像到的Embeadding"""def __init__(self, img_size=224, patch_size=16, in_c=3, embed_dim=768, norm_layer=None):"""Args:img_size (int, optional): 輸入圖像尺寸. Defaults to 224.patch_size (int, optional): 圖像塊的大小. Defaults to 16.in_c (int, optional): 輸入通道數. Defaults to 3.embed_dim (int, optional): 每個圖像塊的embed維度. Defaults to 768.norm_layer (_type_, optional): 是否使用layer norm. Defaults to None."""super().__init__()img_size = (img_size, img_size)patch_size = (patch_size, patch_size)self.img_size = img_sizeself.patch_size = patch_sizeself.grid_size = (img_size[0] // patch_size[0], img_size[1] // patch_size[1])self.num_patches = self.grid_size[0] * self.grid_size[1]self.proj = nn.Conv2d(in_c, embed_dim, kernel_size=patch_size, stride=patch_size)self.norm = norm_layer(embed_dim) if norm_layer else nn.Identity()def forward(self, x):B, C, H, W = x.shapeassert H == self.img_size[0] and W == self.img_size[1], \f"Input image size ({H}*{W}) doesn't match model ({self.img_size[0]}*{self.img_size[1]})."# flatten: [B, C, H, W] -> [B, C, HW]# transpose: [B, C, HW] -> [B, HW, C]x = self.proj(x).flatten(2).transpose(1, 2)x = self.norm(x)return xclass Attention(nn.Module):def __init__(self,dim, # 輸入token的dimnum_heads=8,qkv_bias=False,qk_scale=None,attn_drop_ratio=0.,proj_drop_ratio=0.):super(Attention, self).__init__()self.num_heads = num_headshead_dim = dim // num_headsself.scale = qk_scale or head_dim ** -0.5self.qkv = nn.Linear(dim, dim * 3, bias=qkv_bias)self.attn_drop = nn.Dropout(attn_drop_ratio)self.proj = nn.Linear(dim, dim)self.proj_drop = nn.Dropout(proj_drop_ratio)def forward(self, x):# [batch_size, num_patches + 1, total_embed_dim]B, N, C = x.shape# qkv(): -> [batch_size, num_patches + 1, 3 * total_embed_dim]# reshape: -> [batch_size, num_patches + 1, 3, num_heads, embed_dim_per_head]# permute: -> [3, batch_size, num_heads, num_patches + 1, embed_dim_per_head]qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)# [batch_size, num_heads, num_patches + 1, embed_dim_per_head]q, k, v = qkv[0], qkv[1], qkv[2] # make torchscript happy (cannot use tensor as tuple)# transpose: -> [batch_size, num_heads, embed_dim_per_head, num_patches + 1]# @: multiply -> [batch_size, num_heads, num_patches + 1, num_patches + 1]attn = (q @ k.transpose(-2, -1)) * self.scaleattn = attn.softmax(dim=-1)attn = self.attn_drop(attn)# @: multiply -> [batch_size, num_heads, num_patches + 1, embed_dim_per_head]# transpose: -> [batch_size, num_patches + 1, num_heads, embed_dim_per_head]# reshape: -> [batch_size, num_patches + 1, total_embed_dim]x = (attn @ v).transpose(1, 2).reshape(B, N, C)x = self.proj(x)x = self.proj_drop(x)return xclass Mlp(nn.Module):"""MLP as used in Vision Transformer, MLP-Mixer and related networks"""def __init__(self, in_features, hidden_features=None, out_features=None, act_layer=nn.GELU, drop=0.):""" MLPArgs:in_features (_type_): 輸入特征維度hidden_features (_type_, optional): 中間層特征維度. Defaults to None.out_features (_type_, optional): 輸出層特征維度. Defaults to None.act_layer (_type_, optional): 激活函數. Defaults to nn.GELU.drop (_type_, optional): Dropout 的概率. Defaults to 0.."""super().__init__()out_features = out_features or in_featureshidden_features = hidden_features or in_featuresself.fc1 = nn.Linear(in_features, hidden_features)self.act = act_layer()self.fc2 = nn.Linear(hidden_features, out_features)self.drop = nn.Dropout(drop)def forward(self, x):x = self.fc1(x)x = self.act(x)x = self.drop(x)x = self.fc2(x)x = self.drop(x)return xclass Block(nn.Module):def __init__(self,dim,num_heads,mlp_ratio=4.,qkv_bias=False,qk_scale=None,drop_ratio=0.,attn_drop_ratio=0.,drop_path_ratio=0.,act_layer=nn.GELU,norm_layer=nn.LayerNorm):super(Block, self).__init__()self.norm1 = norm_layer(dim)self.attn = Attention(dim, num_heads=num_heads, qkv_bias=qkv_bias, qk_scale=qk_scale,attn_drop_ratio=attn_drop_ratio, proj_drop_ratio=drop_ratio)# NOTE: drop path for stochastic depth, we shall see if this is better than dropout hereself.drop_path = DropPath(drop_path_ratio) if drop_path_ratio > 0. else nn.Identity()self.norm2 = norm_layer(dim)mlp_hidden_dim = int(dim * mlp_ratio)self.mlp = Mlp(in_features=dim, hidden_features=mlp_hidden_dim, act_layer=act_layer, drop=drop_ratio)def forward(self, x):x = x + self.drop_path(self.attn(self.norm1(x)))x = x + self.drop_path(self.mlp(self.norm2(x)))return xclass VisionTransformer(nn.Module):def __init__(self, img_size=224, patch_size=16, in_c=3, num_classes=1000,embed_dim=768, depth=12, num_heads=12, mlp_ratio=4.0, qkv_bias=True,qk_scale=None, representation_size=None, distilled=False, drop_ratio=0.,attn_drop_ratio=0., drop_path_ratio=0., embed_layer=PatchEmbed, norm_layer=None,act_layer=None):"""Args:img_size (int, optional): 輸入圖像尺寸. Defaults to 224.patch_size (int, optional): 每一個patch的尺寸. Defaults to 16.in_c (int, optional): 輸入圖像通道數. Defaults to 3.num_classes (int, optional): 分類的類別數. Defaults to 1000.embed_dim (int, optional): embedding 維度. Defaults to 768.depth (int, optional): Transformer encoder基本塊的個數. Defaults to 12.mlp_ratio (float, optional): MLP擴張比例. Defaults to 4.0.qkv_bias (bool, optional): . Defaults to False.qk_scale (_type_, optional): override default qk scale of head_dim ** -0.5 if set. Defaults to None.representaion_size (_type_, optional): _description_. Defaults to None.distilled (bool): model includes a distillation token and head as in DeiT modelsdrop_ratio (float): dropout rateattn_drop_ratio (float): attention dropout ratedrop_path_ratio (float): stochastic depth rateembed_layer (_type_, optional): _description_. Defaults to PatchEmbed.norm_layer (_type_, optional): _description_. Defaults to None.act_layer (_type_, optional): _description_. Defaults to None."""super(VisionTransformer, self).__init__()self.num_classes = num_classesself.num_features = self.embed_dim = embed_dim # num_features for consistency with other modelsself.num_tokens = 2 if distilled else 1norm_layer = norm_layer or partial(nn.LayerNorm, eps=1e-6)act_layer = act_layer or nn.GELUself.patch_embed = embed_layer(img_size=img_size, patch_size=patch_size, in_c=in_c, embed_dim=embed_dim)num_patches = self.patch_embed.num_patchesself.cls_token = nn.Parameter(torch.zeros(1, 1, embed_dim))self.dist_token = nn.Parameter(torch.zeros(1, 1, embed_dim)) if distilled else Noneself.pos_embed = nn.Parameter(torch.zeros(1, num_patches + self.num_tokens, embed_dim))self.pos_drop = nn.Dropout(p=drop_ratio)dpr = [x.item() for x in torch.linspace(0, drop_path_ratio, depth)] # stochastic depth decay ruleself.blocks = nn.Sequential(*[Block(dim=embed_dim, num_heads=num_heads, mlp_ratio=mlp_ratio, qkv_bias=qkv_bias, qk_scale=qk_scale,drop_ratio=drop_ratio, attn_drop_ratio=attn_drop_ratio, drop_path_ratio=dpr[i],norm_layer=norm_layer, act_layer=act_layer)for i in range(depth)])self.norm = norm_layer(embed_dim)# Representation layerif representation_size and not distilled:self.has_logits = Trueself.num_features = representation_sizeself.pre_logits = nn.Sequential(OrderedDict([("fc", nn.Linear(embed_dim, representation_size)),("act", nn.Tanh())]))else:self.has_logits = Falseself.pre_logits = nn.Identity()# Classifier head(s)self.head = nn.Linear(self.num_features, num_classes) if num_classes > 0 else nn.Identity()self.head_dist = Noneif distilled:self.head_dist = nn.Linear(self.embed_dim, self.num_classes) if num_classes > 0 else nn.Identity()# Weight initnn.init.trunc_normal_(self.pos_embed, std=0.02)if self.dist_token is not None:nn.init.trunc_normal_(self.dist_token, std=0.02)nn.init.trunc_normal_(self.cls_token, std=0.02)self.apply(_init_vit_weights)def forward_features(self, x):# [B, C, H, W] -> [B, num_patches, embed_dim]x = self.patch_embed(x) # [B, 196, 768]# [1, 1, 768] -> [B, 1, 768]cls_token = self.cls_token.expand(x.shape[0], -1, -1)if self.dist_token is None:x = torch.cat((cls_token, x), dim=1) # [B, 197, 768]else:x = torch.cat((cls_token, self.dist_token.expand(x.shape[0], -1, -1), x), dim=1)x = self.pos_drop(x + self.pos_embed)x = self.blocks(x)x = self.norm(x)if self.dist_token is None:return self.pre_logits(x[:, 0])else:return x[:, 0], x[:, 1]def forward(self, x):x = self.forward_features(x)if self.head_dist is not None:x, x_dist = self.head(x[0]), self.head_dist(x[1])if self.training and not torch.jit.is_scripting():# during inference, return the average of both classifier predictionsreturn x, x_distelse:return (x + x_dist) / 2else:x = self.head(x)return xdef _init_vit_weights(m):"""ViT weight initialization:param m: module"""if isinstance(m, nn.Linear):nn.init.trunc_normal_(m.weight, std=.01)if m.bias is not None:nn.init.zeros_(m.bias)elif isinstance(m, nn.Conv2d):nn.init.kaiming_normal_(m.weight, mode="fan_out")if m.bias is not None:nn.init.zeros_(m.bias)elif isinstance(m, nn.LayerNorm):nn.init.zeros_(m.bias)nn.init.ones_(m.weight)def vit_base_patch16_224(num_classes: int = 1000):"""ViT-Base model (ViT-B/16) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-1k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:鏈接: https://pan.baidu.com/s/1zqb08naP0RPqqfSXfkB2EA 密碼: eu9f"""model = VisionTransformer(img_size=224,patch_size=16,embed_dim=768,depth=12,num_heads=12,representation_size=None,num_classes=num_classes)return modeldef vit_base_patch16_224_in21k(num_classes: int = 21843, has_logits: bool = True):"""ViT-Base model (ViT-B/16) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-21k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_vit_base_patch16_224_in21k-e5005f0a.pth"""model = VisionTransformer(img_size=224,patch_size=16,embed_dim=768,depth=12,num_heads=12,representation_size=768 if has_logits else None,num_classes=num_classes)return modeldef vit_base_patch32_224(num_classes: int = 1000):"""ViT-Base model (ViT-B/32) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-1k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:鏈接: https://pan.baidu.com/s/1hCv0U8pQomwAtHBYc4hmZg 密碼: s5hl"""model = VisionTransformer(img_size=224,patch_size=32,embed_dim=768,depth=12,num_heads=12,representation_size=None,num_classes=num_classes)return modeldef vit_base_patch32_224_in21k(num_classes: int = 21843, has_logits: bool = True):"""ViT-Base model (ViT-B/32) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-21k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_vit_base_patch32_224_in21k-8db57226.pth"""model = VisionTransformer(img_size=224,patch_size=32,embed_dim=768,depth=12,num_heads=12,representation_size=768 if has_logits else None,num_classes=num_classes)return modeldef vit_large_patch16_224(num_classes: int = 1000):"""ViT-Large model (ViT-L/16) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-1k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:鏈接: https://pan.baidu.com/s/1cxBgZJJ6qUWPSBNcE4TdRQ 密碼: qqt8"""model = VisionTransformer(img_size=224,patch_size=16,embed_dim=1024,depth=24,num_heads=16,representation_size=None,num_classes=num_classes)return modeldef vit_large_patch16_224_in21k(num_classes: int = 21843, has_logits: bool = True):"""ViT-Large model (ViT-L/16) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-21k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_vit_large_patch16_224_in21k-606da67d.pth"""model = VisionTransformer(img_size=224,patch_size=16,embed_dim=1024,depth=24,num_heads=16,representation_size=1024 if has_logits else None,num_classes=num_classes)return modeldef vit_large_patch32_224_in21k(num_classes: int = 21843, has_logits: bool = True):"""ViT-Large model (ViT-L/32) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-21k weights @ 224x224, source https://github.com/google-research/vision_transformer.weights ported from official Google JAX impl:https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-vitjx/jx_vit_large_patch32_224_in21k-9046d2e7.pth"""model = VisionTransformer(img_size=224,patch_size=32,embed_dim=1024,depth=24,num_heads=16,representation_size=1024 if has_logits else None,num_classes=num_classes)return modeldef vit_huge_patch14_224_in21k(num_classes: int = 21843, has_logits: bool = True):"""ViT-Huge model (ViT-H/14) from original paper (https://arxiv.org/abs/2010.11929).ImageNet-21k weights @ 224x224, source https://github.com/google-research/vision_transformer.NOTE: converted weights not currently available, too large for github release hosting."""model = VisionTransformer(img_size=224,patch_size=14,embed_dim=1280,depth=32,num_heads=16,representation_size=1280 if has_logits else None,num_classes=num_classes)return model

不得不說,大佬的代碼寫的真的很🐂🍺,讀起來比較好上手。

train.py

''' Author: your name Date: 2022-03-22 19:10:46 LastEditTime: 2022-03-22 21:56:52 LastEditors: Please set LastEditors Description: 打開koroFileHeader查看配置 進行設置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE FilePath: /Project/vision-transformer-implemment/train.py ''' import os import math import argparseimport torch import torch.optim as optim import torch.optim.lr_scheduler as lr_scheduler from torch.utils.tensorboard import SummaryWriter from torchvision import transformsfrom my_dataset import MyDataSet from vit_model import vit_base_patch16_224_in21k as create_model from utils import read_split_data, train_one_epoch, evaluatedef main(args):device = torch.device(args.device if torch.cuda.is_available() else "cpu")if os.path.exists("./lung_colon_weights") is False:os.makedirs("./lung_colon_weights")tb_writer = SummaryWriter()train_images_path, train_images_label, val_images_path, val_images_label = read_split_data(args.data_path)data_transform = {"train": transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])]),"val": transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224),transforms.ToTensor(),transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])])}# 實例化訓練數據集train_dataset = MyDataSet(images_path=train_images_path,images_class=train_images_label,transform=data_transform["train"])# 實例化驗證數據集val_dataset = MyDataSet(images_path=val_images_path,images_class=val_images_label,transform=data_transform["val"])batch_size = args.batch_sizenw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]) # number of workersprint('Using {} dataloader workers every process'.format(nw))train_loader = torch.utils.data.DataLoader(train_dataset,batch_size=batch_size,shuffle=True,pin_memory=True,num_workers=nw,collate_fn=train_dataset.collate_fn)val_loader = torch.utils.data.DataLoader(val_dataset,batch_size=batch_size,shuffle=False,pin_memory=True,num_workers=nw,collate_fn=val_dataset.collate_fn)model = create_model(num_classes=5, has_logits=False).to(device)if args.weights != "":assert os.path.exists(args.weights), "weights file: '{}' not exist.".format(args.weights)weights_dict = torch.load(args.weights, map_location=device)# 刪除不需要的權重del_keys = ['head.weight', 'head.bias'] if model.has_logits \else ['pre_logits.fc.weight', 'pre_logits.fc.bias', 'head.weight', 'head.bias']for k in del_keys:del weights_dict[k]print(model.load_state_dict(weights_dict, strict=False))if args.freeze_layers:for name, para in model.named_parameters():# 除head, pre_logits外,其他權重全部凍結if "head" not in name and "pre_logits" not in name:para.requires_grad_(False)else:print("training {}".format(name))pg = [p for p in model.parameters() if p.requires_grad]optimizer = optim.SGD(pg, lr=args.lr, momentum=0.9, weight_decay=5E-5)# Scheduler https://arxiv.org/pdf/1812.01187.pdflf = lambda x: ((1 + math.cos(x * math.pi / args.epochs)) / 2) * (1 - args.lrf) + args.lrf # cosinescheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf)for epoch in range(args.epochs):# traintrain_loss, train_acc = train_one_epoch(model=model,optimizer=optimizer,data_loader=train_loader,device=device,epoch=epoch)scheduler.step()# validateval_loss, val_acc = evaluate(model=model,data_loader=val_loader,device=device,epoch=epoch)tags = ["train_loss", "train_acc", "val_loss", "val_acc", "learning_rate"]tb_writer.add_scalar(tags[0], train_loss, epoch)tb_writer.add_scalar(tags[1], train_acc, epoch)tb_writer.add_scalar(tags[2], val_loss, epoch)tb_writer.add_scalar(tags[3], val_acc, epoch)tb_writer.add_scalar(tags[4], optimizer.param_groups[0]["lr"], epoch)torch.save(model.state_dict(), "./lung_colon_weights/model-COVID{}.pth".format(epoch))if __name__ == '__main__':parser = argparse.ArgumentParser()parser.add_argument('--num_classes', type=int, default=5)parser.add_argument('--epochs', type=int, default=100)parser.add_argument('--batch-size', type=int, default=32)parser.add_argument('--lr', type=float, default=0.001)parser.add_argument('--lrf', type=float, default=0.01)# 數據集所在根目錄# http://download.tensorflow.org/example_images/flower_photos.tgzparser.add_argument('--data-path', type=str,default="/home/lwf/Project/Datatset/數據集/肺癌和結腸癌組織病理學圖像/archive")parser.add_argument('--model-name', default='', help='create model name')# 預訓練權重路徑,如果不想載入就設置為空字符parser.add_argument('--weights', type=str, default='/home/lwf/Project/vision-transformer-implemment/init_weights/jx_vit_base_patch16_224_in21k-e5005f0a.pth',help='initial weights path')# 是否凍結權重parser.add_argument('--freeze-layers', type=bool, default=True)parser.add_argument('--device', default='cuda:1', help='device id (i.e. 0 or 0,1 or cpu)')opt = parser.parse_args()main(opt)

修改一下最后的 --data_path 和 --weights的值即可運行起來

結果

不得不說,有預訓練的Transformer模型真的很香,在這個數據集訓練十個epoch以后就可以達到0.94左右的準確率,單張測試結果如下:

class: colon_aca prob: 0.931
class: colon_n prob: 0.0631
class: lung_aca prob: 0.00343
class: lung_n prob: 0.000419
class: lung_scc prob: 0.0025

記錄

親自實驗了Vision Transformer之后發現,在有預訓練的情況下還是很友好的,訓練起來的代價也沒有想象中的那么高,使用單塊2080ti訓練,圖像尺寸為[224,224],batch_size設為128時,顯存占用也不到5個G,但是每一次迭代計算會比較慢。比較友好,不像很多模型顯存占用很高,導致很難在普通平臺上訓練。

總結

以上是生活随笔為你收集整理的Pytorch使用Vision Transformer做肺癌和结肠癌组织病理学图像分类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

少妇搡bbbb搡bbb搡忠贞 | 国产伦理精品一区二区 | 99精品成人 | 久久久噜噜噜久久久 | 韩日三级av | 欧美色图一区 | 日韩在线视频二区 | 99久久精品免费看国产麻豆 | 国产精品久久99综合免费观看尤物 | 色综合色综合色综合 | 免费看黄色91 | 天天操天天玩 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产不卡毛片 | 中文字幕日本在线 | 成人97视频| 九九热免费在线观看 | 成人黄色大片网站 | 久久久国产一区二区三区四区小说 | av在线永久免费观看 | 国产精品久久久久9999吃药 | 中文字幕在线观看1 | 91中文字幕永久在线 | 国产馆在线播放 | 91视频在线自拍 | 久久综合色婷婷 | 激情伊人五月天 | av超碰在线 | 免费黄色在线播放 | 深夜免费网站 | 中文字幕 成人 | 四虎在线永久免费观看 | 在线观看网站av | 美女久久久久久久 | 视频1区2区 | 黄色h在线观看 | 免费看国产曰批40分钟 | 麻豆视频免费在线播放 | 99r精品视频在线观看 | 五月婷社区 | 黄色av电影网| 亚洲精品国偷自产在线99热 | 91传媒在线播放 | 色五月激情五月 | 999在线视频 | 在线免费看片 | 狠狠色丁香久久婷婷综合五月 | 免费看黄在线看 | 天天天干夜夜夜操 | a电影在线观看 | 182午夜在线观看 | 亚洲视频播放 | 免费福利在线 | 欧美亚洲久久 | 在线电影 一区 | 亚洲一区二区精品在线 | 亚洲国产精品999 | 亚洲国产精品va在线看黑人动漫 | 玖玖玖精品 | 久操中文字幕在线观看 | 日韩黄色在线观看 | 麻豆国产精品一区二区三区 | 五月婷婷中文字幕 | 热久久最新地址 | 国产91精品高清一区二区三区 | av福利在线导航 | 在线观看中文字幕一区 | 国产精品久久久久久高潮 | 日韩影视在线观看 | 日本三级在线观看中文字 | www.久久久| 一区二区三区精品久久久 | 中文字幕在线看视频国产 | 亚洲高清视频在线观看免费 | 蜜臀久久99精品久久久久久网站 | 亚洲免费高清视频 | 国产91探花| 91黄色成人| 91九色porny在线 | 99视频国产精品 | 久久久久久麻豆 | 久草免费电影 | 欧美一级性生活 | 在线视频app | 在线观看理论 | 伊人成人久久 | 免费看国产黄色 | 婷婷在线网站 | 97国产大学生情侣白嫩酒店 | 国产麻豆精品久久 | 久久久精品国产一区二区电影四季 | 99精品国产免费久久久久久下载 | 国产高清中文字幕 | 最新中文字幕在线播放 | 天天综合视频在线观看 | 欧美亚洲成人xxx | 欧美日韩国产伦理 | 日韩久久电影 | 成人久久久久久久久久 | 免费看的国产视频网站 | 成人综合免费 | 在线色亚洲 | 久久综合九色综合97_ 久久久 | 婷婷丁香色 | 99热这里只有精品在线观看 | 欧美极品少妇xxxx | 国产高清黄色 | 天堂av网在线| 粉嫩高清一区二区三区 | 波多野结衣在线观看一区二区三区 | 久久国产一二区 | 在线看成人 | 在线视频婷婷 | 日韩欧美一区二区在线观看 | 美女黄频视频大全 | 国产剧情在线一区 | 国产精品成人a免费观看 | 国产欧美高清 | 揉bbb玩bbb少妇bbb | 国产又粗又猛又黄视频 | 国产精品成人免费一区久久羞羞 | 又黄又爽又色无遮挡免费 | 最近中文字幕高清字幕在线视频 | 久草爱| 久久久久久久福利 | 久草免费在线观看视频 | 久久在线免费观看视频 | 中文字幕一区二区三区视频 | 人人干天天射 | 91精品国产麻豆 | 激情综合网五月婷婷 | 99久久er热在这里只有精品15 | 久久久影院一区二区三区 | 国产成人99av超碰超爽 | 国产中文字幕在线播放 | 国产精品久久久久婷婷 | 天天综合网 天天 | 精品国产亚洲在线 | 国产97视频 | 日韩电影在线一区二区 | 国偷自产中文字幕亚洲手机在线 | 在线观看免费一级片 | 一区二区三区中文字幕在线观看 | 日日爽天天操 | www在线观看视频 | 免费av试看| 日韩在线视频观看 | 免费看片网址 | 国产午夜一区二区 | 国产99久久久久久免费看 | 久久这里有精品 | 国产在线不卡视频 | 婷婷在线网站 | 亚洲精品在线免费观看视频 | 日韩欧美网址 | 国产精品中文字幕av | 久久久精品影视 | 亚洲精品高清在线观看 | 最近中文字幕在线中文高清版 | 国产原创在线视频 | 日韩在线观看三区 | 草久在线播放 | 国产自在线 | 一本一本久久aa综合精品 | 精品五月天| 97**国产露脸精品国产 | 久精品视频在线观看 | 天天摸天天操天天舔 | 天堂视频一区 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 九九久久久久久久久激情 | 国产成人中文字幕 | 久久免费一级片 | 成人av网址大全 | 日日干av| 久久综合久色欧美综合狠狠 | av福利在线导航 | 欧美亚洲久久 | 日韩欧美视频一区二区三区 | 日本特黄一级 | 天天色综合天天 | 亚洲狠狠婷婷综合久久久 | 国产精品高潮久久av | 国产福利精品一区二区 | 99超碰在线观看 | 国产在线不卡精品 | 成人蜜桃 | 亚洲精品高清在线 | 日本黄色免费在线观看 | 欧美美女视频在线观看 | 99se视频在线观看 | 黄色片视频在线观看 | 国产69精品久久99的直播节目 | 亚洲免费av电影 | 国产精品 国产精品 | 免费特级黄毛片 | 色在线最新 | 亚洲精品免费在线观看 | 日日碰狠狠躁久久躁综合网 | 我爱av激情网 | 国产成人精品免高潮在线观看 | 国产精品一区二区免费视频 | 国产精品成人一区二区 | 国产亚洲精品久久久久久电影 | 日本婷婷色 | 久久综合操 | 在线不卡视频 | 91精品婷婷国产综合久久蝌蚪 | 玖玖精品视频 | 国产视频一区二区在线播放 | 在线一级片 | 久久五月婷婷丁香社区 | 亚洲免费av观看 | 一区二区精品在线视频 | 五月婷婷在线视频观看 | 色五月成人| 国产aa免费视频 | 国产精品毛片久久久久久久 | .国产精品成人自产拍在线观看6 | 蜜臀av夜夜澡人人爽人人 | 国产福利网站 | 精品国产一区二区三区在线 | 欧美在线一级片 | 1024手机看片国产 | 在线视频18在线视频4k | 日韩电影一区二区在线 | 欧美午夜精品久久久久久孕妇 | 在线观看日韩免费视频 | 玖操| 国内精品99 | 免费亚洲黄色 | 成x99人av在线www | 久操中文字幕在线观看 | 国产精品毛片一区二区在线看 | 久久国产精品影片 | 人人看人人| 深爱激情亚洲 | 激情网五月 | 日本久久精品 | 在线免费黄网站 | 手机看片久久 | 久久无码av一区二区三区电影网 | 成人啊 v| 国产精品久久免费看 | 久久av伊人 | 国产精品女主播一区二区三区 | 日韩免费一区二区三区 | 亚洲成人在线免费 | 婷婷成人亚洲综合国产xv88 | 午夜精品一区二区三区四区 | 日韩爱爱片| 美女免费视频网站 | 超级碰碰碰视频 | 亚洲久草网 | 一区 二区电影免费在线观看 | 亚洲综合爱 | 在线看黄网站 | 色综合天天干 | 久久在线视频在线 | 狠狠干天天射 | 久久精品这里都是精品 | 亚洲精品成人网 | 日韩一级电影网站 | 日韩在线精品一区 | 久久香蕉影视 | 久久大香线蕉app | 99视频精品全部免费 在线 | 天天插狠狠插 | 成人av免费在线播放 | 日本精品视频在线观看 | 中文字幕黄色网址 | 99免费在线视频观看 | 婷婷色吧 | 国产九九九精品视频 | 水蜜桃亚洲一二三四在线 | 欧美性视频网站 | 亚洲干视频在线观看 | 欧美福利视频 | 久久久久免费精品国产小说色大师 | 五月天综合网站 | 午夜影视剧场 | 波多野结衣资源 | 激情小说网站亚洲综合网 | 免费a网站 | 韩日精品中文字幕 | 日韩视频欧美视频 | 日本黄色免费在线观看 | 日本aaaa级毛片在线看 | 香蕉视频在线观看免费 | 伊人天天 | 91色影院 | 欧美日韩在线观看一区 | 国产麻豆精品一区 | 免费在线观看日韩视频 | 中文字幕亚洲精品在线观看 | 不卡电影免费在线播放一区 | 99久久久久久久久 | 麻豆免费观看视频 | 99精品国产免费久久久久久下载 | 日韩激情中文字幕 | 日本精品在线视频 | 五月天,com | 欧美日韩精品在线播放 | 欧美日韩一区二区久久 | 精品xxx| 久99久在线| 国产精品理论片在线播放 | 国产在线观看不卡 | 探花在线观看 | 久久精品91久久久久久再现 | 亚洲激情久久 | 国产亚洲午夜高清国产拍精品 | 中文字幕av专区 | 亚洲欧美经典 | 欧美一级免费高清 | 手机在线免费av | 成人在线免费av | 五月激情电影 | 成人久久电影 | 成人免费视频在线观看 | 97超碰人人澡人人爱学生 | 国产成人精品一区二区三区在线 | 久久久毛片 | 久久久久久免费毛片精品 | 成人午夜毛片 | 亚洲欧美日韩在线看 | 精品久久一二三区 | 日韩网站在线播放 | 久久精品伊人 | 91免费高清观看 | 久久精品视频在线播放 | 国内精品小视频 | 久久精品79国产精品 | 精品福利视频在线 | 亚洲精品视频观看 | 久久欧洲视频 | 狠狠躁日日躁狂躁夜夜躁av | 月丁香婷婷 | 99av在线视频| 视频一区二区国产 | 精品久久一| 日韩精品电影在线播放 | 亚洲一区二区视频在线 | 中文字幕久久亚洲 | 2020天天干天天操 | 国产精品手机视频 | 成人av一区二区兰花在线播放 | 狠狠网亚洲精品 | 久久综合9988久久爱 | 成人在线视频论坛 | 黄色日批网站 | 99tvdz@gmail.com| 日韩一级黄色片 | 中文字幕日本在线观看 | 国产在线观看地址 | 国产视频1| 国产精品成人久久 | 国产精品欧美日韩在线观看 | 国产欧美在线一区二区三区 | 欧美日韩免费一区二区三区 | 亚洲japanese制服美女 | 久久免费播放视频 | 天天搞夜夜骑 | 精品一区二区三区久久 | 国产精品一区二区久久精品爱微奶 | 欧产日产国产69 | 国产精品久久久电影 | 尤物97国产精品久久精品国产 | 高清视频一区二区三区 | 在线观看黄 | 狠狠干夜夜 | 久久亚洲精品国产亚洲老地址 | 91成人看片| 五月综合网 | 依人成人综合网 | 国产一区二区三精品久久久无广告 | 涩五月婷婷 | 久久午夜鲁丝片 | 日韩av线观看 | 视频在线一区二区三区 | 中文字幕av影院 | 永久黄网站色视频免费观看w | 欧美国产日韩在线视频 | 九九爱免费视频在线观看 | 免费观看一级视频 | 国产精品123| 在线观看完整版 | 国产精品久久久777 成人手机在线视频 | 黄色av免费电影 | 人人爽人人插 | 日韩在线免费视频观看 | 视频国产在线观看18 | 亚洲欧美日韩国产一区二区三区 | 国产玖玖视频 | 日本免费久久高清视频 | 免费看黄的 | 天天色天天综合 | 国产一区在线不卡 | 亚洲精品久久激情国产片 | 日韩中文字幕亚洲一区二区va在线 | 日韩av快播电影网 | 一区二区伦理电影 | 99精彩视频在线观看免费 | 99视屏 | 福利视频第一页 | 国产伦精品一区二区三区无广告 | 国产尤物在线 | 91色一区二区三区 | 伊人av综合| 欧美成年黄网站色视频 | 高清不卡一区二区三区 | 久久久久亚洲国产 | 久久99久久99精品免视看婷婷 | 国产成人精品综合久久久久99 | 一区二区亚洲精品 | 涩涩伊人 | 日韩一级成人av | 特级西西444www大精品视频免费看 | 成人在线播放av | 久久视频免费看 | 夜夜操网站 | 六月色 | 欧美一区二区三区免费观看 | 欧美日韩三区二区 | 27xxoo无遮挡动态视频 | 91系列在线观看 | 麻豆91精品 | 亚洲欧洲精品久久 | 西西www4444大胆在线 | 九色在线视频 | 欧美久久九九 | 久久午夜色播影院免费高清 | 丁香婷婷自拍 | 手机av看片| 91九色porny蝌蚪视频 | 国产最顶级的黄色片在线免费观看 | 精品久久综合 | 国内综合精品午夜久久资源 | 中文字幕中文字幕在线一区 | 91成人在线观看喷潮 | 97人人澡人人爽人人模亚洲 | 波多野结衣电影久久 | 国产精品美女久久久免费 | 成人av直播 | 玖玖色在线观看 | 国产在线a不卡 | 92av视频 | 国产美女精品人人做人人爽 | 97电影院网 | 伊人网av | 久久久久久久毛片 | 一区二区视频在线看 | 欧美日韩在线电影 | 欧美久久久久久久久久久 | 亚洲 欧美 91 | 国语自产偷拍精品视频偷 | 亚洲不卡av一区二区三区 | 精品夜夜嗨av一区二区三区 | 久久国产成人午夜av影院宅 | 国产最新91 | 欧美a在线免费观看 | 国内成人精品视频 | 一区在线观看 | 开心色婷婷 | 精品99久久 | 久久免费在线视频 | 手机在线看片日韩 | 欧美性生活小视频 | 国产精选在线观看 | 精品国产一区二区三区不卡 | 久久久久久蜜av免费网站 | 色狠狠操| 在线观看久草 | 五月天激情综合 | 91精品视频免费 | 丝袜美腿在线视频 | 特黄特色特刺激视频免费播放 | 69久久久久久久 | 天天色天天综合 | 亚洲黄色在线观看 | 超碰97国产精品人人cao | 播五月婷婷 | 综合久久久久久久 | 精品麻豆| 中文字幕久久精品一区 | 欧美日韩观看 | 久黄色| 91专区在线观看 | 午夜电影久久久 | 9久久精品 | 五月婷丁香 | 国产成人一二三 | 9999精品| 亚洲一区不卡视频 | 日韩三级视频在线观看 | 在线观看视频国产一区 | 婷婷精品国产欧美精品亚洲人人爽 | 国产精品第7页 | 99久久久久久久久久 | 国产一级在线播放 | 亚洲最新视频在线 | 久久久久麻豆v国产 | 国产丝袜一区二区三区 | 中文字幕黄色网址 | 五月婷婷爱 | 亚洲欧美婷婷六月色综合 | 五月婷婷导航 | 亚洲一区美女视频在线观看免费 | 中文字幕一区三区 | 久久精精品视频 | 亚洲最新精品 | japanesexxxhd奶水| 欧美日韩国产二区 | 精品福利在线观看 | 国产丝袜在线 | 亚洲精品国产精品国自产观看浪潮 | 免费观看成年人视频 | 一区二区视频欧美 | 久久国产精品一区二区三区 | 丁香婷婷激情 | 五月天激情视频在线观看 | 国产在线一区二区三区播放 | 99精品在线免费视频 | 一区二区三区日韩在线 | 成年人免费在线观看 | 激情综合网五月 | 婷婷夜夜 | 伊人亚洲综合 | 久久久国产精品成人免费 | 99精品网站 | 亚洲乱亚洲乱妇 | 国产成人一区二区三区电影 | 色香com.| 97精品一区 | 婷婷婷国产在线视频 | 国产精品久久久久四虎 | 国产黄色免费在线观看 | 成人全视频免费观看在线看 | 中文字幕电影一区 | 天天操天天射天天插 | 人人狠狠综合久久亚洲 | 四虎永久精品在线 | 青青河边草免费直播 | 丁香一区二区 | 亚洲性xxxx | 久久久精品网站 | 国产精品美女久久久免费 | 黄色毛片在线观看 | 在线看黄色的网站 | 91视频这里只有精品 | 极品美女被弄高潮视频网站 | 日韩高清一二区 | 久久视频一区二区 | 97成人超碰 | 97精品国产91久久久久久久 | 日本一区二区不卡高清 | 黄色毛片一级 | 青青草国产精品 | 四虎国产精品免费 | 色国产在线 | 不卡视频一区二区三区 | 麻豆91小视频 | 亚洲综合色丁香婷婷六月图片 | 欧美有色| 亚洲成aⅴ人片久久青草影院 | 麻豆 free xxxx movies hd | 国产中文字幕视频 | 在线国产视频 | 欧美日韩国产在线一区 | 黄色网www | 国产精品精品国产色婷婷 | 久久久久日本精品一区二区三区 | 亚洲综合色婷婷 | 国产精品成久久久久 | 亚洲在线视频观看 | 成人一区二区在线观看 | 久久96国产精品久久99漫画 | 人人爽人人舔 | 福利电影一区二区 | 国产视频一二区 | 在线观看激情av | 亚洲无吗视频在线 | 国产精品久久久久久久免费观看 | 婷婷精品国产欧美精品亚洲人人爽 | 99精品视频精品精品视频 | 久久精品伊人 | 一级片视频在线 | av中文字幕剧情 | 亚洲不卡av一区二区三区 | 亚洲国产精久久久久久久 | 97热在线观看 | 国产最顶级的黄色片在线免费观看 | 亚洲最大的av网站 | 欧洲精品码一区二区三区免费看 | 99久久99久国产黄毛片 | 99亚洲精品视频 | 日本中文乱码卡一卡二新区 | 一区免费在线 | 久久久资源网 | 久久精品欧美视频 | 99久久婷婷国产综合亚洲 | 少妇性xxx| 国产精品麻豆三级一区视频 | 国产成人久久精品一区二区三区 | 欧美日韩国产精品一区二区 | 四虎永久国产精品 | 精品免费在线视频 | 人人爱人人射 | 日韩欧美一区二区三区视频 | 国产传媒中文字幕 | 国产精品自产拍在线观看网站 | 伊人网站 | 麻豆一区二区三区视频 | 视频在线亚洲 | 国产免费一区二区三区最新6 | 91精品久久久久 | 国产视频亚洲视频 | 日p在线观看 | 国产亚洲综合精品 | 天天操导航| 欧美专区亚洲专区 | 色婷婷综合久色 | 操综合 | www.国产精品 | 亚洲黄a | 一本一道久久a久久综合蜜桃 | 91资源在线免费观看 | 在线观看视频你懂的 | 久久国产精品一国产精品 | 久久艹国产视频 | www91在线 | 亚洲黄色免费在线 | 人人舔人人爽 | 久草在线99 | 欧美精品久久久久久久久久白贞 | 特级大胆西西4444www | 午夜av网站| 精品电影一区 | 中文字幕有码在线观看 | 五月婷婷天堂 | 久久久人人爽 | 日韩理论电影在线观看 | 久草在线播放视频 | 在线观看日本高清mv视频 | 国产精品69av | 国产视频在线观看一区二区 | 亚洲在线看| 久视频在线播放 | 黄色一级免费电影 | 成人污视频在线观看 | 色综合久久久久久久久五月 | 国产男女爽爽爽免费视频 | 欧美特一级片 | 国产一级做a爱片久久毛片a | 亚洲经典视频 | www91在线| 色天天综合久久久久综合片 | 久久一线 | av一级片在线观看 | 婷婷在线不卡 | 欧美激情操 | 色婷婷国产精品一区在线观看 | 亚洲精品国| 狠狠狠色丁香婷婷综合久久五月 | 一区二区三区中文字幕在线 | 天堂中文在线视频 | 丁香婷婷激情网 | 男女啪啪视屏 | 亚洲国产成人久久综合 | 一区二区三区四区精品视频 | 高清av在线免费观看 | 日韩av资源站 | 国产黄色大片免费看 | 婷婷激情久久 | 亚州中文av | 国产精品久久在线观看 | 99视频国产精品免费观看 | 一区在线观看视频 | 一区二区三区 亚洲 | 九九热免费在线视频 | 曰本免费av | 免费看黄在线看 | 色噜噜狠狠色综合中国 | 丁香六月久久综合狠狠色 | 国产精品久久久99 | 日日干天夜夜 | www国产一区| 国产麻豆果冻传媒在线观看 | 国产一级片视频 | 精品国产成人在线 | 在线免费观看黄 | 国产精品久久久久久久久久久久午夜 | 久久免费高清 | 夜夜操综合网 | 日韩午夜精品福利 | 国产精品99久久久精品免费观看 | 综合激情网... | 精品国产一区二区三区久久久蜜臀 | 中文伊人| 久草在线资源观看 | 亚洲色综合 | 欧美精品免费在线观看 | 久久综合色影院 | 热久久免费国产视频 | 色狠狠综合天天综合综合 | 伊人小视频 | 欧美一级电影免费观看 | 日本中文字幕免费观看 | 欧美尹人 | 亚洲精品人人 | 国产91学生粉嫩喷水 | 99九九视频 | 91成人精品观看 | 国产亚洲精品久 | 国产 视频 高清 免费 | 久久你懂得 | 色综合久久99 | 国产精品资源网 | 美女国内精品自产拍在线播放 | 成人久久网 | 中文字幕有码在线播放 | 99热99热 | 97超碰在线久草超碰在线观看 | 深夜男人影院 | 在线观看黄色免费视频 | 美女网站在线看 | 国产精品99在线观看 | 国产黄色美女 | 综合精品在线 | 成人在线播放视频 | 欧美日韩一级在线 | 免费在线国产视频 | 免费成人在线观看 | 久久免费播放 | 久久久久夜色 | 欧美成人69av | 在线观看av黄色 | 国产香蕉久久精品综合网 | 国产精品2019| 亚洲一区二区三区91 | 男女全黄一级一级高潮免费看 | 欧美在线视频一区二区三区 | 欧美影院久久 | 国产精品色在线 | 婷婷网五月天 | 亚洲欧洲久久久 | 国产精品18久久久久vr手机版特色 | 在线视频观看你懂的 | 国产亚洲欧美一区 | 久久免费在线视频 | 欧洲亚洲女同hd | 99热这里| 黄色小说免费观看 | 精品一区 精品二区 | 国产无遮挡又黄又爽在线观看 | 69久久夜色精品国产69 | 最新亚洲视频 | 成年人免费在线观看 | 精品一区二区综合 | 操碰av| 99精品视频精品精品视频 | 一区二区三区电影大全 | 国产午夜精品免费一区二区三区视频 | 免费能看的黄色片 | 欧美精品一区二区在线播放 | 国产护士hd高朝护士1 | 亚洲黄色精品 | 久久免费高清视频 | 永久免费看av| 亚洲一二区视频 | 国产免费一区二区三区网站免费 | 日韩美精品视频 | 国产精品va | 丁香五月缴情综合网 | 在线免费国产 | 亚洲狠狠操 | 在线观看视频免费大全 | www亚洲国产| 亚洲午夜久久久久久久久电影网 | 亚洲成av | 五月激情天 | 国产午夜麻豆影院在线观看 | 一区三区视频 | 96看片| 久久亚洲福利视频 | 国产午夜精品av一区二区 | 91人人爽久久涩噜噜噜 | 欧美视频不卡 | 国产伦理一区二区三区 | 麻豆视频成人 | 91九色视频在线播放 | 超碰免费97| 亚洲精品中文字幕在线观看 | 亚洲香蕉视频 | 久亚洲| 一区二区高清在线 | 国产午夜精品一区二区三区欧美 | 97小视频 | 亚洲另类视频在线 | 人人爽人人干 | 99久久99久久精品国产片 | 午夜av在线免费 | 色婷婷综合久久久 | 免费在线观看av电影 | 久久99欧美| 99久久99久久精品国产片果冰 | 日韩在线视频网址 | 美女视频一区 | 日韩毛片一区 | 最新久久免费视频 | 日本最大色倩网站www | 青青草在久久免费久久免费 | 天天伊人网| 国产精品区二区三区日本 | 久久精品播放 | 国内外激情视频 | 国产精品高清免费在线观看 | 日韩在线观看视频免费 | 日韩免费大片 | 丁香视频免费观看 | 91人人爽人人爽人人精88v | 在线视频成人 | 亚洲一级在线观看 | 青春草免费在线视频 | 国产黑丝一区二区 | 国产精品1区2区3区在线观看 | 天天操天天舔天天爽 | ,午夜性刺激免费看视频 | 黄色视屏在线免费观看 | 国产网红在线观看 | 91一区二区三区久久久久国产乱 | 在线久草视频 | 久久久www成人免费毛片麻豆 | 欧美性生活免费看 | 操综合| 国产中文自拍 | 天天天操操操 | 久热av在线| 欧美日韩国产一区二区在线观看 | 国产剧情久久 | 在线免费观看av网站 | 日韩免费在线播放 | 国产人成在线视频 | 色婷久久| 亚洲国产日本 | 欧美成人一二区 | 六月丁香激情综合色啪小说 | 久久国产精品第一页 | 国产精品美女在线 | 国产精品毛片久久久久久久久久99999999 | 色综合久久88色综合天天人守婷 | 99久久精品免费看 | 亚洲欧美激情精品一区二区 | 久久久久久久久久久成人 | 天天干天天摸天天操 | 精品理论片 | 亚洲黄色片| 一区二区三区在线观看免费 | 国产精彩视频一区 | 99精品免费| 一区二区三区动漫 | 成人国产精品一区 | 国产在线观看av | 国产中文字幕视频在线观看 | 日本久久免费电影 | 国产中文字幕网 | 亚洲精品1区2区3区 超碰成人网 | 精品一区二区免费视频 | 亚洲综合小说电影qvod | 日韩精品免费一区 | 六月丁香六月婷婷 | 中文字幕久久精品一区 | www.久久成人 | 久久中文精品视频 | 91九色在线播放 | 久久免费视频在线 | 人人澡av| 日本中文字幕在线免费观看 | 亚洲激情久久 | 日韩在线观看中文字幕 | 国产玖玖视频 | 色搞搞 | 亚洲成人在线免费 | 日韩精品电影在线播放 | 黄p在线播放 | 久久精品电影 | 911久久 | 国产精品九色 | 探花视频在线版播放免费观看 | 又爽又黄又无遮挡网站动态图 | 日韩在线无| 九色精品免费永久在线 | 国产精品网红直播 | 中文字幕在线观看第二页 | 日韩欧美91| 中文在线天堂资源 | 水蜜桃亚洲一二三四在线 | 久久精品看 | 最近最新最好看中文视频 | 国内精品久久久久久久久久清纯 | 国产精品12 | 久香蕉| 久久在线观看视频 | 国产高清成人av | 国产精品国产三级国产不产一地 | 久草精品网 | 国产99色| 日韩在线观看一区二区三区 | 天堂中文在线视频 | 午夜视频在线观看一区二区三区 | 国产视频久久 | 日韩久久久久久 | 九九久久影视 | 欧美日韩啪啪 | 国产一级免费播放 | 国产精品福利无圣光在线一区 | 亚洲一级特黄 | sesese图片 | 天天射天天舔天天干 | 国产在线免费观看 | 亚洲二区精品 | 久久久久亚洲精品成人网小说 | 久久综合狠狠综合久久综合88 | 人人玩人人添人人澡超碰 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产一区在线免费观看 | 亚洲高清在线视频 | 亚洲综合色视频在线观看 | 国产中文在线播放 | 日韩一区二区免费在线观看 | 精品国产三级 | 国内精品久久久久久久久久清纯 | 精品美女在线视频 | 免费在线观看av网址 | 成人免费在线播放视频 | 粉嫩一二三区 | 日本中文字幕视频 | 久久久精品国产一区二区电影四季 | 日韩久久网站 | 五月天电影免费在线观看一区 | 在线视频 成人 | 久久久久久久久影院 | 国产我不卡 | 国产高清无线码2021 | 97精品国产91久久久久久久 | 亚洲国内精品 | 国产群p视频 | 国产一区二区网址 | 欧美日韩大片在线观看 | 性日韩欧美在线视频 | 91麻豆免费视频 | 久久久黄色免费网站 | 亚洲成人一二三 | 麻豆成人精品 | 六月婷婷久香在线视频 | 96精品高清视频在线观看软件特色 | 日韩一区二区三区高清在线观看 | 一本一本久久a久久精品综合妖精 | 国产一区91| 久久久国产成人 | 亚洲午夜不卡 | 91视频在线观看下载 | 成人a视频片观看免费 | 亚洲乱码在线观看 | 91精品久久久久久久久 | 亚洲国产偷 | 色综合久久久久综合99 | 在线一区av| 国产视频资源在线观看 | www久 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产精品久久久久久a | 成人av中文字幕在线观看 | 日韩在线观 | 成人一区电影 | 手机成人免费视频 | 992tv又爽又黄的免费视频 | 一级性视频 | 91日韩在线 | 亚洲精品一区二区三区在线观看 | 亚洲高清视频在线观看 | 91福利影院在线观看 | 亚洲久草网 | 亚洲欧洲精品在线 | 精品一区二区在线免费观看 | 中文资源在线播放 | 超碰av在线播放 | 国产区 在线 | 欧美激情视频免费看 | 九九精品无码 | 欧美激情va永久在线播放 | 精品日韩av| 激情综合网五月激情 | 日韩三级在线 | 久久99精品国产91久久来源 | 国产免费精彩视频 | 日韩久久久久久 | 激情网第四色 |