色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

PyTorch統(tǒng)一視覺分類模板:從AlexNet到ViT訓(xùn)練與ONNX部署

PyTorch統(tǒng)一視覺分類模板:從AlexNet到ViT訓(xùn)練與ONNX部署 很多剛接觸視覺算法的同學(xué)都會遇到一個類似困境在文章或課程里把 AlexNet、VGG、ResNet、ViT 的結(jié)構(gòu)圖看得明明白白真正打開編輯器準(zhǔn)備訓(xùn)練時卻發(fā)現(xiàn)自己只有“網(wǎng)絡(luò)結(jié)構(gòu)代碼”沒有一套完整的數(shù)據(jù)加載、訓(xùn)練循環(huán)、評估和導(dǎo)出腳本。于是從 A 倉庫復(fù)制數(shù)據(jù)增強從 B 倉庫找訓(xùn)練參數(shù)再從 C 倉庫拼接模型調(diào)用最后訓(xùn)練到一半才發(fā)現(xiàn)學(xué)習(xí)率策略和優(yōu)化器根本不匹配。這不是個人能力問題而是當(dāng)前視覺入門教程普遍存在的空白結(jié)構(gòu)講解很多工程閉環(huán)太少??梢越o出一個明確判斷在圖像分類這個方向上從經(jīng)典 CNN 到 Transformer訓(xùn)練管線其實早已收斂。數(shù)據(jù)加載、損失函數(shù)、優(yōu)化器、評估邏輯、模型導(dǎo)出這些環(huán)節(jié)幾乎是固定的真正變化的只有模型自身以及少數(shù)幾處超參數(shù)。因此完全可以用一份統(tǒng)一代碼模板在 AlexNet、VGG、ResNet、ViT 四個主流架構(gòu)之間橫向切換。這篇文章會圍繞一個可運行的分類項目展開用 PyTorch 實現(xiàn)一個統(tǒng)一模型構(gòu)建層用同一套訓(xùn)練腳本跑通四種架構(gòu)再把訓(xùn)練好的模型導(dǎo)出為 ONNX 做部署驗證。讀完你會擁有一份可以復(fù)用的視覺分類模板后續(xù)換成自己的數(shù)據(jù)和模型結(jié)構(gòu)只需要改少量代碼。1. 這篇文章真正要解決的問題在進(jìn)入代碼之前先把問題說清楚。很多人學(xué)習(xí)視覺模型時傾向于“每個模型單獨學(xué)一遍”但這樣會陷入一個誤區(qū)把大量的時間和注意力放在結(jié)構(gòu)代碼的差異上而忽略了訓(xùn)練流程的共性。AlexNet 和 ViT 雖然看起來差別巨大但它們都可以塞進(jìn)一個標(biāo)準(zhǔn)的監(jiān)督分類流程里讀取圖像、前向傳播、計算交叉熵?fù)p失、反向傳播、更新參數(shù)、周期性評估準(zhǔn)確率。這個模板要解決的三個核心問題是如何不寫四份幾乎一模一樣的訓(xùn)練腳本只維護一份訓(xùn)練代碼就完成多架構(gòu)實驗。如何在四種架構(gòu)之間做橫向?qū)Ρ榷皇敲看味荚诓煌拇a風(fēng)格里來回切換。如何在訓(xùn)練完成后把模型導(dǎo)出為通用格式ONNX讓部署代碼和訓(xùn)練代碼解耦。對讀者來說這篇文章的技術(shù)收益是掌握一個“模型層可插拔、訓(xùn)練層固定、導(dǎo)出層統(tǒng)一”的最小工程范式。如果你是在校學(xué)生可以用它快速完成模型對比實驗如果你是算法工程師可以用它作為新項目的主干腳本如果你剛?cè)腴T深度學(xué)習(xí)可以通過這份模板搞清楚一條完整訓(xùn)練鏈路到底由哪些環(huán)節(jié)組成。這里要先做一個提醒模板的價值在于“統(tǒng)一”但不等于“無腦”。四個架構(gòu)在超參數(shù)敏感度上仍然有明顯差異這一點我會在后面的章節(jié)專門說明。代碼統(tǒng)一解決的是工程重復(fù)問題調(diào)參經(jīng)驗解決的是模型差異問題兩者并不沖突。2. 四個架構(gòu)并不需要四套訓(xùn)練代碼先把四個架構(gòu)放在一起對比這是理解整篇文章的基礎(chǔ)。模型提出年份核心思想典型結(jié)構(gòu)更適用的場景AlexNet2012深度卷積 ReLU Dropout5 層卷積 3 層全連接學(xué)習(xí)基線、新手入門VGG2014小卷積核反復(fù)堆疊多個卷積塊 全連接結(jié)構(gòu)直觀、遷移學(xué)習(xí)基線ResNet2015殘差連接緩解網(wǎng)絡(luò)退化基本塊 / 瓶頸塊通用視覺任務(wù)首選ViT2020圖像切塊 自注意力Patch Embedding Transformer Encoder大數(shù)據(jù) 預(yù)訓(xùn)練微調(diào)AlexNet 的歷史意義在于它證明了“深度”的價值更深的網(wǎng)絡(luò)、非線性的 ReLU 激活、數(shù)據(jù)增強和 Dropout 共同把 ImageNet 分類準(zhǔn)確率提升到了一個此前難以想象的高度。雖然今天直接在生產(chǎn)環(huán)境中使用 AlexNet 的團隊已經(jīng)不多但它仍然是理解卷積神經(jīng)網(wǎng)絡(luò)基本組成的最佳起點。VGG 的核心貢獻(xiàn)是簡化了卷積核的設(shè)計全部使用 3x3 小卷積核通過堆疊卷積塊來增加深度。它把“如何設(shè)計卷積層”變成了“如何堆疊卷基層”這個思路對后來很多網(wǎng)絡(luò)都有影響。缺點也明顯參數(shù)多、計算量大訓(xùn)練和推理成本偏高。ResNet 解決了深度網(wǎng)絡(luò)難以訓(xùn)練的問題。網(wǎng)絡(luò)太深時準(zhǔn)確率反而會下降這叫“退化問題”。ResNet 通過殘差連接讓每一層學(xué)習(xí)的是“殘差”——也就是輸入和輸出之間的差值。這樣梯度可以繞過大部分卷積層直接向后傳播網(wǎng)絡(luò)可以做到很深而不容易訓(xùn)練失敗。在實際工程中ResNet 系列往往是默認(rèn)的視覺基線模型。ViT 則完全改變思路把圖像切成固定大小的 patch映射成 token然后交給 Transformer 的自注意力機制去建模全局關(guān)系。ViT 在超大數(shù)據(jù)集上訓(xùn)練后再微調(diào)效果可以超過 CNN但在數(shù)據(jù)量不足時它不如 CNN 穩(wěn)。理解 ViT 的核心不需要寫完整代碼因為主流框架已經(jīng)提供官方實現(xiàn)你需要做的是把它接入統(tǒng)一訓(xùn)練流程。從工程視角看這四類架構(gòu)的差異集中在“特征提取器”和“分類頭結(jié)構(gòu)”上而訓(xùn)練上下文完全一致。真正應(yīng)該掌握的判斷是學(xué)習(xí)重點要分成兩層——結(jié)構(gòu)層看差異工程層看共性。3. 環(huán)境準(zhǔn)備與版本說明本文代碼基于 PyTorch 生態(tài)示例在 Linux 和 Windows 環(huán)境都可以運行。為了保證代碼不依賴過新或過舊的庫下面列出一個比較穩(wěn)妥的版本區(qū)間。python -c import torch; print(torch.__version__)建議使用Python 3.8 及以上。PyTorch 1.12 及以上推薦 2.x。torchvision 0.13 及以上因為自注意力的 ViT 預(yù)訓(xùn)練模型在 torchvision 中從 0.13 開始提供。onnx 和 onnxruntime用于導(dǎo)出和部署驗證。安裝命令pip install torch torchvision onnx onnxruntime tqdm如果你需要 GPU 加速請根據(jù)自己機器的 CUDA 版本選擇對應(yīng)的 PyTorch 安裝源這一點以 PyTorch 官網(wǎng)給出的安裝命令為準(zhǔn)。CPU 環(huán)境也能運行本文全部代碼只是訓(xùn)練速度會明顯變慢建議先用小 batch size 做驗證。版本問題是最容易踩坑的環(huán)節(jié)。torchvision 在較新版本中把pretrainedTrue改成了weights...的形式本文代碼為了清晰會直接使用新版寫法。如果你使用的是舊版本需要把代碼中的weightsIMAGENET1K_V1換成pretrainedTrue。這個細(xì)節(jié)會在常見問題章節(jié)繼續(xù)展開。4. 數(shù)據(jù)準(zhǔn)備先跑通 CIFAR-10本文示例使用 CIFAR-10 數(shù)據(jù)集。它是視覺分類最常用的教學(xué)數(shù)據(jù)集50000 張訓(xùn)練圖片10000 張測試圖片共 10 個類別。數(shù)據(jù)體積小、下載快特別適合用來驗證模板是否跑通。需要注意一個兩難問題CIFAR-10 原始圖片只有 32x32而 AlexNet、VGG、ResNet、ViT 的標(biāo)準(zhǔn)輸入通常是 224x224。直接把小圖 resize 到大尺寸會損失細(xì)節(jié)也會增加顯存占用但如果完全不 resize某些模型結(jié)構(gòu)可能無法正常工作尤其是依賴固定 patch 數(shù)量的 ViT。模板的處理方式很直接統(tǒng)一 resize 到 224x224。這樣四個模型接受完全相同的輸入代碼路徑是統(tǒng)一的符合本文“模板化”的目標(biāo)。需要理解的是從零訓(xùn)練時把小圖放大到 224 并不理想所以當(dāng)你把模板用到真實數(shù)據(jù)集時應(yīng)該根據(jù)數(shù)據(jù)原始尺寸調(diào)整Resize的數(shù)值。下面是數(shù)據(jù)加載部分的代碼。這里只寫一份訓(xùn)練集和驗證集都使用同一套邏輯區(qū)別在于是否做隨機數(shù)據(jù)增強。# 文件路徑data_utils.py import torchvision.transforms as transforms def get_transform(train: bool True): normalize transforms.Normalize( mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225] ) if train: return transforms.Compose([ transforms.Resize((224, 224)), transforms.RandomHorizontalFlip(), transforms.ColorJitter(brightness0.2, contrast0.2), transforms.ToTensor(), normalize, ]) return transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), normalize, ])訓(xùn)練階段加入隨機水平翻轉(zhuǎn)和顏色抖動是為了提高模型泛化能力。驗證階段不做隨機增強只做 resize 和歸一化保證評估結(jié)果的穩(wěn)定性。在train.py中加載數(shù)據(jù)時使用torchvision.datasets.CIFAR10并設(shè)置downloadTrue。第一次運行會自動下載數(shù)據(jù)之后會直接讀取本地緩存。數(shù)據(jù)規(guī)模較小所以 DataLoader 的num_workers設(shè)為 2 即可過大會在 Windows 上引發(fā)額外問題。5. 統(tǒng)一模型構(gòu)建層用注冊表管理四種架構(gòu)很多人會問為什么不用簡單的 if-else 來切換模型if-else 當(dāng)然能跑但隨著模型種類增多代碼會越來越混亂。更好的做法是用一個小的注冊表模式每個模型由一個 builder 函數(shù)負(fù)責(zé)構(gòu)建函數(shù)名和模型字符串綁定。以后新增模型只需要加一個函數(shù)不需要改調(diào)用方。下面這段代碼是模板的關(guān)鍵部分。它封裝了四個模型的構(gòu)建邏輯并且支持從 ImageNet 預(yù)訓(xùn)練權(quán)重初始化。# 文件路徑models.py import torch.nn as nn import torchvision _MODEL_FACTORY {} def register_model(name: str): def decorator(fn): _MODEL_FACTORY[name] fn return fn return decorator def build_model(name: str, num_classes: int 10, pretrained: bool False): if name not in _MODEL_FACTORY: raise KeyError(f未知模型{name}可選模型 {list(_MODEL_FACTORY.keys())}) return _MODEL_FACTORY[name](num_classesnum_classes, pretrainedpretrained) register_model(alexnet) def build_alexnet(num_classes: int, pretrained: bool False): weights IMAGENET1K_V1 if pretrained else None model torchvision.models.alexnet(weightsweights) model.classifier[6] nn.Linear(model.classifier[6].in_features, num_classes) return model register_model(vgg13) def build_vgg13(num_classes: int, pretrained: bool False): weights IMAGENET1K_V1 if pretrained else None model torchvision.models.vgg13(weightsweights) model.classifier[6] nn.Linear(model.classifier[6].in_features, num_classes) return model register_model(resnet18) def build_resnet18(num_classes: int, pretrained: bool False): weights IMAGENET1K_V1 if pretrained else None model torchvision.models.resnet18(weightsweights) model.fc nn.Linear(model.fc.in_features, num_classes) return model register_model(vit_b_16) def build_vit_b_16(num_classes: int, pretrained: bool False): weights IMAGENET1K_V1 if pretrained else None model torchvision.models.vit_b_16(weightsweights) model.heads.head nn.Linear(model.heads.head.in_features, num_classes) return model這段代碼里最重要的一層含義是模型構(gòu)建是“可插拔”的。調(diào)用方永遠(yuǎn)只依賴build_model(name, num_classes, pretrained)至于 name 對應(yīng)的是卷積網(wǎng)絡(luò)還是 Transformer調(diào)用方不需要關(guān)心。這樣訓(xùn)練腳本可以徹底固定下來不會因為換了模型而改動主流程。如果你使用的是較老版本的 torchvisionweights參數(shù)不存在。更保守的做法是把weights改成pretrained但那樣會失去新版本 API 的優(yōu)勢。這里建議優(yōu)先升級 torchvision而不是為了兼容舊版本把代碼寫得更復(fù)雜。6. 訓(xùn)練循環(huán)一份腳本跑通四個模型訓(xùn)練主腳本是整個模板的核心。它做的事情是所有分類任務(wù)共用的加載數(shù)據(jù)、構(gòu)建模型、定義損失函數(shù)和優(yōu)化器、迭代若干輪、每輪驗證并保存最佳權(quán)重。下面給出完整訓(xùn)練代碼。這是一個最小可運行版本沒有引入分布式訓(xùn)練和復(fù)雜的日志框架方便理解主干邏輯。# 文件路徑train.py import argparse import os import torch import torch.nn as nn from torch.utils.data import DataLoader from torchvision.datasets import CIFAR10 from data_utils import get_transform from models import build_model def train_one_epoch(model, dataloader, criterion, optimizer, device): model.train() total_loss, total_correct, total_num 0.0, 0, 0 for images, labels in dataloader: images, labels images.to(device), labels.to(device) optimizer.zero_grad() outputs model(images) loss criterion(outputs, labels) loss.backward() optimizer.step() total_loss loss.item() * images.size(0) total_correct (outputs.argmax(dim1) labels).sum().item() total_num images.size(0) return total_loss / total_num, total_correct / total_num torch.no_grad() def evaluate(model, dataloader, criterion, device): model.eval() total_loss, total_correct, total_num 0.0, 0, 0 for images, labels in dataloader: images, labels images.to(device), labels.to(device) outputs model(images) loss criterion(outputs, labels) total_loss loss.item() * images.size(0) total_correct (outputs.argmax(dim1) labels).sum().item() total_num images.size(0) return total_loss / total_num, total_correct / total_num def main(): parser argparse.ArgumentParser() parser.add_argument(--model, typestr, defaultresnet18, choices[alexnet, vgg13, resnet18, vit_b_16]) parser.add_argument(--epochs, typeint, default30) parser.add_argument(--batch-size, typeint, default64) parser.add_argument(--lr, typefloat, default1e-2) parser.add_argument(--optimizer, typestr, defaultsgd, choices[sgd, adamw]) parser.add_argument(--pretrained, actionstore_true) parser.add_argument(--device, typestr, defaultcuda if torch.cuda.is_available() else cpu) parser.add_argument(--data-dir, typestr, default./data) parser.add_argument(--save-dir, typestr, default./checkpoints) args parser.parse_args() os.makedirs(args.save_dir, exist_okTrue) device torch.device(args.device) train_loader DataLoader( CIFAR10(rootargs.data_dir, trainTrue, transformget_transform(True), downloadTrue), batch_sizeargs.batch_size, shuffleTrue, num_workers2, pin_memoryTrue ) val_loader DataLoader( CIFAR10(rootargs.data_dir, trainFalse, transformget_transform(False), downloadTrue), batch_sizeargs.batch_size, shuffleFalse, num_workers2, pin_memoryTrue ) model build_model(args.model, num_classes10, pretrainedargs.pretrained).to(device) criterion nn.CrossEntropyLoss() if args.optimizer sgd: optimizer torch.optim.SGD(model.parameters(), lrargs.lr, momentum0.9, weight_decay5e-4) else: optimizer torch.optim.AdamW(model.parameters(), lrargs.lr, weight_decay5e-4) scheduler torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_maxargs.epochs) best_acc 0.0 for epoch in range(args.epochs): train_loss, train_acc train_one_epoch(model, train_loader, criterion, optimizer, device) val_loss, val_acc evaluate(model, val_loader, criterion, device) scheduler.step() print(fEpoch {epoch 1}/{args.epochs} | ftrain loss {train_loss:.4f} acc {train_acc * 100:.1f}% | fval acc {val_acc * 100:.1f}% | flr {scheduler.get_last_lr()[0]:.2e}) if val_acc best_acc: best_acc val_acc torch.save({ model: model.state_dict(), epoch: epoch, val_acc: best_acc, }, os.path.join(args.save_dir, f{args.model}_best.pt)) print(f訓(xùn)練完成最佳驗證準(zhǔn)確率{best_acc * 100:.2f}%) print(f權(quán)重已保存至{os.path.join(args.save_dir, f{args.model}_best.pt)}) if __name__ __main__: main()這段代碼的邏輯并不復(fù)雜但有三個地方需要重點看優(yōu)化器支持 SGD 和 AdamW。ResNet、VGG 使用帶動量的 SGD 通常更穩(wěn)ViT 更推薦 AdamW配合較小學(xué)習(xí)率。學(xué)習(xí)率調(diào)度使用余弦退火。它能在訓(xùn)練后期逐步降低學(xué)習(xí)率提升收斂穩(wěn)定性。每輪結(jié)束后立即在驗證集上評估并保存驗證準(zhǔn)確率最高的權(quán)重。這樣訓(xùn)練中斷時不至于丟失最佳結(jié)果。如果你想繼續(xù)跑第二個模型不需要改動任何代碼只需換--model參數(shù)。訓(xùn)練腳本本身不感知模型內(nèi)部結(jié)構(gòu)差異這正是模板化的價值所在。7. 運行與驗證從命令行到日志判斷在開始訓(xùn)練之前先用最小的配置驗證模板本身是否工作正常。這里建議先把 batch size 調(diào)小比如 16確定數(shù)據(jù)加載和模型 forward 沒有問題再跑正式訓(xùn)練。四個模型分別通過以下命令啟動# AlexNet從零訓(xùn)練 python train.py --model alexnet --epochs 30 --batch-size 64 --lr 1e-2 # VGG13從零訓(xùn)練 python train.py --model vgg13 --epochs 30 --batch-size 64 --lr 1e-2 # ResNet18從零訓(xùn)練 python train.py --model resnet18 --epochs 30 --batch-size 64 --lr 1e-2 # ViT使用 AdamW 并且加載 ImageNet 預(yù)訓(xùn)練權(quán)重推薦 python train.py --model vit_b_16 --epochs 30 --batch-size 64 --lr 1e-4 --optimizer adamw --pretrained如果你機器顯存有限可以繼續(xù)降低 batch size。Batch size 不影響代碼結(jié)構(gòu)只影響訓(xùn)練速度和穩(wěn)定性。正常運行時的輸出格式類似這樣Epoch 1/30 | train loss 1.8935 acc 31.2% | val acc 47.1% | lr 1.00e-02 Epoch 2/30 | train loss 1.4102 acc 47.5% | val acc 55.8% | lr 9.66e-03如何判斷訓(xùn)練是否健康先看 train loss 是否持續(xù)下降。如果 train loss 下降但 val acc 不漲說明過擬合如果 train loss 和 val acc 都不動大概率是學(xué)習(xí)率設(shè)置有問題或者數(shù)據(jù)加載異常。不同模型在這個模板上的表現(xiàn)會遵循一些規(guī)律。ResNet18 從零訓(xùn)練到 30 輪驗證準(zhǔn)確率通常能接近 80% 甚至更高比較穩(wěn)定。AlexNet 參數(shù)多但結(jié)構(gòu)相對淺在 CIFAR-10 這種小圖上提升較慢。VGG13 訓(xùn)練速度慢顯存占用高但準(zhǔn)確率通常不錯。ViT 如果不做預(yù)訓(xùn)練在 CIFAR-10 上很容易過擬合這也是為什么它在小數(shù)據(jù)集上口碑不如 CNN 的直接原因。穿針引線地說模板讓你快速得到結(jié)果但理解不同模型的行為差異仍然要靠實驗對比和調(diào)參經(jīng)驗。8. 導(dǎo)出 ONNX訓(xùn)練與部署的解耦模型訓(xùn)練完成后下一步通常是部署。很多人直接把 PyTorch 模型放到服務(wù)里這樣雖然能用但推理代碼和訓(xùn)練代碼耦合很重。更通用的做法是導(dǎo)出為 ONNX再用 ONNX Runtime 這種專門的推理引擎加載。ONNX 的好處是與框架無關(guān)后續(xù)在 CPU、GPU 甚至邊緣設(shè)備上都能找到對應(yīng)的運行環(huán)境。下面這段代碼把訓(xùn)練好的 checkpoint 導(dǎo)出為 ONNX 文件。# 文件路徑export_onnx.py import argparse import torch from models import build_model def main(): parser argparse.ArgumentParser() parser.add_argument(--model, typestr, defaultresnet18, choices[alexnet, vgg13, resnet18, vit_b_16]) parser.add_argument(--weight, typestr, requiredTrue) parser.add_argument(--output, typestr, defaultmodel.onnx) parser.add_argument(--size, typeint, default224) args parser.parse_args() model build_model(args.model, num_classes10, pretrainedFalse) state_dict torch.load(args.weight, map_locationcpu) model.load_state_dict(state_dict[model]) model.eval() dummy_input torch.randn(1, 3, args.size, args.size) torch.onnx.export( model, dummy_input, args.output, input_names[input], output_names[logits], dynamic_axes{input: {0: batch}, logits: {0: batch}}, opset_version17, ) print(fONNX 導(dǎo)出完成{args.output}) if __name__ __main__: main()導(dǎo)出命令python export_onnx.py --model resnet18 --weight checkpoints/resnet18_best.pt --output resnet18.onnx導(dǎo)出 ONNX 時最關(guān)鍵的是dynamic_axes。如果不設(shè)置ONNX 模型輸入 batch 會被固定為 1部署時只能一次推理一張圖。設(shè)置dynamic_axes后batch 維度可以是動態(tài)的更加靈活。導(dǎo)出完成后用 ONNX Runtime 做一次推理驗證確認(rèn)導(dǎo)出沒有損壞模型結(jié)構(gòu)。# 文件路徑onnx_infer.py import numpy as np import onnxruntime as ort sess ort.InferenceSession(resnet18.onnx) input_name sess.get_inputs()[0].name x np.random.randn(1, 3, 224, 224).astype(np.float32) logits sess.run(None, {input_name: x})[0] print(輸出 shape:, logits.shape) print(預(yù)測類別索引:, logits.argmax(axis1))這一步的輸出應(yīng)該是一個長度為 10 的向量因為 CIFAR-10 有 10 個類別。如果你導(dǎo)出的模型分類頭是 1000 類而不是 10 類說明導(dǎo)出腳本構(gòu)建模型時沒有替換分類頭或者加載的權(quán)重和模型結(jié)構(gòu)不匹配。這里也能看出模板設(shè)計的另一個收益訓(xùn)練權(quán)重文件里保存的是“模型參數(shù)”而不是完整模型對象導(dǎo)出腳本只依賴build_model這個名字來重建結(jié)構(gòu)。所以模型定義層必須保持穩(wěn)定這也是前面使用注冊表模式的原因。9. 常見問題與排查思路在實際運行中讀者最常遇到的并不是模型理論問題而是環(huán)境、版本、顯存這類工程問題。下面整理了一份排查表按優(yōu)先級排列。問題現(xiàn)象可能原因排查方式解決方案導(dǎo)入vit_b_16報 ImportErrortorchvision 版本過低沒有 ViT 實現(xiàn)執(zhí)行python -c import torchvision; print(torchvision.__version__)升級 torchvision 到 0.13 以上weights參數(shù)不被識別代碼使用了新版 API舊版只支持pretrainedTrue查看安裝的 PyTorch 版本對應(yīng)文檔改為pretrainedTrue或升級版本顯存溢出OOMbatch size 過大或 224x224 輸入在 ViT 上顯存消耗高觀察日志中哪個階段報錯降低 batch size 重試--batch-size 16或更小并減少num_workerstrain loss 不下降學(xué)習(xí)率過大或過小也可能是數(shù)據(jù)沒有正確歸一化打日志檢查 loss 數(shù)量級嘗試 lr 1e-3從零訓(xùn)練用 SGD lr1e-2預(yù)訓(xùn)練微調(diào)用 lr1e-3ViT 在 CIFAR-10 上效果差小數(shù)據(jù)量 無預(yù)訓(xùn)練Transformer 容易過擬合觀察 val acc 是否遠(yuǎn)低于 train acc使用--pretrained或換用 ResNet 作為基線ONNX 導(dǎo)出后 batch 固定為 1dynamic_axes沒有正確設(shè)置用 Netron 打開 ONNX 文件查看輸入 shape在torch.onnx.export中設(shè)置dynamic_axes加載權(quán)重時 shape 不匹配checkpoint 的模型和當(dāng)前--model不一致對比訓(xùn)練命令和導(dǎo)出命令中的模型名確保訓(xùn)練和導(dǎo)出使用同一個模型名稱驗證準(zhǔn)確率高于訓(xùn)練準(zhǔn)確率Dropout 和 BatchNorm 在 train/eval 模式行為不同檢查model.train()和model.eval()是否正確切換在推理和驗證前必須執(zhí)行model.eval()這張表里的多數(shù)問題都無法靠“重裝環(huán)境”解決而是源于對版本差異和模型行為的不熟悉。建議你在開始訓(xùn)練前先確認(rèn)三件事torchvision 版本足夠新數(shù)據(jù)集能夠正常下載CIFAR-10 的歸一化參數(shù)已經(jīng)配置正確。10. 工程實踐建議與超參選擇經(jīng)驗?zāi)0迥茏屇憧焖侔阉心P团芷饋淼谡鎸嶍椖恐惺褂脮r還需要遵守一些工程經(jīng)驗否則很容易被表面上的“跑通”欺騙。第一先小后大。任何新的數(shù)據(jù)集接入模板都不要直接全量訓(xùn)練。先用每個類別 100 到 200 張圖的子集跑 1 到 2 個 epoch確認(rèn)數(shù)據(jù)加載正確、loss 能下降、模型可以收斂到隨機水平以上。工程里大量 bug 都是在全量訓(xùn)練跑了幾小時后才暴露的小規(guī)模驗證成本低得多。第二學(xué)習(xí)率策略要區(qū)分模型。ResNet 和 VGG 使用 SGD momentum 是經(jīng)過大量實踐驗證的穩(wěn)妥選擇學(xué)習(xí)率從 1e-2 開始調(diào)。ViT 更推薦 AdamW配合 warmup 和較小的學(xué)習(xí)率比如 1e-4 到 5e-4。如果套用同一個學(xué)習(xí)率到所有模型不是模板的錯而是沒有理解模型差異的體現(xiàn)。第三數(shù)據(jù)處理比模型結(jié)構(gòu)更影響最終結(jié)果。CIFAR-10 因為圖小簡單增強就夠用但真實數(shù)據(jù)往往需要做 resize、隨機裁剪、旋轉(zhuǎn)、亮度擾動等多種組合。當(dāng)模板遷移到新數(shù)據(jù)時首先要調(diào)整的是get_transform而不是急著換更復(fù)雜的模型。第四checkpoint 里不僅保存模型權(quán)重還可以保存優(yōu)化器狀態(tài)、當(dāng)前 epoch、學(xué)習(xí)率等信息。本文示例為了簡潔只保存了模型權(quán)重和驗證準(zhǔn)確率工程中建議至少加上優(yōu)化器狀態(tài)便于中斷后從最近的狀態(tài)繼續(xù)訓(xùn)練。第五從零訓(xùn)練還是微調(diào)預(yù)訓(xùn)練權(quán)重必須想清楚。大數(shù)據(jù)量任務(wù)可以從零訓(xùn)練但視覺任務(wù)普遍推薦使用 ImageNet 預(yù)訓(xùn)練權(quán)重做初始化尤其是 ViT。預(yù)訓(xùn)練初始化相當(dāng)于讓模型從“已經(jīng)會看邊的表示”開始而不是從“純隨機”開始這在中小數(shù)據(jù)集上差別非常大。第六部署前要檢查eval()狀態(tài)。PyTorch 模型在導(dǎo)出 ONNX 前一般要求調(diào)用model.eval()因為 BatchNorm 和 Dropout 在訓(xùn)練與推理時的行為不同。如果不做導(dǎo)出的模型行為可能不穩(wěn)定。11. 總結(jié)與后續(xù)學(xué)習(xí)方向這份模板的核心價值不在于代碼技巧而在于把視覺分類任務(wù)的工程鏈路固化下來數(shù)據(jù)、模型、訓(xùn)練、評估、導(dǎo)出。用同一份代碼跑 AlexNet、VGG、ResNet、ViT本質(zhì)上是承認(rèn)一個事實——這些模型的差異在結(jié)構(gòu)設(shè)計層面而工程編排層面已經(jīng)標(biāo)準(zhǔn)化。理解了這一點你就可以把精力放到真正值得研究的地方。下一步建議從這個方向開始實踐先把模板在 CIFAR-10 上完整跑一遍重點觀察 ResNet 和 ViT 在相同數(shù)據(jù)下的行為差異然后用自己的數(shù)據(jù)集替換 CIFAR-10按實際分類數(shù)量修改build_model中的num_classes。如果數(shù)據(jù)量較大可以嘗試使用混合精度訓(xùn)練如果模型較大可以考慮分布式訓(xùn)練如果涉及目標(biāo)檢測或語義分割則需要在本文模板基礎(chǔ)上增加對應(yīng)任務(wù)頭。最后提醒一句模板是有適用邊界的。分類任務(wù)的訓(xùn)練管線收斂了不代表所有視覺任務(wù)都適合這個套路。當(dāng)你進(jìn)入檢測、分割、多模態(tài)等方向時可以復(fù)用本文“注冊表管理模型、固定訓(xùn)練循環(huán)、統(tǒng)一導(dǎo)出格式”的思維方式但代碼結(jié)構(gòu)需要重新設(shè)計。把這份模板收藏起來作為你快速驗證模型和建立實驗基線的起點它會幫你省下大量重復(fù)造輪子的時間。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
′ !γ}丶。。久久精品欧美一区二区三区| 婷婷国产精品九区| 久久久亚洲精品中文字幕人妻| 国产馆极品诱惑| 人人摸人人摸人人干| 久久东京热久久| 亚欧中文字幕在线视频| 黄色大片一区二区密桃丝袜| 色综合尤物| 91亚洲色人| 久久丝袜| 33044男人的天堂深夜备| 天天天操天天天爱| 久久香蕉超碰97国产精品| 激情六月天| 欧美日韩国产色图在线| 国产精品久久久久久久久AV大片| 亚洲乱码国产乱码精网站| 日韩欧美亚欧在线视频| 97操碰| 日本中文字幕熟妇| 91国内外在线| 97热视频在线观看| WWW.加勒比人妻一区不卡.com| 美女超碰978| 国产女生在线| 性做久久久久久久| 日韩丝袜二区| 久久肏大逼| 日本Xx性爱| 青青伊人这里只有精品| 老熟女搡BBBB搡BBBB视频| 超碰在线人妻中文字幕| 中文人妻av高清一区| 91美女视频| 欧美成熟性爱精品| 日韩免费高清大片在线| 豆花视频操逼网址| 免费超碰97在线观看| 亚洲自拍偷拍视频在线| 日韩免费高清大片在线| 中文字幕亚洲热播人妻| 激情综合五月| 欧美人妻精品| 在线五区| 99久久久无码国产精品性啊聊| 亚洲性爱成人| 国产精品永久免费10000| 亚洲色狠| 亚洲AV无码AV吞精久久久久| 96久久精品一二三区色欲| 亚洲二区精品在线观看| 天天日夜夜爽| 热热热热日日漂亮永久永久国产日| 日韩国产十八禁| 91五月天| 国产美女高潮视频| 综合av社区| 女人喷水视频在线观看| www.色婷婷| 成人精品电影| 人妻少妇久久| 色色色色日本| 人妻夜爽夜夜爽| 精品少妇高潮久久| 精品久久无码午夜福利| 亚洲av淫乱| 九九成人视频| 欧日韩在线观看| 神马久久久久久久久| 欧综合网| 国产一进一出视频网站| 九九久久综合| 青木玲在线不卡| 校园春色第一页| 久久这里只精品免费福利| 国产av波波国产精品| 97人人干人人操| 欧美亚洲丝袜美女电影| 日本东京热久久久电影| 一区二区三区激情在线观看| 东京太热久久久| 国产性爱欧美性爱在线| 久久超碰网| 午夜影美女日鸡鸡天天视频国产| 亚州操操穴网| 99精品九九九九九九| 无码高清操逼网址| 大鸡巴久久久| 亚洲熟妇一,二,三期| 手机在线人成免费视频| 啊啊啊啊在线观看网址| 色色毛片| 女同在线视频一区| 性生活性生大爱77AV国产| 亚洲男人天堂av| 中国国国产一级特黄毛片| 亚洲骚女一区二区三区| 久久久久九九九九| 色性综合| 欧美性高潮| 人妻丝袜一区二区三区在线| 美女久久久久久久久久久| 国产一区麻豆免费观看| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 蜜臀无码一区二区| 国产深夜福利| 99色视频| 91网站18| 久久人妻97久久久久久久| 淫穴高潮色图| 人人摸人人添人人操| 日本三级人妻a人妻一在线| 狠狠躁伊人中文字幕| 国模无码一区二区三区在线| 精品一区二区三区四区外站 | 色色婷婷丁香| 亚洲风情综合网| 久操网视频| 国产九区| 日韩女模中文造逼| 国产蜜臀在线| 亚洲天堂 视频你懂的| 欧美999999| 国产 日韩 欧美高清| 大香蕉色网| 伊人网青青| 北京专精特新企业招聘信息| 久艾草在线精品视频在线观看| 嗯嗯啊啊用力视频免费| 自拍偷拍 日韩无码| 亚洲诱惑天堂 | 九九色热| 欧美视频一| 色婷婷综合久久久久中文一区二区| 97超碰色色| 东京热一区二区三区四区五区六区| 日韩免费三级黄片电影| 超碰97久久国| 丁香啪啪| 免费一级特黄特色大片在线观看看| 啊啊啊不要嗯嗯在线观看| 无码聚合| 欧美爱爱97| 熟女一区二区三区| 日本中文字幕在线视频| 操碰97| 亚洲人妻熟妇三十三区| 国产热RE99久久6国产精品首| 亚洲 欧美 第一页| 亚洲自拍欧美国产首页网曝| 欧美国产日韩清纯唯美| 7777奇米影视久久| 亚洲欧美骚| 天综合网| 99re国产中文字幕| 激情小说亚洲色图| 是还免费视频1727我| 97在线精品| 久夜视频| Aa东京男人的天堂| 精品视频日日夜夜| 国产精品无码在线| 亚洲精品久久久久毛片A片拉屎| 久久av色| 亚洲人妻av| 蜜乳视频网站| αⅴ天堂| 日本阿v天堂在线观看| 超碰在线第一页| 亚洲黑丝在线| 97任你吞精| 九九九九精品九九九九| 亚洲极品| 97看操| 激情综合网激情五月天| 久操网视频| 天天澡天天爽日日AV| 天天天操天天天爱| 色狠人在线99| 熟女人妻av在线资源,黄色的资源| 中文字幕亚洲永久精品| 香蕉热人人精品| 久久久97| 狠狠爱大香蕉| 搡老女人老熟女91老熟女综合网| 丰满熟女人妻一区二区三五十一路| 中文字幕少妇色| 久操B网| 久久欧美性爱视频| 日韩,欧美,中文在线| 九九视频黄色片| 外站AV在线| 一二三区视频在线观看| 999国产精品999久久久久久| 男人久久天堂| 精品无码少妇| 欧洲亚洲人妻无码高清久久三区四区| 96国产污污污丝袜| 国产97综合| 超碰在线1234区| 九九自拍伦理| 蜜臀久久久国产| 99久久久久| 国产后入清纯| 国产AV天美| 亚洲色情在线影视| 在线观看A啊啊啊| 神马午夜久久久| 青青草亚洲一区| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 91久久堂| 久湿久久| 99re视频在线播放青草| 91狠狠| 亚洲色狠| 91久久九九精品国产综合| 搡老女人老熟女91| ..日韩av毛片精品久久久| 精品亚洲国产成人精品| 久久肏大逼| 久久激情五月| 久久久亚洲精品电影免费看| 9999亚洲电影| 久久精品无码熟妇一区二区三区视频导航| 精品国产乱子伦一区二区三区,精品一| 亚洲中文sv| 欧洲精品二区| 国产欧美日本亚洲精品| 在线国产福利网址导航| 国产高潮AA片免费看| 亚洲精品日韩国产欧美| 97久精品| 亚洲蜜臀视频精品久久| 清纯唯美综合| 亚洲欧洲自拍图片专区满春格| 伊人精品久久网站| 五月激情影院| 超碰中文字幕人妻草一区| 啊啊啊啊啊好舒服视频| 欧美少妇色图| 久久av一级av少妇av高潮| 欧美日韩在线国产在线| 99久久9| 旡码电影特区| 国产精品乱码久久久久久久| 欧美在线天堂| 久久精品日韩| 床上啊啊啊一区二区三区| 综精品久久久aaaa| 96国产精品| 日本一区二区三区午夜观看| 国产精品青草综合久久| 久久久久9999妇女| 91性片| 国内毛片婷婷六月色| 色婷婷丁香五月| 久久欧洲| 欧美精品99久久久**| 精品v日韩欧美国产| 国模限制级电影| 色亚州人久干视频在线观看免费版| 国产精品网址| 婷婷综合网站| 亚州,欧美在线| 精品久久久久久中文字幕三区| 伊人色综合网| 亚洲欧美综合网| 亚洲三区视频| 日本五十路在线| 神马久久午夜| 欧美老熟另类| 丰满人妻一区二区三区免费| 无码抄逼网| 国产天美传媒精品| 思思视频免费看网站| 久久久婷| 啊啊啊啊好疼| 精品色色| 亚洲欧美首页| 欧美另类色图片| 骚鸭AV| 欧美十八禁导航成人| 国产精品天美传媒| 91肉片| 五月天婷婷欧美三区| 中文字幕1区2区| 国产一级做a爰大片免费久久| 一区 欧美 日韩 麻豆| 亚洲男人天堂AV| 丁香六月激情综合| 9久久久久| 少妇 综合| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 好湿好紧好爽 视频| 伊人欧美大香蕉视频| 国产人妻天天干精品| 亚洲美女黄色| 天天色综合天天操| 精产品久久| 精品国产精品一区二区| 日韩有码专区| 欧美爆操91| 国产精品人妻一区二区| 欧美熟妇亚洲版| 国产精品美女久久久久AⅤ国产馆| 精品九九九九九九九| 91东京热男人的天堂| 久久久久久久久九九久孕交| 欧美亚洲色图另类国产| 大香蕉性欧美| 欧美日韩资源在线| 日韩人妻 中文字幕| 欧美在线第五页| 狠狠干婷婷| 大香蕉2017| 婷婷五月天激情四射| 91综合站| 98精品国产乱码久久久久久| 国产成人自拍视频在线| 91久久婷婷| 白丝1区2区3区| av最新免费中文字幕| 久久97超碰香蕉| 婷婷丁香成人| 婷婷色色五月天福利| 一区二区视频你懂的| 91新在线欧美| 国产专区第一页| 蜜桃天美传媒AV一区二区三区| 国产女人高潮视频| av在线不卡一区二区三区| 精品二区三四区五电影| 久久欧美1卡2卡3| 大黄片做爱的大的| 麻豆精品.欧美精品.日韩精品.| 欧美久久婷| caoni国产亚洲av| 男人天堂新在线| 久久天天躁日日躁狠狠躁| 欧美黄片欧美黄片xxx| 国产成人五月天丁香花| 大香蕉一人在线| 婷婷99| 国产日韩区| 综合色好色| 国产风韵犹存熟妇三区| 富女玩鸭子一级毛片| 国产精品噜噜噜日日日| 区日韩亚洲乱码av电影| 操逼网免费无码视频| 麻豆天美传媒毛片| 超碰天天去日穴| 日日夜夜青青草母狗| 丁香五月天激情| 亚洲一级性爱视频免费看| 97资源久久| 丁香7月婷婷| 密臀AV在线| 99热在线播放| 国产人妻天天干精品| 中文乱码字字幕在线第5页| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 26uuu性| 呦呦一区| 亚洲熟女av中文字幕| 岛国不卡超碰护士AV在线播放| 综精品久久久aaaa| 天美国产三级传媒| 看一级黄色视频| 97欧美性爱| 丰满美女一级毛片在线播放| 中文字幕欧美日韩三级| 91制服丝袜中文字幕| 日韩欧美~中文字| 蜜桃一区二区三区| 国产高清在线自在拍69| 神马久久免费电影观看| 亚洲综合嫩| 99最新日韩偷拍视频| 91丝袜激情在线| 天天干一区二区| av天天在线观看| 日韩人妻精品久久久久| 欧美色三级片91| 精品久久青青草| 98色网| 这里只有精品视频| 欧美日韩丝袜 | 欧美综合综合| 亚州性色| 日韩不卡毛片Av免费高清| 国产一区二区a毛片| 午夜AV人气不卡| 日本欧美一区二区三区免费| 色综合av男人天堂| 伊人色综合网| 精品v1区| 学生妹天天看| 亚洲第一视频 欧美风情 日韩| 四虎影视国产精品| 亚洲丝袜综合| 久草视频观看视频在线| 国产原创剧情在线丝袜| 伊人AAA| 蜜臀AV成人精品蜜臀AV久久| 黄色片G G G| 日本道人妻久久久在线不卡色视频| 91丝袜人妻| 亚洲精品97| 激情五月天插| 九九99精品视频在线观看| 人人喜人人妻| 自拍第一页| 深夜视频| 欧美黄色大片在线观看 | 25国产精品免费观看| 嗯嗯嗯嗯啊啊啊好紧好大| 青青草精品| 久久中久文96| 国内亚洲高清无码| 丁香五月天激情网站| 超碰人人乐97| 欧美最大综合网| 好爽视频在线观看视频| 最新中文字幕精品在线| 国产日本熟女顶级一区二区三区视频| av久日| 97在线免费看视频| www欧美性爱| 久久久久久久久久久97| 亚洲伊人青青草| 欧美性爱第一页久久| 国产操逼逼网| 日本999精品视频| 男人天堂无码| 强奸国产精品视频| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 变态乱伦伪娘灌肠一区二区| 欧美综合站| 天天日熟妇| 最新日本中文字幕| 开心婷婷五月| 97久久超碰日韩精品| 国产一级137片内射麻豆| 99久久网站| 青娱乐手机日韩在线视频| 女人被添高潮免费视频| 中国小夫妻勾搭露脸淫荡对白| 色盈盈影院| 欧美在线|亚洲| 日韩在线地址一| 五月婷婷AV| 久偷拍欧美日韩三区| V A在线| 久久久久久AⅤ无码免费肉站| 国产传媒1234区| 久久91| 久久婷综合| 亚洲91综合| 91丨豆花丨熟女| 欧美日韩国第一区| 91亚洲欧洲| 久热超碰| 久草成人| 久久久噜噜噜久久久| 玖玖久久久| 综合色久| 色妇综合网| 色婷婷亚洲婷婷| 好湿好紧视频| 性爱动态120秒| 超碰美国| 91亚洲不卡一区| 免费试看60秒| a男人的天堂| 在线日韩精品一区二区三区| 狠狠久久四虎| 在线人成亚洲视频免费观看| 超碰在线974| 国产精品久久久吖| 大香蕉国产中文自拍| 1000部熟女视频在线观看| 97玖玖人妻| 自拍偷拍第26| 少妇内射www在线观看视频 | 91精品又粗又猛又爽| 亚洲阿v天堂无码z2018| 欧洲亚洲天堂精品 | 国产视频大全| 操逼操操操91| 欧美亚洲丝袜人妻制服中文99| A V少妇特黄三级| 久久天堂| 91强在线播放| 婷婷五月天av| 91精品无码久久久久久久| 一个人在线看的黄色电影网站| A片大香蕉在线| 校园春色亚洲无码| 在线99热| 国产三级资源在线观看| 夜夜国自区| 亚州色交| 91成人久久| 精精品人妻一区二区三区| 91色女| 青娱乐国产盛宴视频| 清纯唯美综合| 欧美青青视频| 丰满人妻一区二区三区免费,| 久久中文字幕不卡人妻| 少妇特黄一区二区三区| 国产免费大片| 三级片网站在线播放| 99热在线观看| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 家庭乱伦国产| 丰满人妻一区二区三区免费| 素颜老阿姨乱情色| 欧美亚洲综合色| 午夜无码精品免费看性色| 男人的天堂免费| 精品一区二区三区四区外站| 嗯~啊~快点 死我视频| 亚洲 欧美日韩 另类| 亚洲春色一区二区三区| 久久99久久99精品天美传媒棢·纸:.| 97天天做| 一二三啪啪专区| 久久五月视频| 久久香蕉综合一本到3atv| 黄色大片视频在线免费看| 久久久久久久久国产| 亚洲综合码| 加勒比大香蕉视频在线| 色爱三区| 在线观看岛国有码| 日本人妻伦在线中文字幕| 天天操妹子| 色婷婷日韩精品一区二区三区| 岛国人妻少妇av在线观看| 91人人看| 天美传媒国产原创中文字幕亚洲欧美另类 | 无码人妻精品一区二区中文| 国产在线综合福利网站| 91熟女视频| 91亚洲网站| 精品少妇高潮久久| 欧美成人精品一区二区男人蜜臀| 亚洲蜜臀视频精品久久| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 五月婷婷丁香六月丁香| 一区二区三区免费视频入口| 人人么人人操| 亚欧高清| 亚洲日韩视频二区| 嫩草在线视频| 午夜一区二区三区国产| 999亚洲国产视频| 少妇啪啪自拍| 福利在线观看一区二区| 欧美极度丰满熟妇hd| 亚洲色图殴美色图激情乱伦| www网站黄| 2024人人操人人摸| 99在线观看| 大香蕉伊人色偷偷在线| 台欧久久精品视频| 屌妞视频久久久久久久| 人妻丝袜肏逼| 啊啊啊男女| 男人天堂2019| 在线免费观看高清无码视频| 久久无码一区二区二三区性色| 日本国产亚洲一区在线观看| 国产 日韩 欧美高清| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 97超碰人人模人人拍人人| 十八禁啪啪视频| 人人看人人插| 人人考人人摸人人干| 激情五月婷婷| 欧洲射精91| 欧美一品道| 久久久精品网| 性爱免费视频成人| 色色五月天激情| 欧美久久草熟女| 天美传媒Av在线| 九九九九亚洲| 日韩黄片视频试看| 99色视频| 久久m| 一区二区三区一亚洲中文字幕、综合区灬 | 天天射天天色成人| 亚洲国产一级黄色视频| 国产精品蜜乳AV| 中亚av| 精品乱码久久久久| 男人的天堂久久久| 亚洲AV噜噜狠狠网址蜜桃动漫| 九九aV| 91在线丝袜视频| 伊香蕉综合久久久久久久噜噜噜| 国产黄色小视频网站| 99视频内射三四| 亚洲在高跟鞋自慰久久在色线| 东京热,男人的天堂| 家庭乱伦国产精品| 婷婷丁香六月| 国产精品久久久久久9999| 日韩欧美加勒比| 在线观看日韩av不卡| 插老姨肥穴| 日韩熟女精一区二区三区不卡| 在线欧美69V免费观看视频| 欧美少妇熟女| 欧美日韩妖精91com| 欧洲欧美视频一区二区| 欧美亚洲激情小说| 四虎在线视频| 日韩中文字幕在线视频观看| 日韩精品怡红院| www熟女乱伦com| 美女诱惑爱爱| 久久在肏| 丁香五月色情| 97 国产精品| 午夜福利精品| 99精品高潮| 久久久久久久九九九九九九| 天堂av2019| 中国和日本人色哪个不下载能放| 日本激情免费大片| 久久m| 欧美激情性久久久久久| 69AV女优男人的天堂| 欧美色院| 熟妇高潮一区二区免费视频| 夜夜爽夜夜操| 殴美性色a级欧美| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 岛国成人av在线播放网址| 亚av顶级裸体一区二区三区四区五区| 国产精品分类在线观看| 97 亚洲 日韩 欧美 在线| 97天天| 女同在线视频一区| 97天天日| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 99RE在线视频精品,这里只有精品| 日本阿v天堂在线观看| 久7色| 国产精品人妻免费精品| 久久久久久久久久久人妻| 尤物网站91| 日日日啊啊啊| 中文字幕五月婷婷免费| 蜜桃色院一区久久| 淫荡熟女乱伦网| 黑人粗大V S日韩女优视频| 蜜桃av综合网发布| 欧美精品黑人猛交高潮| 国产一级久久久| 人妻三级在线中文字幕| 欧美亚综合色图| 日韩黄片视频试看| 日本天堂在线播放| 久久国产视频性吧| 综合伊人网12色| 今日头条成人一区二区三区四虎精品| 超碰在线香蕉| 在线视频资源| 成人色女网| 草草网站影院白丝内射| 亚洲欧美综合图片| 草b在线 | 欧美精品第3页| 国产精品不卡高清在线观看| 日本蜜桃| 丁香五月色| av网站免费看| 高清不卡 中文 人妻| 久99热| 久96热在线观看视频| 亚洲色悠悠久久88| 五月激情综合网| 免费?级毛片无码?∨蜜芽试看| 97天天在线| 熟女丝袜视频| 福利在线观看一区二区| 性色亚洲| 国产精品3| 老熟女91av| 日本一级性爱| 懂色中文一区二区三区 | 欧美日韩精品一区二区三区高清| 亚洲黄色电影| 久久久久久9999| 色婷婷丁香五月| 夜夜天天噜狠狠爱2021| 伊人网高清| 97超色| 97色欧州| www.97在线| 色综合色欲色综合色综合色综合| 91人精品妻入口| 成人性交午夜免费片| 91丝袜在线视频| 91老司机在线视频免费观看| 国产 丝袜 欧美中文 另类| 国产91影院| 色狠狠一区二区三区香蕉| 色偷偷色偷偷欧美日韩| Av色五月| 大胆91| 超碰在线国产| 男男H黄动漫啪啪无遮挡网站| 亚洲无码超碰免费| 亚洲加勒比久久日本道| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 久久黄片国产一区二区| 久久东京热久久| 久操免费视频| 天天综合网视频91| 物业黑人 AV一区| 9精品在线| 午夜精品久久久99| 欧美亚男人的天堂| 青青草自拍视频在线播放| 六月丁香五月婷婷| 大香蕉黄色一区| 国产精品自拍欧美在线| 性在久久久久久| 日韩在线一区高清在线| 影音先锋每日最新资源在线观看 | 国产97色在线| 亚洲AV无码国产精品久久久久 | 狠狠干2020| daxiangjiao你懂的| 亚洲精品一卡二卡三卡福利视频网站| 日韩人妻网站| 日韩久久艹| 97天天| 少妇大屁屁| 日本不卡在线二区三区| 狼人狠干| 中文字幕在线免费观看2| 日韩成人无码| 亚洲天堂一区二区久久| 欧美日韩色综合网| 男女激情黄色网址| 亚洲最大网站av| 亚洲五月婷| 99这里有精品视频| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 日韩欧亚中文在线| 狠狠干妹子| 伊人97| 天天色图| 韩国手机不卡无码三级视频| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 一区二区三区男女操逼黄色小电影| 在线人妻熟女一区二区三区四区五区| 有码色中文字幕在线观看| 好屌色综合| 亚洲情色 自拍| 丰满人妻一区二区三区| 边做饭边操逼逼| 亚洲乱伦图片视频| 操一区| 日韩精品高清资源在线| 中文字幕文字幕无码一区二区三区电影99| 色香91| 国产精品乱码久久久久| 午夜男女爽爽爽影院视频| 午夜120视频在线观看| 91狼人| 日韩美脚一区二区网站| 伊人aaa| 日韩情色一区二区| 99老司机精品视频在线观看| 国产18精品亚洲精品| 色综合中文字幕不卡| 后入式在线免费观看60秒| 超碰吊日色| 色婷婷六月丁香七月婷婷| 多乙久久久久久| 精品久久久久,69国产成人精| 久久久久ab| 精品国产AV一区天美传媒| 欧美人人曰人人操人人射射| 无码国产精品午夜不卡(| 日日日啊啊啊| 青青草公开在线免费不卡视频| 美女裸体无遮挡永久免费观看网站| 国产精品一二三在线看| 欧美最婬乱婬爆婬性视频 | 亚洲精品国产专区在线观看| 99热这里是精品| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 亚洲天堂少妇| 国产亚洲精品激情| 欧美久久九九| 超碰久久.com| 国产精品久久久无码AV网站| 国产天天骚| 91久| 欧美黄片视频在线观看免费| 东北老女人的激情视频| AV中亚| 国产精品国产拍高清AV| 好舒服视频| 91被操| 狼人综合婷婷激情四射| 人人妻人人爽一区二区三区| 在线人人人人人人精品超| 97资源欧美| 青娱乐休闲视频在线观看| 亚洲国产欧美中日韩成人综合视频| 97欧美精品综合| 欧美超碰在线| 大香樵伊人网| 中文字幕人妻丝袜乱一区三区| 黄页网站免费高清在线观看| 亚洲 欧美 小说| 98人妻精品一区二区色欲| 超91综合网| 999热这里只有精品| 久久久精品成人国产| 日本性一区| 亚洲情色五月天 | 国产精品熟女九色九色蜜臀| 91人妻视频| 中文AV制服乱伦| 亚洲熟妇丝袜在线观看| 亚洲av性爱电影| www.操| 超碰97人妻免费在线| 嗯嗯嗯不要不要免费视频| 欧美亚洲中文| 蜜臀亚洲中文| 国产又黄又爽又刺激久久久久久| 欧美中文字幕一区| 久久精品人人做人人看| 免费9 1久久| 亚洲无线码欧洲精品区别| 人妻 欧美 中文| 日本国产高清色www视频在线| 97资源免费视频| 欧美大香蕉专区网| 欧美色图片欧美色图| 麻豆国产96在线| 日骚逼视频| 97免费在线视频在线观看| 欧美青青草视频| 操逼无码操逼| 成人在线永久| 日韩av影片在线观看| 97超碰国产亚洲精品| 日韩精品一区二区三区色欲| 另类欧美色| 欧美一区二区日韩传媒搭讪精品| 精品久久无码午夜福利| 中亚黄色三级大片| 国产精品久久伊人| 久夜视频| 五月天色电影| 丁香五月综合| 草草草视频| 五十路熟女工口 | 加勒比海成人视频网| 户外裸露刺激视频第一区| 人妻熟妇一区二区三区| 欧美人妻二区三区| 国产女乱淫真高清免费视频| 久操免费视频| 色好看av| 午夜高清成人在线视频| 人妻少妇久久中文字幕一区二区 麻豆| 精品十三区| 五月天玖玖资源站| 久久天堂| 免费99精品国产自在在线| 中文字幕在线播放2中文字幕在线观看2 | 激情看片网站| 亚洲国产成人精品999| 一摸二插三插| 精品国产一区二区三区久久久蜜臀| 免费伦费视频在线观看| 免费视频97| 四虎在线观看网站| 91在线|亚| 强奸乱伦av电影| 日韩日本欧美在线观看| 91精品国产91久久久久久久久久久久| 激情图片伦理国产一区二区日韩| 亚卅熟女乱色| 国产精品日韩在线一区| 精品欧美乱码久| 欧美性综合| 综合干干干av久久久综合网| 亚洲熟女中文字幕在线| 亚洲无码成人精品| 后入式免费视频| 青青草中出视频| 蜜臀久久在线视频| 91久久久久久久久久久| 无遮挡h肉动漫在线观看| 老外又粗又长一晚做五次| 九热久| 传媒在线观看一区二区三区| 99国产精品免费| 好湿好紧好爽 视频| 婷婷五月天av| 免费看久久久性性| se01国产在线视频| 午夜性生活av免费在线看| 欧美的精品的视频| 热热色青青草| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久草福利在线资源站| 成人性爱av| 免费观看网黄| 亚洲国产成人7777| 成人线上超碰| 午夜爽爽爽| 97超碰欧美手机| 男人的天堂视频精品乱在线| 夜夜嗨老熟女AV一区二区三区| 好看的久久不射无码影视影院| 九九热免费在线国产视频伊人五月| 国产成人亚洲精品自产在线| 亚洲免费看片| 99精品网| 丁香五月社区| 日日干日日| 中出91| 欧美日韩m| 日本不卡三级网在线播放| 另类综合另类| 嗯~啊~快点 死我视频| 禁止观看美女黄| 日韩精彩免费| 日本精品国产视频| 免费网站观看www在线观| 色诱中文字幕| 91真人天天在线| 亚洲视频二区| 人妻色情天天操| 欧美色图片色哟哟| 日本男人天堂| 97免费视频在线观看| 精品视频在线观看精品| 四虎国产精品永久入口| 99在线免费公开视频| 人妻81p| 91粉嫩萝控精品福利网站_精品影音先锋国 | 中文字幕一区二区在线日韩精品| 中文字幕交换人妻| 伊人五月天| 九色97| 丰满少妇高潮无码| 超碰在线第一页| 欧美激情内射| 精品人妻免费观看| 免费精品中文字幕| 桃花色涩综合影院| 综合影院亚洲| 91丝袜激情在线| 久久婷婷苹果| 17c嫩草51久久91嫩草| 尤物视频一区| 国产成人网站在线观看| 中文字幕日韩综合| 中文在线久久字幕| 久久99久久99精品天美传媒棢·纸:.| 欧美国产婷婷久久| 17c在线成人免费A片观看| 久久久夜夜嗨免费视频| 精品网站9999| 青久久| 午夜舔阴达高潮视频免费看| 人人摸人人摸人人干| 亚洲图片欧美日韩| 白丝在线一区| 日韩兔费看黄片| 国产麻豆福利av在线播放| 成人婷婷丁香| 精品一国2| 97亚洲精品| 女人午夜视频777| 在线综合 亚洲 欧美中文字幕 | 天天色黄色影院天天操| 另类在线| 亚洲凸凹超碰成人| 色吧 综合| 人人色人人操在线| 韩国黄色片精品久久久 | 欧洲精品一级二级精品综合视频综合 | 熟女人妻精品一区二区视频 | 特级大荫道BBwBBwBBW| 人妻少妇久久| 成人AV超碰免费在线| 久久99操天天日| 加勒比少妇AV婷婷六月天超碰超碰| 中文字幕后石码四区五区| 浪人综合网| 99re只有精品| 97国产人人| 亚洲成人免费电影| 综合九九| 91深夜夜| 久操 高清| 最新亚洲黄色免费电影| a久久| 大香交| 人妻日日干| 亚州综合AⅤ| a片在线播放| 97在线免费看| 揉揉日日日日| 超碰成人免费| 欧洲色综合| 99热这里只有精品地址| 老熟妇一区二区三区啪啪| 波多野结衣AV无码一区| 99热99re超碰精品| 热热色91| 国产91美女高潮| 欧美天天干| 亚洲丝袜二区| 91 丝袜在线播放| www.99色| 九九热九九| 五月花婷婷| 亚洲资源站| 日韩性色b| 久久久久久久人妻丝袜| 欧美性猛交美女自慰91| 激情一区二区| 偷拍网站久久男女男| 亚洲麻豆av一区二区| 7月婷婷综合| 极品销魂美女一区二区| 欧美少妇一区二区三区| 人人操人人93| 国产传媒美日韩av| 亚洲密乳AV| 99热日| 操逼操逼操| 九九九久千久久激情蜜桃在线看 | 欧美日韩色综合网| 中文字幕人乱码中文字的预防方法 | 国产91美女高潮| 精品人妻一区二区三区四区不卡在| 日本人体九九九九九九| 家庭乱伦麻豆| 亚洲AV不卡在线观看尤物| 亚洲精品国产熟女久久久久久| 啊啊啊啊啊啊啊网址在线观看| 日本性爱少妇| 97视频免费播放| 色九月综合| 国产自产自拍| 国产免费小视频| AV色天香在线| 亚洲国产精品有声| 国产2.3.4区| 欧美不卡在线美女| www亚洲免费| 日韩无码服务区| 99热亚洲天堂| 最新中文字幕精品在线| 国产尤物在线三区| 美女啊啊啊啊pc| 久久riav中文精品| 丝袜 中出 制服 人妻 美腿 中文字幕| 91国产精品熟女| 多毛小伙内射老太婆| 亚欧美综合网| 亚洲精品欧洲精品| 亚洲图片偷拍视频区| 在线午夜成人无码视频| 日日夜夜模| 麻豆久久视频在线地址| 蜜乳av一区二区| 亚洲熟女人妻中文字幕一区二区| 欧美se亚洲| 日本色婷婷| 国产日韩区| 国产欧美另类久久久精品课程| 婷婷色网| 日日干日日| 久久一区二区高清免费| 亚洲国产综合图区中文字幕 | 久久久久久69国产一区二区| 97超级久久| 传媒免费一区二区三区| 婷婷大香蕉| 一级特级aaaa毛片免费观看| 曰韩人妻中文字幕在线| 亚洲综合色在线| 91天天综合网,天天综合网| 91chinese在线| 亚洲高清国产理伦片| 成人一二| 欧美se综合| 果冻传媒A片一二三区| 美女裸体麻豆天美蜜桃91| 婷婷激情四射| 国产 热久久久久国产精品| 女性喷水高潮在线观看| 日韩一卡二卡三卡| 国产吹潮女在线观看| 丝袜综合| 一区,二区,三区网站| 天天舔天天 | 亚洲欲| 91视频成人福利网站在线一区| 婷婷五月天在线观看| 国模少妇一区二区三区| 欧美日韩日产免费网站看| 婷婷色色五月天福利| 亚洲精品人体| 欧美日韩人妻精品系列一区二区三区| 大香蕉欧美国产日韩高潮| 美女的肌被草喷水视频| 亚州色图第三区| 日日干日日| 婷婷久久综合久| 免费看一级a性色生活片久久无| 最新中文字幕精品在线| 亚洲综合另类小说色区亚洲成av人片在www| 性猛交| 99中文字幕| 久久久久久九九九| 校园春色 亚洲| 狠久久| 熟女少妇视频| 999热这里只有精品| 男女啊啊啊| 少妇天堂| 性91| 在线日韩日本亚洲国产| 蜜臀久久99精品久久久久久无删减| 色妇综合网| 超碰95| a'v在线资源| 综合久久久久久久久91| www久久国产精品| 黑人精品一区二区在线播放| 97任你吞精| 久久社区一区二区三区| 乱伦Av网| 欧洲熟妇xxXx欧美老妇裸体| 日本片日本片祼观看网站在线看中文版网页在线看 | 欧美性爱第一区| 日本视频一区二区三区|