久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

PyTorch圖像識(shí)別完整實(shí)戰(zhàn):從數(shù)據(jù)處理到模型部署全流程

PyTorch圖像識(shí)別完整實(shí)戰(zhàn):從數(shù)據(jù)處理到模型部署全流程 前陣子有個(gè)朋友問(wèn)我想用PyTorch做一個(gè)圖像識(shí)別的小項(xiàng)目但他翻了一堆教程要么只跑通了單張圖片的預(yù)測(cè)演示要么一上來(lái)就丟一個(gè)幾百層的模型讓人直接復(fù)制。我聽(tīng)完就覺(jué)得這類(lèi)教程最大的問(wèn)題是把“能跑”和“能落地”混為一談了。所以這篇文章我不想復(fù)述官方文檔而是把我實(shí)際做過(guò)的圖像識(shí)別完整流程拆開(kāi)講從任務(wù)定義、數(shù)據(jù)準(zhǔn)備、網(wǎng)絡(luò)選型到訓(xùn)練調(diào)參、模型評(píng)估和部署前的最后一步。文章適合正在學(xué)PyTorch、打算拿它做圖像識(shí)別的初學(xué)者也適合已經(jīng)跑過(guò)一些Demo、但不確定下一步怎么走的中級(jí)使用者。我盡量把每一步背后的“為什么”也講清楚而不是只給代碼。1. 動(dòng)手前先想清楚你的圖像識(shí)別任務(wù)到底是什么1.1 先把“圖像識(shí)別”翻譯成計(jì)算機(jī)能解決的問(wèn)題很多人上來(lái)就搜“PyTorch圖像識(shí)別”這個(gè)詞其實(shí)太寬泛了。圖像識(shí)別在工程上至少會(huì)分化成圖像分類(lèi)、目標(biāo)檢測(cè)、圖像分割、圖像檢索等好幾個(gè)分支技術(shù)方案完全不一樣。比如目標(biāo)檢測(cè)要輸出“圖中某個(gè)區(qū)域內(nèi)有哪類(lèi)目標(biāo)”用的是邊界框回歸加分類(lèi)圖像分割則要像素級(jí)標(biāo)記需要U-Net這類(lèi)結(jié)構(gòu)。如果你的需求只是“這張圖是什么”那就對(duì)應(yīng)單標(biāo)簽多分類(lèi)問(wèn)題這是入門(mén)最友好的一個(gè)方向。我建議動(dòng)手之前先把任務(wù)參數(shù)寫(xiě)死類(lèi)別數(shù)量、每類(lèi)大概多少樣本、輸入圖片的尺寸、圖片里的目標(biāo)是否足夠顯眼。另一個(gè)容易被忽略的點(diǎn)是數(shù)據(jù)來(lái)源。如果你只有幾十張圖幾百?gòu)垐D就要考慮遷移學(xué)習(xí)如果每類(lèi)有幾千張甚至更多從頭訓(xùn)練一個(gè)網(wǎng)絡(luò)才說(shuō)得通。把這些約束列清楚后面每一步選擇都有據(jù)可依而不是憑感覺(jué)調(diào)參。1.2 為什么現(xiàn)在大多數(shù)學(xué)圖像識(shí)別的人都選PyTorchPyTorch在圖像識(shí)別領(lǐng)域流行核心原因是它的動(dòng)態(tài)圖機(jī)制。簡(jiǎn)單說(shuō)你用代碼寫(xiě)著寫(xiě)著就能隨時(shí)打印中間張量的shape可以在中間層打斷點(diǎn)看數(shù)據(jù)流這對(duì)調(diào)試神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō)太重要了。相比之下靜態(tài)圖模式相當(dāng)于先整體編譯再執(zhí)行出了問(wèn)題排錯(cuò)成本高很多。做圖像識(shí)別的時(shí)候張量維度稍微搞錯(cuò)一點(diǎn)就報(bào)錯(cuò)能直接print出來(lái)看每一層輸出排錯(cuò)速度完全不一樣。另外PyTorch的生態(tài)對(duì)圖像任務(wù)足夠友好。torchvision集成了大量預(yù)訓(xùn)練模型、常用數(shù)據(jù)集和數(shù)據(jù)增強(qiáng)工具DataLoader配合Dataset能很舒服地處理圖片數(shù)據(jù)。就算后續(xù)要部署到線(xiàn)上PyTorch也可以導(dǎo)出成ONNX格式給其他推理引擎消費(fèi)。這些細(xì)節(jié)讓我在實(shí)際項(xiàng)目里很少需要換框架。1.3 數(shù)據(jù)量、算力、精度目標(biāo)決定你的方案選網(wǎng)絡(luò)結(jié)構(gòu)不能只看哪個(gè)模型刷榜刷得高要看你的資源和約束。我的經(jīng)驗(yàn)可以分成三類(lèi)情況供你參考。場(chǎng)景數(shù)據(jù)規(guī)模算力情況推薦方案快速驗(yàn)證每類(lèi)幾百?gòu)垎螇K中端GPU預(yù)訓(xùn)練ResNet18 / MobileNet 只訓(xùn)練分類(lèi)頭常規(guī)項(xiàng)目每類(lèi)幾千張單塊好點(diǎn)GPU預(yù)訓(xùn)練ResNet50微調(diào)最后幾層 數(shù)據(jù)增強(qiáng)從零訓(xùn)練研究每類(lèi)上萬(wàn)張多卡或長(zhǎng)時(shí)間訓(xùn)練自己搭CNN或標(biāo)準(zhǔn)ResNet從頭訓(xùn)這個(gè)決策邏輯很直接遷移學(xué)習(xí)是用別人的特征提取能力來(lái)彌補(bǔ)自己數(shù)據(jù)不足的短板相當(dāng)于一個(gè)經(jīng)驗(yàn)豐富的師傅先把“看邊緣、看紋理、看形狀”的基本功練好了你只需要教它識(shí)別你的特定類(lèi)別。如果你數(shù)據(jù)量夠大從頭訓(xùn)練才可能超越預(yù)訓(xùn)練權(quán)重帶來(lái)的上限。2. 環(huán)境與數(shù)據(jù)準(zhǔn)備把底子打好2.1 環(huán)境安裝里你大概率會(huì)遇到的版本問(wèn)題我見(jiàn)過(guò)太多人卡在環(huán)境上不是PyTorch裝不上而是裝完之后運(yùn)行時(shí)才發(fā)現(xiàn)版本對(duì)不上。最穩(wěn)的流程是先創(chuàng)建一個(gè)獨(dú)立的虛擬環(huán)境避免和系統(tǒng)Python或者其他項(xiàng)目互相污染。如果你用conda可以這樣操作conda create -n classify python3.10 conda activate classify然后根據(jù)你是否使用GPU來(lái)安裝對(duì)應(yīng)版本。我的建議是無(wú)論你有沒(méi)有獨(dú)顯都先在終端里跑下面這些命令確認(rèn)一下python -c import torch; print(torch.__version__) python -c import torch; print(torch.cuda.is_available())如果第二行輸出的是True那GPU環(huán)境就通了。很多人明明按教程安裝但torch.cuda.is_available()依然是False最常見(jiàn)的原因是安裝時(shí)選了CPU版本或者驅(qū)動(dòng)版本太老。別急著重裝系統(tǒng)先查驅(qū)動(dòng)支持再去PyTorch官網(wǎng)選和你的CUDA能力匹配的安裝命令這樣最省時(shí)間。我踩過(guò)最冤的一個(gè)坑是conda自動(dòng)匹配了CPU版torch結(jié)果代碼跑了一天發(fā)現(xiàn)根本沒(méi)用GPU浪費(fèi)了大量時(shí)間。2.2 用文件夾結(jié)構(gòu)組織圖片比寫(xiě)幾百行代碼還管用數(shù)據(jù)準(zhǔn)備階段我最推薦的方式是把圖片按類(lèi)別放在文件夾里訓(xùn)練集、驗(yàn)證集、測(cè)試集分開(kāi)目錄管理。比如data/ train/ cat/ 圖片... dog/ 圖片... bird/ 圖片... val/ cat/ dog/ bird/ test/ cat/ dog/ bird/這種結(jié)構(gòu)的好處是torchvision.datasets.ImageFolder可以直接讀取它會(huì)自動(dòng)把子文件夾名稱(chēng)映射成類(lèi)別標(biāo)簽連標(biāo)簽列表都不用自己寫(xiě)。如果數(shù)據(jù)是一個(gè)CSV或者數(shù)據(jù)庫(kù)里存著路徑和標(biāo)簽?zāi)蔷托枰^承torch.utils.data.Dataset自定義讀取邏輯但多數(shù)入門(mén)項(xiàng)目用ImageFolder就夠了。from torchvision import datasets, transforms train_transform transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) train_data datasets.ImageFolder(data/train, transformtrain_transform) print(train_data.classes) # [bird, cat, dog]注意Normalize里的均值和標(biāo)準(zhǔn)差。如果你用的是ImageNet預(yù)訓(xùn)練權(quán)重這三組數(shù)值幾乎是固定的如果你從頭訓(xùn)練自己的網(wǎng)絡(luò)可以用全量訓(xùn)練數(shù)據(jù)估算均值和標(biāo)準(zhǔn)差效果更貼合你的數(shù)據(jù)分布。但很多新手最容易犯的錯(cuò)誤就是對(duì)預(yù)訓(xùn)練模型用了和目標(biāo)數(shù)據(jù)集完全不一致的歸一化參數(shù)導(dǎo)致收斂困難。2.3 DataLoader參數(shù)逐個(gè)拆解batch_size、shuffle、num_workersDataLoader是連接數(shù)據(jù)集和訓(xùn)練循環(huán)之間的橋梁幾個(gè)參數(shù)直接影響訓(xùn)練速度和效果。from torch.utils.data import DataLoader train_loader DataLoader( train_data, batch_size32, shuffleTrue, num_workers4, pin_memoryTrue ) val_loader DataLoader( val_data, batch_size32, shuffleFalse, num_workers4, pin_memoryTrue )batch_size每次迭代喂給GPU的圖片數(shù)量。太大可能顯存溢出太小會(huì)讓梯度震蕩訓(xùn)練不穩(wěn)定。一般先在32或64里選OOM就減半驗(yàn)證集準(zhǔn)確率遲遲上不去就試著加大。shuffle訓(xùn)練集必須置為T(mén)rue否則每一輪epoch內(nèi)樣本順序不變模型可能學(xué)會(huì)記憶順序而非特征驗(yàn)證集和測(cè)試集必須置為False因?yàn)樵u(píng)估結(jié)果不應(yīng)該受打亂樣本順序影響。num_workers數(shù)據(jù)加載用了多少個(gè)進(jìn)程。這個(gè)數(shù)值越高CPU讀圖和預(yù)處理越快但不是越大越好Windows上經(jīng)常設(shè)置超過(guò)4會(huì)報(bào)錯(cuò)。pin_memory設(shè)為T(mén)rue會(huì)鎖頁(yè)內(nèi)存把數(shù)據(jù)從CPU傳輸?shù)紾PU的耗時(shí)降低。這個(gè)參數(shù)在數(shù)據(jù)量大的時(shí)候提升明顯代價(jià)是占用一部分內(nèi)存。3. 網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)先跑通一個(gè)簡(jiǎn)單的CNN再談ResNet3.1 卷積網(wǎng)絡(luò)是怎么“看”圖像的如果你第一次接觸卷積神經(jīng)網(wǎng)絡(luò)可以把它理解成一臺(tái)滑動(dòng)的掃描儀。卷積核就是在圖片上從左到右、從上到下地滑動(dòng)每次都只觀察一個(gè)局部區(qū)域然后把局部區(qū)域的特征提取出來(lái)。相比全連接網(wǎng)絡(luò)卷積層最大的優(yōu)勢(shì)是參數(shù)共享和局部連接。同一組卷積核在整個(gè)畫(huà)幅上滑動(dòng)意味著它只需要學(xué)習(xí)“某種紋理長(zhǎng)什么樣”而不是“某個(gè)位置上有這種紋理怎么處理”參數(shù)量大幅下降也更不容易過(guò)擬合。每個(gè)卷積層輸出的特征圖尺寸可以用這樣一個(gè)基礎(chǔ)公式估算輸出邊長(zhǎng) (輸入邊長(zhǎng) - 卷積核大小 2 * padding) / stride 1。比如輸入224x224卷積核3x3padding為1stride為1輸出就是224x224。池化層則是對(duì)特征圖做降采樣可以類(lèi)比成把高清圖片縮小成縮略圖保留主要信息但丟掉冗余細(xì)節(jié)一定程度上也增強(qiáng)平移不變性。3.2 從零實(shí)現(xiàn)一個(gè)能跑的小型CNN我不建議初學(xué)者一上來(lái)就套大型網(wǎng)絡(luò)先手寫(xiě)一個(gè)輕量CNN把這些概念串起來(lái)后面換ResNet才心里有底。下面這個(gè)結(jié)構(gòu)是我常用的起步版輸入3通道224x224圖片輸出3類(lèi)import torch import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self, num_classes3): super().__init__() self.features nn.Sequential( nn.Conv2d(3, 16, kernel_size3, padding1), nn.BatchNorm2d(16), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # 224 - 112 nn.Conv2d(16, 32, kernel_size3, padding1), nn.BatchNorm2d(32), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # 112 - 56 nn.Conv2d(32, 64, kernel_size3, padding1), nn.BatchNorm2d(64), nn.ReLU(inplaceTrue), nn.MaxPool2d(2), # 56 - 28 ) self.classifier nn.Sequential( nn.AdaptiveAvgPool2d((1, 1)), nn.Flatten(), nn.Linear(64, num_classes) ) def forward(self, x): x self.features(x) x self.classifier(x) return x model SimpleCNN(num_classes3) dummy torch.randn(2, 3, 224, 224) out model(dummy) print(out.shape) # torch.Size([2, 3])我特意用了AdaptiveAvgPool2d它可以自適應(yīng)地把任意大小的特征圖池化成1x1這樣你的模型對(duì)輸入尺寸的寬容度會(huì)大很多換測(cè)試圖片尺寸時(shí)不用改全連接層的維度。這個(gè)細(xì)節(jié)是我后面做跨分辨率預(yù)測(cè)時(shí)經(jīng)常用到的。3.3 遷移學(xué)習(xí)把別人訓(xùn)練好的經(jīng)驗(yàn)借過(guò)來(lái)自己從零訓(xùn)練一個(gè)CNN常常需要大量數(shù)據(jù)和很長(zhǎng)時(shí)間實(shí)際項(xiàng)目中我更推薦直接在預(yù)訓(xùn)練模型基礎(chǔ)上做遷移學(xué)習(xí)。torchvision里加載預(yù)訓(xùn)練模型很直接from torchvision import models model models.resnet18(weightsmodels.ResNet18_Weights.IMAGENET1K_V1) model.fc nn.Linear(model.fc.in_features, num_classes) # 凍結(jié)大部分層只訓(xùn)練分類(lèi)頭 for param in model.parameters(): param.requires_grad False for param in model.fc.parameters(): param.requires_grad True凍結(jié)策略有幾種不同做法。最省資源和時(shí)間的是只訓(xùn)練最后一層分類(lèi)頭如果數(shù)據(jù)量中等可以嘗試解凍后面幾個(gè)block用較小的學(xué)習(xí)率訓(xùn)練如果你的數(shù)據(jù)已經(jīng)足夠多也可以不凍結(jié)任何層直接用預(yù)訓(xùn)練權(quán)重作為初始化全量微調(diào)。沒(méi)有絕對(duì)優(yōu)劣完全看你手里的數(shù)據(jù)量。我在實(shí)驗(yàn)中發(fā)現(xiàn)數(shù)據(jù)量只有每類(lèi)一千張左右時(shí)只訓(xùn)分類(lèi)頭反而比全量微調(diào)更穩(wěn)因?yàn)槿课⒄{(diào)容易在早期就過(guò)擬合。4. 訓(xùn)練細(xì)節(jié)準(zhǔn)確率提升的關(guān)鍵不在網(wǎng)絡(luò)而在訓(xùn)練4.1 數(shù)據(jù)增強(qiáng)用更少的圖片訓(xùn)練更強(qiáng)的模型很多人以為數(shù)據(jù)增強(qiáng)只是增加訓(xùn)練樣本的手段實(shí)際上它還有很強(qiáng)的正則化作用。隨機(jī)裁剪、水平翻轉(zhuǎn)、顏色抖動(dòng)這些變換相當(dāng)于告訴模型“目標(biāo)的類(lèi)別不應(yīng)該因?yàn)樗诋?huà)面中的位置、方向、亮度變化而改變”。最常見(jiàn)的組合是訓(xùn)練集做RandomResizedCrop加RandomHorizontalFlip加ColorJitter驗(yàn)證集只做縮放和歸一化。train_transform transforms.Compose([ transforms.RandomResizedCrop(224, scale(0.8, 1.0)), transforms.RandomHorizontalFlip(), transforms.ColorJitter(brightness0.2, contrast0.2, saturation0.2), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) val_transform transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ])注意驗(yàn)證集不要加隨機(jī)增強(qiáng)否則每次測(cè)試結(jié)果都會(huì)因?yàn)殡S機(jī)操作而抖動(dòng)沒(méi)法穩(wěn)定評(píng)估模型好壞。這是我最初最容易犯的一個(gè)原則性錯(cuò)誤一度懷疑自己的模型不穩(wěn)定。4.2 損失函數(shù)和優(yōu)化器的選擇邏輯圖像分類(lèi)最常用的損失函數(shù)是CrossEntropyLoss。它內(nèi)部已經(jīng)包含了Softmax的計(jì)算所以不需要再在網(wǎng)絡(luò)最后加一個(gè)Softmax層。這個(gè)損失函數(shù)對(duì)多分類(lèi)問(wèn)題的效果和穩(wěn)定性都很好我的建議是新手直接用它別折騰其他花式損失。優(yōu)化器方面SGD和Adam是兩大主流。Adam收斂快學(xué)習(xí)率可以設(shè)置得比較低尤其適合微調(diào)但SGD加上動(dòng)量在訓(xùn)練后期往往有更強(qiáng)的泛化能力。我自己的習(xí)慣是跑通流程先用Adam學(xué)習(xí)率0.001驗(yàn)證思路沒(méi)問(wèn)題后再換SGD試試能否進(jìn)一步提升準(zhǔn)確率。還有一個(gè)容易被忽視的參數(shù)是weight_decay它本質(zhì)上是給模型權(quán)重加了L2正則等于告訴模型“權(quán)重不要太極端”對(duì)控制過(guò)擬合有明顯幫助。代碼里就是一句optimizer torch.optim.Adam(model.parameters(), lr1e-3, weight_decay1e-4)4.3 學(xué)習(xí)率訓(xùn)練中最常改的一個(gè)參數(shù)學(xué)習(xí)率設(shè)置太大會(huì)導(dǎo)致?lián)p失發(fā)散太小會(huì)讓訓(xùn)練慢得讓人懷疑人生。我踩過(guò)很多次學(xué)習(xí)率過(guò)高導(dǎo)致loss變成NaN的坑特別是用預(yù)訓(xùn)練模型解鎖全量微調(diào)時(shí)整個(gè)網(wǎng)絡(luò)學(xué)習(xí)率一致上調(diào)很容易震碎已經(jīng)學(xué)好的權(quán)重。一個(gè)實(shí)用的經(jīng)驗(yàn)是新加的分類(lèi)頭用相對(duì)大的學(xué)習(xí)率預(yù)訓(xùn)練特征提取部分用較小的學(xué)習(xí)率。optimizer torch.optim.Adam([ {params: model.fc.parameters(), lr: 1e-3}, {params: model.layer4.parameters(), lr: 1e-4}, ], weight_decay1e-4)學(xué)習(xí)率調(diào)度同樣重要。我常用的是ReduceLROnPlateau也就是當(dāng)驗(yàn)證集準(zhǔn)確率不再上升時(shí)把學(xué)習(xí)率降為原來(lái)的十分之一。也可以用固定步長(zhǎng)的StepLR最簡(jiǎn)單最省心。訓(xùn)練早期如果加一個(gè)小的“warmup”比如前面幾個(gè)epoch把學(xué)習(xí)率從零逐漸線(xiàn)性升到目標(biāo)值可以在使用較大初始學(xué)習(xí)率時(shí)不那么容易被撐壞。4.4 一個(gè)規(guī)范化的訓(xùn)練循環(huán)別把驗(yàn)證邏輯寫(xiě)在同一步里訓(xùn)練循環(huán)看起來(lái)簡(jiǎn)單但很多人把訓(xùn)練和驗(yàn)證混在一起處理搞到最后連模型是哪個(gè)epoch保存的都不知道。我的習(xí)慣是每輪epoch做兩件事先在訓(xùn)練集上訓(xùn)練一遍再在驗(yàn)證集上完整評(píng)估一遍。兩個(gè)函數(shù)分開(kāi)寫(xiě)職責(zé)清晰。def train_one_epoch(model, loader, loss_fn, optimizer): model.train() total_loss, correct, total 0, 0, 0 for images, labels in loader: images, labels images.to(device), labels.to(device) optimizer.zero_grad() outputs model(images) loss loss_fn(outputs, labels) loss.backward() optimizer.step() total_loss loss.item() correct (outputs.argmax(1) labels).sum().item() total labels.size(0) return total_loss / len(loader), correct / total def validate(model, loader, loss_fn): model.eval() total_loss, correct, total 0, 0, 0 with torch.no_grad(): for images, labels in loader: images, labels images.to(device), labels.to(device) outputs model(images) loss loss_fn(outputs, labels) total_loss loss.item() correct (outputs.argmax(1) labels).sum().item() total labels.size(0) return total_loss / len(loader), correct / total有兩個(gè)細(xì)節(jié)我特別想說(shuō)。第一model.train()和model.eval()必須在每個(gè)階段開(kāi)始前切換因?yàn)镈ropout和BatchNorm在訓(xùn)練和推理時(shí)的行為完全不同。第二驗(yàn)證階段一定用with torch.no_grad()包裹否則PyTorch會(huì)構(gòu)建推理圖顯存瞬間被吃掉而且白白增加計(jì)算量。5. 模型評(píng)估與落地從測(cè)試集到真實(shí)項(xiàng)目5.1 不要只看準(zhǔn)確率混淆矩陣和F1值能暴露更多問(wèn)題很多初學(xué)者的唯一指標(biāo)就是驗(yàn)證集準(zhǔn)確率。這個(gè)指標(biāo)在類(lèi)別均衡時(shí)還湊合但遇到類(lèi)別不均衡的數(shù)據(jù)集準(zhǔn)確率會(huì)非常騙人。舉個(gè)例子如果某個(gè)類(lèi)占了90%的樣本你的模型就算把所有圖片都預(yù)測(cè)成這個(gè)類(lèi)準(zhǔn)確率也有90%實(shí)際一點(diǎn)用都沒(méi)有。我建議每次訓(xùn)練完都看混淆矩陣把預(yù)測(cè)結(jié)果按行和列統(tǒng)計(jì)出來(lái)能直觀看到哪些類(lèi)別最容易互相混淆。然后計(jì)算每個(gè)類(lèi)別的精確率、召回率、F1值尤其關(guān)注數(shù)量少的類(lèi)別。用scikit-learn幾行代碼就能出來(lái)from sklearn.metrics import confusion_matrix, classification_report import numpy as np # preds和labels分別是所有預(yù)測(cè)結(jié)果和真實(shí)標(biāo)簽格式為L(zhǎng)ist[int] cm confusion_matrix(labels, preds) print(cm) print(classification_report(labels, preds, target_names[cat, dog, bird]))如果兩個(gè)類(lèi)別在混淆矩陣?yán)锟偸腔ハ嗾`判我一般會(huì)懷疑兩類(lèi)樣本本身存在較大的視覺(jué)相似性或者標(biāo)注質(zhì)量有問(wèn)題。這時(shí)候優(yōu)先檢查數(shù)據(jù)標(biāo)注其次是增加對(duì)應(yīng)類(lèi)別的樣本數(shù)量最后才考慮改網(wǎng)絡(luò)結(jié)構(gòu)。5.2 保存模型、加載模型和單張圖片預(yù)測(cè)訓(xùn)練結(jié)束后保存模型有兩種常見(jiàn)方式。只保存權(quán)重參數(shù)是最推薦的格式占空間小也方便后續(xù)換網(wǎng)絡(luò)結(jié)構(gòu)重新加載torch.save(model.state_dict(), model.pth)加載時(shí)要先構(gòu)造一個(gè)同樣結(jié)構(gòu)的模型再把權(quán)重放進(jìn)去model SimpleCNN(num_classes3) model.load_state_dict(torch.load(model.pth, map_locationcpu)) model.eval()推理階段和訓(xùn)練階段的寫(xiě)法完全不同。必須先切換到eval()模式再做一次和之前驗(yàn)證集相同的數(shù)據(jù)預(yù)處理然后調(diào)用模型from PIL import Image def predict_image(model, img_path, class_names): img Image.open(img_path).convert(RGB) img val_transform(img).unsqueeze(0) # 增加batch維度 model.eval() with torch.no_grad(): logits model(img) probs torch.softmax(logits, dim1) pred_idx logits.argmax(1).item() return class_names[pred_idx], probs[0][pred_idx].item() class_names train_data.classes pred, prob predict_image(model, test/cat_001.jpg, class_names) print(pred, prob)這里最容易翻車(chē)的點(diǎn)是忘了unsqueeze(0)。網(wǎng)絡(luò)默認(rèn)輸入的shape是[batch, channel, height, width]單張圖片讀進(jìn)來(lái)只有[channel, height, width]不加維度直接喂進(jìn)去就報(bào)維度錯(cuò)誤。另外一定要用softmax把輸出轉(zhuǎn)成概率分布否則你看到的就是一堆很難解釋的數(shù)值。5.3 把模型接到實(shí)際項(xiàng)目里導(dǎo)成ONNX交給推理引擎如果只是做實(shí)驗(yàn)?zāi)P屯T?pth文件就夠了。真要把識(shí)別功能集成到一個(gè)Web服務(wù)或者App里我建議導(dǎo)出ONNX格式。ONNX是一種開(kāi)放的模型交換格式很多推理引擎都能直接加載不依賴(lài)PyTorch環(huán)境本身。dummy_input torch.randn(1, 3, 224, 224) torch.onnx.export(model, dummy_input, model.onnx, input_names[input], output_names[output], dynamic_axes{input: {0: batch}, output: {0: batch}})這里設(shè)置dynamic_axes可以讓輸入的第一維變成動(dòng)態(tài)的這樣服務(wù)接口接收任意數(shù)量圖片都行。導(dǎo)出之后再用ONNX Runtime跑一遍輸入和輸出都應(yīng)該和PyTorch一致。能走到這一步一個(gè)圖像識(shí)別模型基本就具備了被實(shí)際服務(wù)調(diào)用的能力。6. 復(fù)現(xiàn)與效果分析我踩過(guò)的坑和最終對(duì)比6.1 最容易踩的幾個(gè)坑我按嚴(yán)重程度排了個(gè)序我梳理了自己在多個(gè)圖像識(shí)別項(xiàng)目里反復(fù)踩過(guò)的坑也是經(jīng)常在社區(qū)里看到新手們遇到的問(wèn)題從嚴(yán)重到輕微排列如下。問(wèn)題表現(xiàn)主要原因解決辦法Normalize參數(shù)用錯(cuò)模型完全無(wú)法收斂loss居高不下和預(yù)訓(xùn)練模型不匹配核對(duì)來(lái)源模型標(biāo)準(zhǔn)歸一化的均值和標(biāo)準(zhǔn)差訓(xùn)練時(shí)忘了model.train()使用帶Dropout的網(wǎng)絡(luò)時(shí)驗(yàn)證集很奇怪推理模式被用于訓(xùn)練每個(gè)階段切換train/eval驗(yàn)證集被隨機(jī)增強(qiáng)每次驗(yàn)證準(zhǔn)確率波動(dòng)大錯(cuò)誤復(fù)用了訓(xùn)練預(yù)處理驗(yàn)證集只用ResizeCenterCropNormalize隨機(jī)種子沒(méi)固定每次訓(xùn)練結(jié)果完全不同初始化、數(shù)據(jù)采樣順序隨機(jī)在代碼頂部設(shè)置random.seed、np.random.seed、手動(dòng)設(shè)置torch種子batch_size太大導(dǎo)致OOM訓(xùn)練中斷顯存溢出數(shù)據(jù)量和模型參數(shù)量超出顯存減半batch_size或者混合精度其中最容易被忽視的是隨機(jī)種子。如果你實(shí)驗(yàn)中發(fā)現(xiàn)連續(xù)兩次訓(xùn)練同一個(gè)模型準(zhǔn)確率差了1到2個(gè)百分點(diǎn)第一件事就是固定隨機(jī)種子。下面這段代碼我?guī)缀趺總€(gè)項(xiàng)目都復(fù)制import random import numpy as np import torch def set_seed(seed42): random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed_all(seed)6.2 同樣一份數(shù)據(jù)下不同方案的效果差異有多大我給一個(gè)朋友做項(xiàng)目時(shí)用一份公開(kāi)的圖片分類(lèi)數(shù)據(jù)集做了四組對(duì)比實(shí)驗(yàn)每類(lèi)圖片數(shù)量在800到1200張之間。跑出來(lái)的趨勢(shì)很有參考價(jià)值方案訓(xùn)練輪數(shù)驗(yàn)證集準(zhǔn)確率訓(xùn)練耗時(shí)從頭訓(xùn)練SimpleCNN無(wú)增強(qiáng)4078%約20分鐘從頭訓(xùn)練SimpleCNN 數(shù)據(jù)增強(qiáng)4083%約25分鐘預(yù)訓(xùn)練ResNet18 只訓(xùn)分類(lèi)頭1586%約15分鐘預(yù)訓(xùn)練ResNet18 解凍layer4 增強(qiáng)2089%約20分鐘這個(gè)對(duì)比的結(jié)論很清楚數(shù)據(jù)增強(qiáng)帶來(lái)的提升比換網(wǎng)絡(luò)結(jié)構(gòu)更明顯預(yù)訓(xùn)練模型哪怕只訓(xùn)分類(lèi)頭也比從頭訓(xùn)練一個(gè)小網(wǎng)絡(luò)準(zhǔn)確率高出不少。而最后一種方案融合了增強(qiáng)和微調(diào)效果是最好的。實(shí)際解決業(yè)務(wù)問(wèn)題時(shí)我通常沿用這個(gè)遞進(jìn)思路而不是一上來(lái)就追求最復(fù)雜的大模型。6.3 從頭復(fù)現(xiàn)這套流程的操作順序把上面內(nèi)容收攏成一個(gè)可以照著做的清單我的建議順序是定義分類(lèi)任務(wù)確認(rèn)類(lèi)別數(shù)量和數(shù)據(jù)量。建立train/val/test目錄核對(duì)每個(gè)類(lèi)別的樣本數(shù)和圖片質(zhì)量。固定隨機(jī)種子搭建DataLoader和基礎(chǔ)訓(xùn)練循環(huán)先用一個(gè)非常小的網(wǎng)絡(luò)過(guò)一遍全流程。把網(wǎng)絡(luò)換成預(yù)訓(xùn)練ResNet18先只訓(xùn)分類(lèi)頭確保能收斂。加入數(shù)據(jù)增強(qiáng)和學(xué)習(xí)率調(diào)度提升最終準(zhǔn)確率。用混淆矩陣和F1檢查每個(gè)類(lèi)別的表現(xiàn)定位易混淆類(lèi)別。保存模型導(dǎo)出ONNX接進(jìn)實(shí)際應(yīng)用。這套順序的核心原則是先讓流程轉(zhuǎn)起來(lái)再逐步優(yōu)化。我見(jiàn)過(guò)太多人一上來(lái)就在網(wǎng)絡(luò)結(jié)構(gòu)上花大量時(shí)間結(jié)果連基礎(chǔ)的數(shù)據(jù)加載和訓(xùn)練循環(huán)都沒(méi)跑通最后反而被一個(gè)維度錯(cuò)誤卡了一整天。最后說(shuō)一個(gè)我自己的習(xí)慣每改一次數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)結(jié)構(gòu)或者損失函數(shù)我都會(huì)先固定隨機(jī)種子在小數(shù)據(jù)上跑幾個(gè)epoch確認(rèn)流程沒(méi)問(wèn)題再上全量數(shù)據(jù)。這個(gè)小習(xí)慣幫我過(guò)濾掉了大量“模型效果變差但原因卻在于流程本身出bug”的虛假實(shí)驗(yàn)結(jié)論。圖像識(shí)別這個(gè)方向看起來(lái)模型很炫真正決定項(xiàng)目成敗的往往都是這些訓(xùn)練流程里的基本功。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高潮综合网| 人人干黄色| 久久久久久九九九| 亚洲男人bt天堂| 丁香五月综合| 精品无码不卡视频| 亚洲天堂一区| 东京热,男人的天堂| 欧美另类色图片| 秋霞一级鲁丝片A片| 操死我了嗯嗯嗯| 久久精品国产免费观看99| 久久丝袜| 欧美综合 站| 天天弄天天操| 噜噜噜亚洲精品| 啊…啊…操我用力操我| 国产av尤物| 国产热av| 久热免费视频| 中文字幕亚洲热播人妻| 国模无码一区二区三区在线| 婷婷色香伊人| 亚洲有码视频二区| 人人妻人人澡人人爽久久av| 亚洲无码超碰免费| 97资源视频| 一区二区三区视频国产免费| 久久成人午夜精品影院| 麻豆天美电影一区二区| 午夜操逼不卡| 9999伦理视频| 丰满精品人妻少妇久久字幕| 使劲用力艹少妇视频一区二区| 欧美78| 日韩精品人妻中文字有码在线| a片亚洲一本通视频| 狠狠色噜噜狠狠狠狠2018| 97精| 看日韩美女二区三区免费操逼视频| 日韩电影天堂视频二区三区| www.99色| 亚洲男人的天堂在线看| 青娱乐欧美激情一区二区| 精品久久久久,69国产成人精| 亚洲素人综合| 成人性爱电影网| 欧美姓爱综合网| 色色色999| 一本久道久久综合狠狠爱一密臀精| 欧美日韩性爱操大逼| 欧美激情久| 乱伦3P视频| 亚洲天堂资源在线| 99爱久久视频频| 国模不卡| 久久区| 九九视频黄色片| 色噜噜人妻av 中文字幕| 少妇干B| 亚洲中文字幕久久人妻| 人妻一区二区三区视频| 伊人网综合在线视频| 日本一区二区不卡精品| 天天爽人人综合免费7799| 99啪啪| 天天搞欧美| 人人妻人人爽一区二区三区| 欧美色图片| 91久久免费视频互動交流| 激情国产乱伦Av| av九九| Aa东京男人的天堂| 手机在线中文字幕国产| 美女刺激久久国产欧美| 99re在线视频国产| 美女熟妇色| 一区 欧美 日韩 麻豆| 在线午夜成人无码视频| 亚洲久热| 欧美在线|亚洲| 精品一区二区成人| 国产蜜臀在线| 在线性黄高清免费视频| 丝袜美女诱惑 91 视频| 开心婷婷五月| 精品成人无码| 亚洲无码一区成人免费午夜| 日本不卡高清免v欧美日韩在线观看| 久九9精品| 国产九九九九九九九九| 啊啊啊不要嗯嗯在线观看| 亚洲欧美国产中文视频| 第四色色综合91| 日本成人在线不卡一区二区三区| 亚射在线| 一级AV性爱| 亚洲少妇在线影音| 91在线免费观看处女| av天堂精品久久| 成 人 影视 一区 二区 三区 四区 | 精品久久久久久中文字幕视频免费| 嗯啊不要啊在线 | 激情婷婷五月天| 午夜视频久久久| 精品9区| 黄色AV影视| 在线毛片片免费观看| 男人成人黄色视频在线观看免费下载| 激激五月| 欧美日动态视频| 黄片www.| 操碰97| 精品亚洲黄色片 国产精品导航一区二区| 国产精品丝袜在线| 91白虎| 91 综合网| 在线观看啊啊啊啊啊| 久久亚洲一区女同性恋中文字幕| 久久草大香蕉| 77777亚洲蜜臀精品久久综合蜜臀| 欧美视频在线第3页| 天天舔九色婷婷| 岛国不卡超碰护士AV在线播放| 91痴汉| 欧美欧美啪啪视频| 久久婷婷综合国际产色怕| 夜夜操狠狠操| 亚洲性感丝袜诱惑在线观看| 五月情色天| 三级网色| 少妇69中文| 超碰97人妻自拍| 欧美,日韩综合久久| 婷婷综合五月天| 丰满丝袜少妇AV| 亚洲精品性爱片| 91在线欧色| 久久久久99999| 九九人人操| 99久久九九| 五月婷婷丁香中文字幕| av东京热男人的天堂| 久久精品老司| 蜜臀va69| 91中文在线| 亚洲精品久久久久久久久豆丁网| 日本九九久久99| 最新中文字幕精品在线| 亚洲动态色图| 亚洲丝袜色图| www.人人cao| 亚洲男人天堂2| 激情五月天视频| 国产精品久久久久久久久久久久久久吹| 天天日天天舔天天喷天天射| 男女做爰猛烈动高潮A片免费应用| 亚洲精品国产AV天美传媒| 久热在线精品免费观看| 五月天人妻综合| 五月激情小说| 无码少妇精品一区二区60岁老人| 内射夫妻三片| 色欲av国内精品久久久久久| nuu12国产麻豆精品| 男人夜色天堂ss| 国产九九九九九九九九| 韩国轻伦国内自拍一区| 99国产精品视频尤物| 美女丝袜激情小说| 91成人在线| 熟女乱伦二区| 高清成年美女黄网站免费大全| 日韩欧美三级| 97丝袜亚洲在线播放| 日韩性爱网址| 日韩人妻无码专区| 亚洲一区深夜| www网站黄| 精品久久久av无码免费| 97国产精品在线观看| 麻豆国产原创AV色哟哟| 亚洲欧美精品一区天堂久久| 把腿张开老子CAO烂你| 国产强奸乱伦欧美| 火箭成精品视频884必出精品| 久草在| 99色| 超碰免费人人| 国产精品青草综合久久| 欧亚性爱啪啪| 99ri精品| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 色噜噜人妻av 中文字幕| 国产精品九九九| 美女天天干| 久久综合久色欧美综合狠狠| 91中文精品日韩欧美在线| 国产乱码久久| 免费看毛片操穴| 黄色小视频日本txt| 夜夜草天天| 亚洲欧美综合| 五月天我淫我色av| 久久精品 六十路 熟女 欧美| 奶水 人妻 哺乳 在线| 中文字幕精品亚洲熟女| 亚洲骚男同com| 国产成人精品午夜福利| 亚洲综合伊人| 人妻天堂网| 神马久久久久久| 91人妻在线视频| 欧美性暴力| 屁股久久久久久久| 国产精品久久久久无码A√| 亚洲国产精品99久久久| 成人一级性爱| 欧美亚洲中文字幕| 天天综合精品| 性色高清在线| 丝袜美腿操av| 精品日韩人妻视频| 欧美一级A片在线看视频性色| 日本一区二区三区四区免费观看| 啊啊啊操一区| 欧美曰韩国产精品| 久久婷婷一区| 啪啪啪东京| 成年人性爱日韩| 色小视频蜜乳| 亚洲色图20p| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 大香蕉乱级| 天天做天天爱夜夜爽毛片试看| 亚洲h片在线免费观看| 99精品成人免费看| 久久久9视频| 九草在线大香蕉| 中文字幕熟女人妻丝袜丝| 人人妻人人玩人人澡人人爽| 欧美大波激情xxxx| 99只有精品| 午夜天堂精品久久| 精品无av| 国产毛片在线| 亚洲综合五月天婷婷丁香| 欧美狠狠弄| 国产精品电| www.夜夜操| 乱色老一区二区三区的观看方式| 国产一进一出视频网站| 色五月婷婷网| 国产免费一区| 97超碰人人模人人拍人人| 精品成人动漫一区二区| 亚洲情色电影网| 男人的天堂在线| 热99这里有精品综合久久 | 超碰综合97在线| 97免费在线| 手机在线看片免费人成视频| 亚洲日韩av一区二区三区百合| 经典丝袜一区| 国产亚洲精品农村妇女| 一区二区三区男女操逼黄色小电影| 久久超碰av在线| 国产精品电影大全| 97电影院超碰| www男人天堂| 久久综合亚洲色1080p| 久久久人体| 日韩成人人妻网站| 老司机深夜影院18未满| 91久久国产综合精品| 欧美人黑A片无码免视费| 极品白嫩美女白浆成人福利在线看| 伊人久久国产免费观看视频| 欲香欲色| 亚洲人在线| 夜夜爽夜夜| 99热精品在线在线| 在线视频资源| 亚洲欧洲另类| 青青操国产夫妻| 综合色啪| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 色官网在线| 亚洲极品| www色色com| 精品人妻一区二区三区蜜桃视频| 九九探花视频在线观看| 狠狠爱夜夜干| 色噜噜狠狠色综合日日| 九七超碰人人乐| 久久激情视频| 人人摸人人入| 欧美在线啊啊啊 | 婷婷六月色| 国产精品夜夜| 高潮内射在线| 日韩精品一区二区日韩| 伊人视频| 久操大香蕉手机视频在线看| 国产精品播放| 伊人精品国产| 婷婷色网| 亚洲视频中文一区| 1204金沙人妻懂旧版免费| 高潮的A片激情扒开一区| 91精品国久久久久久无码| 天天看天天在线精品| 国产第二页| 日韩精品永久在线观看| JuliaAnnXXX888| 天天舔天天| 一中国女人毛片水真多| 激情综合av| 日本在线激情一区二区三区| 97狠狠| 五月久久HDAV| 亚洲AV无码成人精品久久| 久久久久久久久久久久97| 中文字暮97| 国产黄片精品在线| 亚洲视频精选| 经典丝袜一区| 婷婷国产精品九区| 99操视频| 欧美日韩日产免费网站看| 91日日夜夜| 亚洲熟妇乱女区二区三区| 亚洲国产尤物yw在线观看| 美女天天干| 91在线视频免费中出| 久久激情亚洲精品无码?V| 射久久| 9999九九九久久久| 色妹子A V| 5278欧美一区二区三区| 女性喷水高潮在线观看| 久久亚洲一区女同性恋中文字幕 | 色香av| 北条麻妃性愛视频| 情侣开房子拍 日韩无码 女的很漂亮| 这里只有精品视频在线观看麻豆| 91麻豆天美| 日韩无码服务区| 91在线免费观看处女| 欧美亚洲日本视频久久久| 日韩啊V| 亚洲情色综合网| 欧美韩国你懂得在线| 看日韩美女二区三区免费操逼视频| 中国国产精品一区视频| 综合网天天| 九九九九九九精品| 青草伊人久久| 国产后入清纯| 色眯眯av| 亚洲AV不卡在线观看尤物| 国产原创精品| 女色视频社区| 天天干天天做| 99色综合| 农村妇女一级二级三级视频| 日本精品一区二区中文字幕| 亚洲精品人妻在线| 欧美日韩国产黄色片| 熟女激情综合网| 91综合色| 91无码西班牙视频在线| 97啪啪| 久久久999| 午夜九九九九九九| 男人天堂2030| 亚洲综合另类| 伊人一区二区在线播放| 操逼天美3区| 超碰伊人在线| 色偷偷人人玩人人舔人人操人人摸人人爽 | 五月激情视频| 欧美在线视频99| 天天爽天天| 99色色| 日本福利社| 在线 制服丝袜中出 人妻| 婷婷五月天基地| 天天日天天操心| 美女黄色一级A视频| 99婷婷| 午夜精品久久久久久久男人的天堂 | 成年人性爱日韩| 成人aⅴ一区二区三区| 激情抓乳插进去啪啪啪日韩| 少妇3P性爱自拍| JIZZJIZZ国产精品喷水| 国产亚洲国产超碰| 色爽爽文学| 女人妻一区| 夜夜嗷嗷一区二区| 67914在线兔费成人视频| 久久精品超碰| 奇米四色网| 黑人无码一区二区| 国产成人亚洲精品自产在线 | 国产精品天堂| 中文字幕精品一区二| 国产精品麻豆视频网站| 国产成人无码网站在线视频| 国产人妻精品久久久一区二区三区| 日韩天堂av电影在线观看| 欧美日韩一干二干| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 亚洲综合小说另类图欧美视频激情小说色五月天 | 91九久| 成人精品一区二区三区| 国产精品一区在线播放| 精品久久无码午夜福利| 特级丰满少妇一级AAAA爱毛片| 成人av免费观看| 伊人色综合超碰| 色香欲天天天天综合色| 亲子敌伦对白在线播放| 亚洲国产成人精品久久久国产成人一区二区三.| 99操| 欧美性爱一区二区三区| 91深夜夜| 粘花网06av视频| 亚洲宗合网| 婷婷爽人人婷婷爽视频| 夜色AV无码手机在线影院| 激情五月天网站| 金典av| 精品九九九| 欧美黄片视频在线观看免费 | av橘色网站| 日欧操屄| 丝袜夫妻自拍| 综合色区偷拍| 欧美三级中文字幕hd| 97国产精品国| 懂色Av一区二区三区| 岛国网址国产| 欧美中文字幕一区 | 热久久国产| 天天日B狠狠操| 日韩特一级久久| 日本黄大片在线观看视频| 婷婷午夜| 91无码人妻精品一区二区三区蜜桃| 欧美午夜视频免费观看| 夜夜操91744565| 97天天| 四色永久成人网站| 91痴汉| 色五月婷婷中文字幕| 美女干逼2| 国产无码高清操逼视频| 亚91亚洲网| 久久久九九九| 欧洲乱码一区二区| 99久久国产精品免费高潮| 亚洲麻豆精品二区三区| 精品无吗m| 色婷婷电影网| 91日韩国产欧美亚洲另类精盘州至城都| 日本在线播放不卡一区| 91超碰丝袜制服| 亚洲国产麻豆一区二区三区| 91劲爆| 黄片www.| 欧洲精品二区| 欧美激情亚洲色图| 亚洲无线码欧洲精品区别| 无码视频一区二区| 日韩一区二区三区四区五区| 国产精品白丝AV| 精品久久99| 亚洲中文字幕熟女少妇一区二区| 午夜精品久久久久久久男人的天堂| 淫淫综合网| 日韩99999色| 国产精品亚洲色婷婷久久久| 超碰地址97| 日va操| 亚洲成人帖图| 天堂岛av| 久久黄色视频一区二区三区| 无码精品啪啪啪一区二区三区三州| 去干网最新版| 亚洲欧美成人网站AAA| 久久极品一区二区| 国产亚洲色婷婷久久99精品91葵花宝典| 抽查国产福利主播| 综合影视国产无码| 夜色综合| 欧美一区二区三区黄色影视| 综合色色网| 成人毛片免费| 本道在线| 伊人97色天使| 无码国产精品午夜不卡(| 日韩一二三区| 99re在线视频国产| 亚洲天堂性爱| 在线观看黄色电话| 日韩免费在线观看不卡| 91N综合网在线| 欧美后进式| 欧美性爱www免费版| 91中文字幕制服丝袜免费视频| 91视频成人福利网站在线一区| 青青草依人大香蕉| 亚洲一区二区久久久久| 91碰碰碰| 午夜AV人气不卡| 精品传媒在线一区| 97国产精品久久久久| 国模限制级电影| 日本国产高清色www视频在线| 精品一区二区三区麻豆| 亚洲综合校园春色| 色婷婷蜜臀av| 久久午夜伦| 无码在线亚洲| 在线a v| 日韩视频中文字幕| 日日摸日日碰夜夜爽视频| 欧美成人综合| 亚洲综合图文| 欧美在线官网| 任你爽视频| 欧美黄片欧美黄片xxx| 思思热在线视频在线| 欧美日韩人妻精品系列一区二区三区| 日日日大屁股骚女人精品| 偷窥自拍亚洲色图| 精品国产乱码久久久久久影片| 久草免费在线一区二区| 欧美亚洲色图另类国产| 影视综合无码少妇| 亚洲精品乱码线路中文字幕| 激情黄色片在线观看| 亚洲成人贴图| 狠日欧美| 婷婷五月天激情四射| 蜜臀久久99精品久久久久久成人小说| 国产成人啪一区二区| 99re这里| 久久久一区二区| 成人黄页| 日韩人妻精品| 春色综合免费| 久久精品国产97欧美精品亚洲| A一级色女| 校园春色家庭伦理欧美激情| 中文字幕无码不卡啪啪| 99精品无码| 亚洲色性| 91激情| 国产资源中文字幕在线| A片大香蕉在线| 日本一区二区三区午夜观看| 九月丁香婷婷色| 无码黑人精品一区二区三区三| 日本免费专区| 色一色综合网| 丁香久久| 国产性感在线观看| 亚洲性图91| 黑白配性爱AV成| 草草草草视频| 免费αV在线视频| 日本黄色精品专区网站| 一区二区三区美女超清| 亚洲午夜av| 五月开心网| 永久电影三级在线观看| 日韩成人性日韩成人性爱视频在线免费观看| 一本色道人妻久久| 操逼网站网站| 日本国产高清色www视频在线| 激情干在线| 防屏蔽在线视频| 男人的天堂成人的社区| 亚洲国产青青| 天天网综合| 亚洲人妻久久| 国产成人综合在线播放| 三级片大波波| 加勒比五月天| 蜜臀99久久国产| 亚洲巨爆乳一区二区三区四季网| 亚洲色图尤物视频| 久艾草在线精品视频在线观看| 97人妻免费中文字幕| 99在线精品观看99| 嗯嗯啊啊好疼| 麻豆亚洲AV成人无码久久精品| 国产亚洲99久久精品熟| 成人性爱高清视频免费看| 乱伦图av| 制服乱伦| 欧美大战久久久伊人| 欧美婷婷久久| 综合av影片| 97碰久久| 国产精品久久久三级无码| 久久国产视频专区一二三| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 99热66| 色拍偷亚洲| 福利视频香蕉免费一区二区在线| 亚洲欧美日韩夜夜| 亚洲大胆人体av| 张柏芝国产一区在线观看| 免费一级欧美片片线观看| 青青草乱入乱欲视频在线观看| 啊啊啊啊好多水| 操逼逼无码| 中文字幕AV片| 乱伦一二三区| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲欧美日韩不卡人妻| 国产精品无码在线| 国产白丝在线| 99re免费视频精品全部| 伊人综合色网| 91精品人妻一区二区三区蜜桃| 日韩丝袜二区| 九9热伊人| 青娱乐欧美激情一区二区| 国产免费大片| 2017av无码免费无线播| 1024久久高清视频| 夜夜嗨视频| 亚洲色图超碰在线| 东京热毛片177b2viP| 亚洲无码99| 精品人妻15区| 五月丁香激情综合| 亚洲色图A| 日韩三级一区| 久久久久久久97| 蜜臀久久99精品久久久老,,| 天天综合官网| 天堂av2019| 亚洲国产精品无码AV久久| 九九热免费国产视频婷婷伊人五月| 日韩情色一区二区| 97蜜桃综合| 强被迫伦姧在线观看无码网站| 一区二区三区国产精产| 少妇熟女1区2区3区| 麻豆性爱视频在线播放| 男人天堂黄片| 久草线上视频免费看| 国产成人久久久精品免费AV| 欧美色综合网| 欧美日韩人人精品| 国产在线激情视频| 综合色久欲| 另类小说五月天| 亚洲一区二区三区春色| 96国产污污污丝袜| 欧美一级做a爰片免费视频| 亚洲成成熟女人综合一区二区| 性色一线| jk白丝没脱就开始啪啪| 欧美美逼| 99999精品成人| 激情综合二| 亚洲精品91| 亚洲综合影片| a级理论午夜日本| 后入式免费视频| 性老妇一区二区三区| 成人三级片无码| 国产一级高清免费观看| 97超碰精品成| 人妻熟女字幕一区二区| 26uuu性物| 78精品在线| 黑丝日韩av丝袜av| 久9视频| 日韩激情无码影院| 日1区2区3区2020| 亚洲限制级在线| 国产福利av精彩对白| 人妻丝袜日本| 亚洲色香| 神马久久久久眼| 色一色综合网| 久久久一区二区三区三州| 国产97色在线 | 亚洲| 欧美熟妇精品黑人巨大一二三区| 欧美精品自慰系列寂寞少妇 | 丁香五月色情| 久久精品99久久久久久| 极品色社| 成人美女av| 亚洲人体视频在线观看| 色噜噜日韩精品| 久久久久久中文版| 天天色综合图片| 一级久久久久久久久久久| 国产97亚洲| 国产久久日韩网站导航| 欧亚日韩中文在线| 九九九九精品| 成人影 天天操 亚洲| 久久香蕉国产线看观看亚洲女人 | 欧美极品色| 亚洲精品天天影视综合网| 欧洲熟妇xxXx欧美老妇裸体| 日韩中文字幕精品一区在线| 91综合中文字幕| 哑洲在线| 色悠久久久av| 国产熟女精品区| 日本97久久久精品| 中文一区二区婷婷视频| 久久久一区二区三区四曲免费听 | 麻豆色约约| 美女91av| 屁股久久久久久久久| 午夜后入| 伊人991| 偷拍超碰| 人人超碰在线观看黄| 一个人在线看的黄色电影网站| 久久久久免费少妇| 农村妇女一级二级三级视频| 97天堂| 欧美日韩成人| 99热| 久草成人福利导航| 久操九九九九| 啊啊啊好湿国产一二| 色综合一区二区三巨| 中亚av| 国产四虎在线| 乱码熟妇人妻久久久| 亚洲大色堂| 91欧美性| 久久成人东京热人妻| 蜜桃臀av一区二区| 婷婷激情四射| 少妇久久久| 黄片免费视频2019| 天天综合网日韩7799| 欧美劲爆视频一区二区| 日本99热| 97亚洲一区| 丰满少妇高潮无码| 国产麻豆一区二三区| 夜夜嗨老熟女AV一区二区三区| www.成人无码| 亚洲欧洲激情卡通另类文学四射小说网站 | 午夜美女福利视频| 欧美激情性久久久久久| 亚欧成人中文字幕一区| 久久婷婷亚洲| 麻豆AV一区二区| av东京热男人的天堂| 18精品一二区| 黄色免费一级在线毛片| 狠狠色狠狠色狠狠五月| 久久五月婷| 秋霞男人网| 欧美淫乱视频| 乱伦熟女论坛| 国产成人精品日本视频| 口爆综合网| 久久m| 大香蕉99999| 777琪琪午夜免费A片| 免费看日本操逼视频| 67194无码不卡| 久久精品人妻一区二区三区| 91精品国产91久久青草| 国人欧美精品一区二区| 亚洲天堂东京热| 九九av| 999久久久| 1769一区二区| 天天综合影院91| 老熟女天天操| 亚一综合久久久久久久久久| 久久五月份| 精品人妻一二三四区视频| 午夜性刺激视频免费观看| 久久人人舔人人爽舔人人av片| 中文无码一二三区| 免费99精品国产自在在线| 国产一区二区三区精品观看啪| 少妇久久久久| 亚洲男人的天堂亚洲| 天堂亚洲精品| 噜噜噜狠狠色综合| 伊人宅男大香蕉| 亚洲色图 欧美热图 清纯唯美 另类自拍| 麻豆视频test| 日韩欧美字幕亚洲一区二区| 内射日韩大臀美女| 亚洲第一视频 欧美风情 日韩| 激情熟女12P| 亚洲熟妇极品| 亚洲第一页色网| 中文字幕交换人妻| 91高跟美女在线播放| 69一区二区三区| 99操视频| www.成人无码| 无码乱人伦中文视频| 欧美性爱网97| 人人干黄色| 三级精品三级在线观看| 美女午夜福利免费视频| 澳门黄片一香蕉视频| 欧美午夜精品久久久久久3D| 啊啊啊操死我了| 强奸乱伦中文字幕AV| 欧美大香蕉97| 免费看黄片现成| 高清不卡一二三区视频......| 色吊丝 日日骚 清纯唯美| 偷窥自拍A片| 91综合天天看| 久久香蕉影院| 超碰97国产欧美| 九九热在线精品视频| 久久人妻一区二区三区高清| 色综合 加勒比| 第四色奇米影视777| 天天干天天日天天射黄色大片| 日日摸天天爽夜夜欢| 五月激情天| 青青草好吊色| 99re6久热只有精品6在线直播 | 欧美少妇人妻| 97久精品| 欧美人人操人人插| 色天堂综合| 岛国黄色短视频| 国产九九九九九九| 五月婷婷久久综合| 国产精品久久久久久久久久久久久久吹 | 一级久久性爱视频| 快播电影网日韩新片| 激情五月天丁香| 人妻少妇精品| 97超久碰| 在线无码操| 欧美 色 亚洲| 亚洲五区熟女| 天天天天天天天天天天干美女| 丝袜视频网国产90| 亚洲情色91| 精品久久久久久无码| 亚洲天天影视色综合| 再深点灬舒服灬太大了好硬好爽| 亚洲色阁| 久操网在线| 久久婷婷伊人| 亚洲欧美色图小说| 日本一级不卡一二区| 色噜噜狠狠色综无码久久合欧美| 日韩成人无码| 夜夜夜夜爽| 亚洲日韩肥臀视频在线观看| A 在线网址| 欲香欲色综合天天伊人| 乱码熟妇人妻久久久| 爆操无码| 天天射天天操天天干天天吃2018 | 日韩中文字幕视频在线观看| 午夜超碰| 亚洲图片在线| 中文一区二区婷婷视频| 国产AV激情无码久久无码| 欧美日韩亚洲天堂| 小骚逼被操的爽不爽| 99re9在线| 青娱乐亚洲自拍| 蜜臀久久99精品久久久久| 久久草视频污视频| 男人天堂婷婷五月天校园春色| 国产曰批免费观看久久久| 麻豆成人影音在线| 男人的天堂日本东京热| 青青在线视频日韩欧美| 中文字幕一区二区在线日韩精品| 日本午夜久久电影| 日本潮催一卡操| 少妇精品| 福利大香蕉| 欧亚第一综合网| 久久黄黄| 亚洲熟女中文字幕在线| 人人做天天爱| 欧美日韩中文视频播放| 国内精品久9| 九九九九精品视频| 亚洲少妇视频| 婷婷五月天色色| 精品熟妇视频一区二区| 亚洲色图欧美视频| 啪啪啪综合| 黑丝内射一区二区三区| 性饥渴少妇av无码毛片| 中国zzijzzijzzwww精品| chaopen97久久| 97bbn| 蜜奶av| 国产不卡精品91| 亚洲丝袜二区| 五月丁香综合激情| 超碰成人国产| 97任你吞精| 在线观看色视频| 亚洲阿v天堂无码z2018| 亚洲国产精品V?在线播放| 碰碰97| 性天堂| A级片一区| 婷婷久久五月综合激情| 中文字幕后石码四区五区| 校园春色AV天堂| 清纯唯美综合| 伊人麻豆传媒| 欧美+日产+中文| 大香蕉99999| 亚洲开心网| 97爱爱| 99久久亚洲精品无码毛片潘甜甜| a'v在线资源| 国产免费黄色一级大片| 一区二区三区免费视频入口| 欧美18老人禁| 囯戸精品高潮呻吟旡码| 久久精品国产99精品亚洲蜜...| 日本熟女不卡视频| 高清无码在线播放网站| 日本精品无码三级网站| 91精品啪在线观看国产城中村| 岛国艾薇凹凸视频天堂| 亚洲成人久久美女| 亚洲人人操| 伊人97色天使| 成人片视频| 熟妇一区,二区,三区。| 密臀在线一区尤物| 色综合av综合久久| 国产无码高清操逼视频| 26uuu国产成人综合| 婷婷视频网| 99热超碰| 亚洲熟女乱色一区二区三区久久久| 欧美偷偷网| 97天天操| 91深夜夜| 久久丁香| 国产不卡中文字幕免费avi| 麻豆人妻偷人精品无码视频| 欧美性高潮在线| 少妇熟女1区2区3区| 亚洲 一区二区 自拍| 国产精品色| 啊啊啊不要好爽日韩无码一区| 久9综合在线| av网站免费线看| 中国国国产一级特黄毛片| 999久久久精品国产| 97免费视频网| 国产尤物在线三区| 国产一区二区成人av在线播放| a级成人毛片免费视频高清| 五月天婷婷影院| 一直超碰| 青青草国产欧美非洲黑人| 亚洲国产av中文字幕久久| 超碰在线看| 久操 高清| 精品国产乱子伦一区二区三区,精品一| 少妇高潮流水av免费| 色婷亚洲五月在线观看| 综合网欧| 欧美97爱| 国产精品99久久久www| 9热9热综合网| 78操B| 亚洲精品无码少妇久久| 欧美视频一区二区在线| 国产精品另类一区大香蕉| 97色碰| 精品亚洲国产成人AV制服丝袜| 天天肏美女| 亚洲玖玖爱| 日本成人A片免费看| 欧美另类色图片| 肉丝中文无码高清| 久久久久久久伊人精品| 92福利社视频| 涩亚洲欧洲| 夜夜天天噜狠狠爱2021| 日韩内射视频| 亚洲激情综合另类| 三级片网站在线播放| AV丝袜东京热| 中文字幕AV乱伦| 久久久久久亚洲精品中文字幕人妻| 国产自偷| 岛国艾薇凹凸视频天堂| 青青草五月天| 91福利网在线观看| 大香蕉伊利av| 夜夜欢天天干| 另类在线| 亚洲AV色图| 亚洲图片欧美在线视频| 色偷偷超碰亚洲| 日韩欧美一级特黄大片| 夜夜爽爽夜夜精品视频| 亚洲国产91精品一区二区久久| 天堂日本亚洲欧美| 国产精品人妻无码久久久老鸭窝| 亚洲天堂,男人| 亚州综| 3571色综合一区二区二区| 91痴汉| 色九月婷婷| 精品人妻一区二区三区不卡断| 日亚韩精品视频二区三| 蜜桃AV天堂| 欧美做爰无码A片视频| 亚洲做性| 亚洲天堂区| 加勒比海色香蕉婷婷| 欧亚洲精品有视频| 无码精品久久久久久亚洲| 成人女人国产| 国产成人自拍视频视频| 超碰综合色| 黄色免费网页无码| 熟女久久| 水澄无码AV| a片 xxxx受爽视频| 综合网亚| 亚洲精品无码久久AV| 精久久久| 日韩精品99999| 国产精品成人AV片免费看网站 | 国产午夜精品一区二区三区牛牛| 色婷婷电影网| 在线免费观看高清无码视频| 久久偷拍人| 成人午夜小视频手机在线看| 麻豆天天躁天天揉揉AV| 91亚洲人电影| 岛国激情视频软件| 中文无线日韩一区| 亚洲精品色| 中文字幕第9页萱萱影音先锋| 粉嫩AV输入| 久久精品性| 久久精品国产亚洲AV先锋| 色香在线| 天天做天天爱| 国产欧美日本亚洲精品| 亚洲国产中文字幕| 亚洲激情网一二三四区| 岛国A V在线免费看| 精品综合久久久久久97| 六月婷婷综合| 国产黄色在线播放观看| 曰本道人妻久久久在线不卡色视频| 9 9精品一区二区三区| 亚洲天堂一区二区久久| 99草精| 91热情品| www.99色| 日韩激情小说一区二区| 亚洲欧美伦综合| 国产乱码精品久久久久久| 六月丁香五月婷婷| 三级AV入口| 天天久久| 在线情色电影 91大 | 97色97干| 日本精品一区二区三| 黄色小说亚洲| 日韩操人| www.伪伪| 日韩欧无码一区二区三区免费不卡 | 久久婷婷电影网| 97在线播放 | 久久99午夜精品一区人妻| av亚欧| 青青青在线高清视频在线一二三四区| 久久久久ab| 91天天日| 久久五月丁香| 黄片免费久久久久久久| 欧美亚洲自拍另类人妻| 人妻少妇精品久久久久久| 亚洲日韩东京热一区| 91九久| 一区二区三区精品黑丝白丝酒店对鸡| 欧美精品xxxwww| 乱性AV| 97综合久久| 美女性91| 久9综合在线| 国产热av| 久久久久9999精品九九九| 超碰 另类 欧美| 久久久久免费少妇| 中文字幕在线高清男人的天堂| 精品人妻中文字幕4399| 2017av无码免费无线播| 97天天操| 久久东京热久久| 亚洲天堂一二| 综合天天。| 激情黄色五月天| 九一精品牛牛一区二区| 九九热免费在线国产视频伊人五月| www.天天干| 五月丁香综合激情| 超碰精品在线| 婷婷深爱五月| 欧美在线干| 99热婷婷| www.婷婷六月天| 依人大香蕉| 九九亚洲| 另类图片五月| 97超碰色五月| 久久伊人在线五区| 毛片视频白嫩| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲色图欧美色图日韩色图| 丁香五月色情| 久久久久久久久久8888| 色爱国产| 天天插天天射| 亚洲不卡AV在线| 少妇蜜汁| 九九英色视频| 青青草色插素人| 成人久久久精品| 欧美久久人体| 伊人九九九| 91中出| 91久久九九精品国产综合| 99久国产精品午夜性色福利| 日本操色导航| 日韩中文字幕在线视频观看|