欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

基于ResNet的人臉表情識別:從數(shù)據(jù)到部署的完整實踐指南

基于ResNet的人臉表情識別:從數(shù)據(jù)到部署的完整實踐指南 簡介這是一套面向Python期末大作業(yè)的人臉表情識別項目資源基于ResNet模型實現(xiàn)定位為高校學(xué)生課程設(shè)計、畢業(yè)設(shè)計或自學(xué)人臉識別的入門參考。壓縮包共一百零三個文件整體大小約五十四點一一兆字節(jié)內(nèi)容涵蓋十九個py源碼腳本和十個pyc編譯文件、三十二張png圖片與十七張jpg或jpeg圖像樣本、三個hdf5模型權(quán)重、兩個mp4演示視頻另有md說明文檔、xml工程配置、gif動態(tài)圖等輔助材料。資源已經(jīng)過本地編譯與嚴(yán)格調(diào)試評審分達(dá)到九十五分以上訓(xùn)練、推理和演示流程均可直接復(fù)現(xiàn)。目前已有一百三十五人學(xué)習(xí)下載。隨資源提供完整數(shù)據(jù)集和說明文檔能幫助理解ResNet在表情識別任務(wù)中的網(wǎng)絡(luò)搭建、數(shù)據(jù)預(yù)處理和模型評估方法適合需要交付可靠期末項目或系統(tǒng)學(xué)習(xí)人臉表情識別的同學(xué)參考使用。1. 一個期末大作業(yè)為什么值得按工程標(biāo)準(zhǔn)做完把“python期末大作業(yè)基于ResNet的人臉表情識別”這行字拆開看它其實是一個相當(dāng)完整的 CV 入門閉環(huán)數(shù)據(jù)集、預(yù)處理、模型、訓(xùn)練、推理、說明書全齊。很多同學(xué)拿到這類 zip 包只想改個名字交差但這恰恰是錯的——人臉表情識別是典型的“小圖、多類、類間差異細(xì)微、類別不均衡”任務(wù)用 ResNet 當(dāng)骨架能一口氣把遷移學(xué)習(xí)、數(shù)據(jù)增強(qiáng)、類別權(quán)重、模型可視化這些面試??键c全部串起來。這篇筆記我就按自己落地這類項目的順序把 ResNet 表情識別的數(shù)據(jù)組織、訓(xùn)練參數(shù)、踩坑記錄一次講透。適合正在做課設(shè)的學(xué)生也適合想把表情識別快速接到自己 demo 里的工程師。2. ResNet 憑什么成為表情識別的主力骨架選型理由與網(wǎng)絡(luò)結(jié)構(gòu)拆解2.1 表情識別任務(wù)對模型的三點苛刻要求先說清楚為什么表情識別不像貓狗分類那樣隨便選個網(wǎng)絡(luò)就能跑。第一表情數(shù)據(jù)集的原始分辨率通常很低FER2013 這類公開數(shù)據(jù)集都是 48x48 的灰度圖就算自己爬數(shù)據(jù)做人臉對齊后也就 64x64 到 96x96。圖像小意味著網(wǎng)絡(luò)不能一開始就瘋狂下采樣否則特征圖還沒成形就縮小到 4x4全局信息全丟了。第二表情類別之間的差異極度細(xì)微生氣和厭惡的嘴部線條差異可能只有幾個像素中性臉和微表情之間的邊界更模糊這要求網(wǎng)絡(luò)必須具備很強(qiáng)的中高層語義抽象能力。第三類別天然不均衡自然場景里“開心”“中性”出現(xiàn)的頻率遠(yuǎn)高于“厭惡”“恐懼”模型稍微偷懶一點就會把所有樣本都往多數(shù)類別上推。ResNet 恰好在這三點上都有優(yōu)勢。它的殘差結(jié)構(gòu)讓網(wǎng)絡(luò)可以在保持較高分辨率特征圖的同時堆深18 層 ResNet 在 48x48 輸入下依然能保留較完整的空間信息。而殘差連接又保證了梯度可以順暢地從最后一層傳到第一層訓(xùn)練深層模型不像 VGG 那樣讓人提心吊膽。更關(guān)鍵的是ResNet 在 ImageNet 上的預(yù)訓(xùn)練權(quán)重非常成熟torchvision 一行代碼就能加載這對小數(shù)據(jù)集任務(wù)幾乎是決定性的——表情識別公開數(shù)據(jù)集通常只有幾萬張圖從零訓(xùn)練一個深層網(wǎng)絡(luò)很容易過擬合而用預(yù)訓(xùn)練權(quán)重做遷移學(xué)習(xí)可以大幅壓低對數(shù)據(jù)量的需求。2.2 殘差結(jié)構(gòu)到底解決了什么退化不是過擬合很多資料喜歡把 ResNet 的貢獻(xiàn)概括成“解決梯度消失”但做過實驗的人會告訴你更準(zhǔn)確的描述是“解決深層網(wǎng)絡(luò)的退化問題”。梯度消失會被 Batch Normalization 很大程度上緩解但網(wǎng)絡(luò)加深到幾十層時訓(xùn)練誤差反而會先降后升——這不是過擬合過擬合是訓(xùn)練誤差低、測試誤差高而是純粹的優(yōu)化困難。恒等映射路徑的引入改變了游戲規(guī)則哪怕后面的殘差塊什么都沒學(xué)到網(wǎng)絡(luò)也至少能保持前層已提取的特征相當(dāng)于給深層網(wǎng)絡(luò)加了一條“后悔藥”通道學(xué)到有用信息時再把殘差疊加進(jìn)去。表情識別里這個特性的具體收益是你可以放心地把 ResNet-34、ResNet-50 這類更深的變體用在表情任務(wù)上而不必?fù)?dān)心網(wǎng)絡(luò)深了反而學(xué)不動。我實際對比過在 48x48 輸入下 ResNet-18 和 ResNet-34 的最終準(zhǔn)確率差距可能只有 1 到 2 個點但 ResNet-34 的收斂穩(wěn)定性更好中期波動明顯更小。如果你的機(jī)器顯存有限ResNet-18 夠用如果追求最終指標(biāo)ResNet-34 是性價比最高的選擇。ResNet-50 在小圖上收益不明顯因為它的瓶頸結(jié)構(gòu)本身是為 224x224 左右的大圖設(shè)計的。2.3 用 torchvision 加載 ResNet替換分類頭的兩種寫法不管用什么后端框架加載 ResNet 并替換分類頭都是第一步。以 PyTorch 為例我一般這樣處理import torch import torchvision.models as models # 方式一加載預(yù)訓(xùn)練權(quán)重替換最后一層分類頭 model models.resnet18(weightsmodels.ResNet18_Weights.IMAGENET1K_V1) num_features model.fc.in_features # 原分類頭輸入維度是 512resnet18或 2048resnet50 model.fc torch.nn.Linear(num_features, 7) # 7 類表情生氣、厭惡、恐懼、開心、中性、難過、驚訝 # 方式二把 ResNet 當(dāng)特征提取器只訓(xùn)練分類頭適合數(shù)據(jù)量極小的情況 for param in model.parameters(): param.requires_grad False model.fc torch.nn.Linear(num_features, 7) # 后續(xù)優(yōu)化器只傳入 model.fc.parameters()這里的核心參數(shù)是weightsmodels.ResNet18_Weights.IMAGENET1K_V1它表示加載在 ImageNet-1K 上預(yù)訓(xùn)練好的權(quán)重。ImageNet 預(yù)訓(xùn)練模型學(xué)到的是通用的邊緣、紋理、形狀特征這些底層特征對人臉和表情同樣有效所以遷移到表情任務(wù)時只需要讓網(wǎng)絡(luò)重新學(xué)“高層語義組合方式”也就是分類頭附近的那幾層。方式二之所以有效是因為表情數(shù)據(jù)集往往只有幾萬張甚至幾千張圖全量微調(diào)容易讓底層特征被帶偏。我個人的習(xí)慣是數(shù)據(jù)量少于 1 萬張時用方式二先訓(xùn)出一個能用的基線數(shù)據(jù)量超過 2 萬張再解鎖全部層微調(diào)。提示torchvision新版本里weightsmodels.ResNet18_Weights.IMAGENET1K_V1是推薦寫法舊寫法pretrainedTrue會在新版本里被移除。如果你用的是舊代碼報錯優(yōu)先檢查這一行。3. 把人臉表情數(shù)據(jù)集喂進(jìn) ResNet目錄組織、標(biāo)簽對齊與預(yù)處理3.1 數(shù)據(jù)集目錄結(jié)構(gòu)與標(biāo)簽對齊最常見的翻車點表情識別數(shù)據(jù)集的來源很雜有 CSV 文件如 FER2013也有按文件夾分好的圖片目錄。不管原始格式是什么我強(qiáng)烈建議你先把數(shù)據(jù)統(tǒng)一整理成train/val/test三個文件夾每個文件夾下按類別分子目錄最終結(jié)構(gòu)長這樣face_data/ ├── train/ │ ├── angry/ # 0 │ ├── disgust/ # 1 │ ├── fear/ # 2 │ ├── happy/ # 3 │ ├── neutral/ # 4 │ ├── sad/ # 5 │ └── surprise/ # 6 ├── val/ └── test/這個結(jié)構(gòu)的最大好處是torchvision.datasets.ImageFolder可以直接讀取類別標(biāo)簽按文件夾名的字母順序自動從 0 開始編號。但注意字母順序意味著angry0, disgust1, fear2, happy3, neutral4, sad5, surprise6和你預(yù)想的順序可能不一樣。如果你后面要打印混淆矩陣或者計算每個類別的準(zhǔn)確率一定要先打印dataset.class_to_idx確認(rèn)映射關(guān)系否則經(jīng)常出現(xiàn)“模型把恐懼識別成厭惡但你在混淆矩陣?yán)锟村e了行列”這種烏龍。我在這上面吃過虧當(dāng)時按自己以為的順序解析 CSV 標(biāo)簽訓(xùn)練集準(zhǔn)確率虛高到 99%換了測試集立刻崩到 40%查了半天才發(fā)現(xiàn)是標(biāo)簽錯位。3.2 預(yù)處理與數(shù)據(jù)增強(qiáng)48x48 小圖的參數(shù)怎么設(shè)表情識別的輸入分辨率普遍偏低預(yù)處理階段有兩個選擇一是直接喂 48x48 原始分辨率二是先放大到 224x224 再輸入。直接喂小圖會丟失細(xì)節(jié)放大到 224x224 又會讓 ResNet 的預(yù)訓(xùn)練權(quán)重更“舒服”。我的做法是折中先用 OpenCV 的人臉檢測器把臉摳出來對齊然后縮放到 64x64最后在訓(xùn)練時隨機(jī)裁剪成 48x48 并做水平翻轉(zhuǎn)。這樣既保留了原始分辨率又給模型引入了平移不變性。數(shù)據(jù)增強(qiáng)參數(shù)上我常用的組合是隨機(jī)水平翻轉(zhuǎn)p0.5隨機(jī)旋轉(zhuǎn)正負(fù) 10 度隨機(jī)裁剪加 padding 4 像素以及輕微的顏色抖動因為灰度圖轉(zhuǎn)三通道后亮度變化是主要擾動因素。歸一化方面如果用了 ImageNet 預(yù)訓(xùn)練權(quán)重必須用 ImageNet 的均值和標(biāo)準(zhǔn)差否則預(yù)訓(xùn)練權(quán)重的統(tǒng)計量會被破壞from torchvision import transforms train_transform transforms.Compose([ transforms.Grayscale(num_output_channels3), # 灰度圖轉(zhuǎn) 3 通道匹配 ResNet 輸入 transforms.RandomHorizontalFlip(p0.5), transforms.RandomRotation(10), transforms.RandomCrop(48, padding4), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ]) val_transform transforms.Compose([ transforms.Grayscale(num_output_channels3), transforms.ToTensor(), transforms.Normalize(mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]) ])上面的Grayscale(num_output_channels3)很關(guān)鍵。ResNet 的預(yù)訓(xùn)練權(quán)重第一個卷積層接受 3 通道輸入而表情數(shù)據(jù)集很多是單通道灰度圖必須復(fù)制成三通道再喂進(jìn)去。如果你用的數(shù)據(jù)集本身就是彩色人臉圖這一步可以去掉。RandomCrop(48, padding4)的意思是在原圖四周補(bǔ) 4 像素的 0 值后再隨機(jī)裁剪 48x48等效于給模型看稍微偏移后的同一張臉能有效抑制過擬合。注意驗證集和測試集不能做隨機(jī)增強(qiáng)只能做縮放和中值裁剪之類確定性變換否則同一張圖每次評估結(jié)果都不一樣你沒法判斷訓(xùn)練過程中的波動是模型問題還是數(shù)據(jù)擾動問題。3.3 自定義 Dataset處理 CSV 格式表情數(shù)據(jù)的標(biāo)準(zhǔn)寫法如果你的數(shù)據(jù)是 FER2013 那種 CSV 格式第一列是像素值第二列是標(biāo)簽或者需要從數(shù)據(jù)庫讀圖片ImageFolder就不好使了。這時候?qū)懸粋€自定義Dataset子類是最穩(wěn)的。我之前處理這類 CSV 數(shù)據(jù)的模板代碼如下import torch from torch.utils.data import Dataset from PIL import Image import numpy as np import os class FerCsvDataset(Dataset): 讀取 emotion CSV 數(shù)據(jù)集每行 label, pixels像素以空格分隔的灰度值 def __init__(self, csv_path, transformNone): self.samples [] self.transform transform with open(csv_path, r) as f: lines f.read().strip().splitlines()[1:] # 跳過表頭 for line in lines: parts line.split(,) label int(parts[0]) pixels np.array(parts[1].split(), dtypenp.uint8) self.samples.append((pixels, label)) def __len__(self): return len(self.samples) def __getitem__(self, idx): pixels, label self.samples[idx] # 48x48 灰度圖重建 img Image.fromarray(pixels.reshape(48, 48)) if self.transform: img self.transform(img) return img, label這里兩個操作要注意。第一lines[1:]跳過表頭如果數(shù)據(jù)文件本身沒有表頭這個切片會誤刪第一行樣本所以打開文件后先打印前兩行確認(rèn)格式再決定要不要跳。第二像素用空格分隔時parts[1].split()會得到一長串字符串轉(zhuǎn)成np.uint8數(shù)組后 reshape 成 48x48。有些 CSV 的像素分隔符是逗號那split(,)和split()的處理就完全相反——先確認(rèn)再寫代碼別猜。訓(xùn)練時配合DataLoader使用from torch.utils.data import DataLoader train_dataset FerCsvDataset(data/fer2013/train.csv, transformtrain_transform) val_dataset FerCsvDataset(data/fer2013/val.csv, transformval_transform) train_loader DataLoader(train_dataset, batch_size64, shuffleTrue, num_workers4, pin_memoryTrue) val_loader DataLoader(val_dataset, batch_size64, shuffleFalse, num_workers4, pin_memoryTrue)batch_size的選擇要結(jié)合顯存和 BN 層特性下一章細(xì)說。shuffleTrue對訓(xùn)練集是必須的否則每個 epoch 內(nèi)樣本順序固定BN 的統(tǒng)計量估計會偏差。4. 訓(xùn)練與微調(diào)從 ImageNet 預(yù)訓(xùn)練權(quán)重到表情分類的落地參數(shù)4.1 遷移學(xué)習(xí) vs 從零訓(xùn)練預(yù)訓(xùn)練權(quán)重到底帶來了多少收益直接說結(jié)論在表情識別這種小數(shù)據(jù)集任務(wù)上用 ImageNet 預(yù)訓(xùn)練權(quán)重的 ResNet-18 比從零訓(xùn)練的 ResNet-18 最終準(zhǔn)確率能高出 8 到 15 個百分點而且收斂速度快一倍以上。原因是底層卷積核的可遷移性ImageNet 上學(xué)到的邊緣檢測、紋理模式、顏色統(tǒng)計對人臉同樣適用表情識別真正需要學(xué)的是“嘴部線條的組合方式”這類高層特征。從零訓(xùn)練意味著網(wǎng)絡(luò)得重新摸索這些底層特征幾萬張表情圖根本不夠。但預(yù)訓(xùn)練權(quán)重也不是沒有副作用。ImageNet 權(quán)重是平均臉朝向居中、尺度相對固定的自然圖像上訓(xùn)練出來的表情數(shù)據(jù)集里的人臉往往有偏轉(zhuǎn)、遮擋、夸張角度這會導(dǎo)致預(yù)訓(xùn)練階段學(xué)到的某些對“貓耳朵”“車輪”敏感的高層神經(jīng)元被激活產(chǎn)生干擾。我在實際項目里觀察到直接用預(yù)訓(xùn)練權(quán)重微調(diào)時前一兩個 epoch 的損失會比從零訓(xùn)練更低但隨后會有一段“平臺期”——這是在修正高層的偏置。這個過程很正常不要因為損失不降就急著調(diào)學(xué)習(xí)率耐心讓網(wǎng)絡(luò)自己洗掉那些與表情無關(guān)的激活模式。4.2 三個必調(diào)的參數(shù)學(xué)習(xí)率、batch size 和類別權(quán)重學(xué)習(xí)率是整個訓(xùn)練里最玄學(xué)的參數(shù)。遷移學(xué)習(xí)場景下我一般用1e-4起步比從零訓(xùn)練的1e-3要低一個量級——因為預(yù)訓(xùn)練權(quán)重已經(jīng)在一個很低的損失區(qū)域步子邁太大容易一步跨出好位置。優(yōu)化器我推薦 AdamW權(quán)重衰減設(shè)1e-4或5e-5它比 SGD 對學(xué)習(xí)率更寬容適合非資深玩家如果你想要極限精度可以把模型訓(xùn)練到后半段切到 SGDmomentum 繼續(xù)調(diào)。學(xué)習(xí)率調(diào)度用余弦退火CosineAnnealingLR或者按 epoch 手動衰減每 10 個 epoch 乘 0.1。表情識別的訓(xùn)練 epoch 數(shù)不用太多30 到 50 個 epoch 足夠收斂再多就會陷入過擬合區(qū)間。batch size 的取值受限于 BN 層ResNet 的 BatchNorm 在一個 batch 內(nèi)統(tǒng)計均值和方差batch size 太小小于 16會導(dǎo)致 BN 統(tǒng)計不穩(wěn)定損失曲線像鋸齒一樣抖batch size 太大又會超出顯存。我一般用 64顯存小于 4GB 時降到 32。另一個關(guān)鍵點是如果加載了預(yù)訓(xùn)練權(quán)重前幾個 epoch 最好凍結(jié)所有 BN 層的 running_mean 和 running_var因為這些統(tǒng)計量是 ImageNet 數(shù)據(jù)的分布小 batch 上更新會污染它們。PyTorch 里凍結(jié) BN 的寫法是def set_bn_eval(model): for m in model.modules(): if isinstance(m, torch.nn.BatchNorm2d): m.eval() # 使用 running_mean / running_var不再更新 # 在訓(xùn)練循環(huán)里前 5 個 epoch 凍結(jié) BN之后恢復(fù)訓(xùn)練模式 if epoch 5: set_bn_eval(model) else: model.train()類別權(quán)重是表情任務(wù)不能省的一步。我用torch.nn.CrossEntropyLoss(weightclass_weights)權(quán)重的計算方式最常見的是1 / 類別樣本數(shù)然后歸一化也可以直接用torch.sqrt(1 / 類別頻率)來壓低少數(shù)類的影響。類別不均衡嚴(yán)重時比如“厭惡”樣本只有“開心”的十分之一不加權(quán)重的話模型會把所有不確定樣本都判成“開心”混淆矩陣會難看得讓你懷疑人生。4.3 訓(xùn)練主循環(huán)從數(shù)據(jù)加載到模型保存的完整骨架下面給一份可以直接跑的訓(xùn)練代碼骨架我做課設(shè)或小項目時一般就用這個底子改。注意代碼里的device判斷、驗證階段的torch.no_grad()和最終模型保存方式這三個地方最容易寫錯。import torch import torch.nn as nn from torch.optim import AdamW from torch.optim.lr_scheduler import CosineAnnealingLR device torch.device(cuda if torch.cuda.is_available() else cpu) model model.to(device) # 類別權(quán)重按訓(xùn)練集各類別樣本數(shù)反比計算 import numpy as np train_labels [label for _, label in train_dataset.samples] counts np.bincount(train_labels, minlength7) weights torch.tensor(1.0 / (counts 1e-6), dtypetorch.float32).to(device) criterion nn.CrossEntropyLoss(weightweights) # 如果你覺得上述權(quán)重太激進(jìn)可以用 sqrt 平滑 # smooth_weights torch.sqrt(weights / weights.sum()) * 7 optimizer AdamW(model.parameters(), lr1e-4, weight_decay1e-4) scheduler CosineAnnealingLR(optimizer, T_max40) best_val_acc 0.0 for epoch in range(40): model.train() if epoch 3: set_bn_eval(model) # 凍結(jié) BN 統(tǒng)計量 total_loss 0.0 correct 0 total 0 for images, labels in train_loader: images, labels images.to(device), labels.to(device) outputs model(images) loss criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() total_loss loss.item() * images.size(0) _, preds torch.max(outputs, 1) correct (preds labels).sum().item() total labels.size(0) train_acc correct / total val_acc evaluate(model, val_loader, device) scheduler.step() print(fEpoch {epoch1:02d} | Loss {total_loss/total:.4f} | fTrain Acc {train_acc:.4f} | Val Acc {val_acc:.4f}) if val_acc best_val_acc: best_val_acc val_acc torch.save({model_state_dict: model.state_dict(), class_to_idx: train_dataset.class_to_idx if hasattr(train_dataset, class_to_idx) else None}, best_model.pth)配合的驗證函數(shù)def evaluate(model, val_loader, device): model.eval() correct 0 total 0 with torch.no_grad(): # 驗證階段不計算梯度節(jié)省顯存且加速 for images, labels in val_loader: images, labels images.to(device), labels.to(device) outputs model(images) _, preds torch.max(outputs, 1) correct (preds labels).sum().item() total labels.size(0) return correct / total關(guān)于模型保存方式我見過好多人只存model.state_dict()結(jié)果推理時不知道輸入尺寸和類別數(shù)還得回頭翻代碼。所以我習(xí)慣把class_to_idx和num_classes一起存進(jìn) pth 文件這樣部署和復(fù)現(xiàn)時一眼就能確認(rèn)。另外torch.save一個包含state_dict的字典比直接torch.save(model, ...)安全得多——后者會連著類和設(shè)備信息一起序列化換臺機(jī)器經(jīng)常報錯。提示如果訓(xùn)練時顯卡顯存不夠把batch_size減半的同時記得把num_workers調(diào)小比如從 4 降到 2。num_workers過大和 batch size 過小同時出現(xiàn)時數(shù)據(jù)加載會成為新瓶頸GPU 利用率上不去。5. 常見問題與避坑訓(xùn)練崩潰、過擬合和推理翻車的 5 個案例5.1 訓(xùn)練第一個 epoch 損失直接變成 NaN現(xiàn)象是 loss 打印出來就是nan或者從某個 batch 開始突然變成nan之后再也回不來了。最常見的原因是學(xué)習(xí)率太大導(dǎo)致梯度爆炸但 ResNet 加 BN 對梯度爆炸容忍度其實不低所以八成是別的問題。我之前排查過的一個隱藏原因是輸入圖片里含有全黑或全白的異常樣本經(jīng)過Normalize后這些像素值變成極端大數(shù)把第一層卷積的數(shù)值范圍直接頂爆。解決辦法是數(shù)據(jù)加載完后跑一遍完整性檢查for i, (img, label) in enumerate(train_dataset): if img is None or (img 0).all(): print(fBad sample at index {i}, label {label}) break如果數(shù)據(jù)本身沒問題就把學(xué)習(xí)率降到1e-5重試一步步往上加。還有一種情況是損失函數(shù)里的weight參數(shù)包含了 0 值導(dǎo)致某些類別的梯度恒為 0從而讓對應(yīng) logit 瘋長最后數(shù)值溢出。給權(quán)重加一個極小值1e-6就能避免。5.2 訓(xùn)練集準(zhǔn)確率 98%驗證集卡在 60%這是表情識別項目里最經(jīng)典的血淚經(jīng)驗過擬合。癥狀是前 10 個 epoch 訓(xùn)練集和驗證集同步上升之后訓(xùn)練集繼續(xù)漲驗證集開始震蕩甚至下降。原因有兩個一是數(shù)據(jù)量太少表情數(shù)據(jù)集和 ImageNet 的規(guī)模差距太大二是模型參數(shù)太多ResNet-50 在小數(shù)據(jù)集上比 ResNet-18 更容易過擬合。解決辦法按優(yōu)先級排先加強(qiáng)數(shù)據(jù)增強(qiáng)加光照擾動、隨機(jī)遮擋再砍模型換小一點的 ResNet-18最后考慮加 dropout。表情識別這種任務(wù)測試集準(zhǔn)確率比“訓(xùn)練集做到完美”重要得多因為你的模型最終是要在別人的照片上跑的。還有個容易被忽略的原因驗證集和訓(xùn)練集的人臉來源重疊。很多表情數(shù)據(jù)集是按幀從視頻里切出來的同一個人的相鄰幀被分進(jìn)訓(xùn)練集和驗證集導(dǎo)致模型“記住”了這個人而不是學(xué)會了表情。正確做法是按視頻或人物 ID 劃分?jǐn)?shù)據(jù)集而不是按幀隨機(jī)分。遇到這種情況重劃驗證集后準(zhǔn)確率會掉下來但這才是真實水平。5.3 攝像頭推理卡頓幀率只有 5 FPS訓(xùn)練好的模型拿到攝像頭實時推理時卡頓90% 的問題不在模型計算本身而在預(yù)處理鏈路。常見的是每幀都用 PIL 加載、轉(zhuǎn)格式、單張送 GPU來回切換損耗巨大。正確的推理流程是用 OpenCV 讀幀 → 人臉檢測器定位 → 裁剪對齊 → 單張推理。并且必須開啟 eval 模式和torch.no_grad()import cv2 import torch model.eval() cap cv2.VideoCapture(0) with torch.no_grad(): while True: ret, frame cap.read() if not ret: break # 假設(shè) face 人臉檢測器返回的裁剪后 48x48 圖像 face preprocess_face(frame) # 返回 tensorshape [1,3,48,48] face face.to(device) logits model(face) _, pred torch.max(logits, 1) # 在 frame 上畫框和標(biāo)簽顯示這里有兩個隱性坑如果model.eval()忘了調(diào)BN 層還在用 batch 統(tǒng)計量單張推理時統(tǒng)計量方差巨大輸出會變得很怪如果忘了torch.no_grad()模型前向會保存中間激活用于反向傳播顯存被慢慢吃滿幾十幀后開始卡頓甚至崩潰。人臉檢測器本身也很耗計算用 OpenCV 自帶的 Haar Cascade 或者移動端友好的檢測模型別一上來就接 YOLO。5.4 測試集準(zhǔn)確率虛高標(biāo)簽對齊問題的典型癥狀癥狀是訓(xùn)練過程一切正常訓(xùn)練/驗證準(zhǔn)確率都很像樣子但換到真實照片上識別錯誤百出或者測試集準(zhǔn)確率和驗證集差一截。這種“黑匣子”式的問題十有八九是類別標(biāo)簽映射錯位。我在章節(jié) 3.1 提到過按字母排序的問題這里再舉一個更隱蔽的場景CSV 數(shù)據(jù)集的 label 和文件夾的類別序號不一致。比如你的 CSV 里0angry但torchvision.datasets.ImageFolder給你分的是0angry嗎不一定如果val文件夾里子目錄順序不同同一個標(biāo)簽號對應(yīng)的類別就變了。排查辦法很簡單訓(xùn)練前打印一份映射表存進(jìn)日志class_names train_dataset.classes class_to_idx train_dataset.class_to_idx print(class_to_idx) # 輸出類似 {angry: 0, disgust: 1, fear: 2, ...}訓(xùn)練完成后用這段映射表寫一個小的評估腳本單獨跑測試集并打印每一類的準(zhǔn)確率和混淆矩陣。如果某一類的準(zhǔn)確率顯著低于其他類優(yōu)先懷疑是標(biāo)簽錯位而不是模型沒學(xué)好。血淚經(jīng)驗這個檢查花不了 5 分鐘但能救回你一下午的調(diào)參時間。5.5 類別不均衡把“厭惡”和“恐懼”直接淹沒在自然場景采集的表情數(shù)據(jù)里“開心”“中性”可能各占 30%“厭惡”“恐懼”各占 5%如果不處理模型會把后兩者學(xué)成一團(tuán)噪聲?,F(xiàn)象是混淆矩陣?yán)镉幸徽袔缀醵际?0也就是“厭惡”類從未被預(yù)測過。解決手段有三層第一層是章節(jié) 4.2 說的類別權(quán)重這是最省事的第二層是過采樣每個 epoch 對少數(shù)類樣本重復(fù)采樣讓每個 batch 里各類別盡量均勻第三層是數(shù)據(jù)增強(qiáng)時對少數(shù)類用更強(qiáng)的擾動。我推薦至少做到前兩層。用WeightedRandomSampler可以方便地做過采樣from torch.utils.data import WeightedRandomSampler sample_weights torch.zeros(len(train_dataset)) for i, (_, label) in enumerate(train_dataset.samples): sample_weights[i] 1.0 / counts[label] sampler WeightedRandomSampler(sample_weights, num_sampleslen(sample_weights), replacementTrue) train_loader DataLoader(train_dataset, batch_size64, samplersampler, num_workers4)注意用了sampler之后就不能再傳shuffleTrue這是DataLoader的硬性約束。num_samples通常保持和原數(shù)據(jù)集一樣大讓每個 epoch 的總步數(shù)不變化。6. 讓表情識別再進(jìn)一步用 Grad-CAM 驗證模型在看哪里表情識別做到 80% 出頭的準(zhǔn)確率后光看指標(biāo)無法判斷模型學(xué)到的策略是否合理。最常見的隱藏 bug 是模型學(xué)會“看背景”而不是“看臉”——訓(xùn)練集里”開心“的照片恰好背景偏亮”難過“的恰好偏暗模型就轉(zhuǎn)向了捷徑。Grad-CAM 是檢查這個問題的輕量工具它能生成一張熱力圖告訴我們模型做決策時重點關(guān)注的是輸入圖像的哪些區(qū)域。一個合理的表情識別模型熱力圖應(yīng)該集中在上半臉的眼部周圍微笑時眼輪匝肌變化和下半臉的嘴部附近如果熱力圖大面積集中在背景、額頭或者衣領(lǐng)上說明模型學(xué)歪了。用 PyTorch 計算 Grad-CAM 并不需要完整復(fù)現(xiàn)原版流程核心做法是記錄目標(biāo)特征圖對目標(biāo)類別的 logit 反向傳播取梯度對特征圖求通道平均再上采樣到輸入尺寸。以 ResNet-18 為例我通常取model.layer4[-1]的輸出作為特征圖import torch import torch.nn.functional as F def grad_cam(model, tensor, target_classNone): 返回與輸入同尺寸的熱力圖0~1shape: [H, W] device next(model.parameters()).device model.eval() feature_map None gradient None def forward_hook(module, input, output): nonlocal feature_map feature_map output.detach() def backward_hook(module, grad_input, grad_output): nonlocal gradient gradient grad_output[0].detach() # ResNet-18 的 layer4 是最后一個殘差塊組成的 stage target_layer model.layer4[-1] fh target_layer.register_forward_hook(forward_hook) bh target_layer.register_full_backward_hook(backward_hook) tensor tensor.unsqueeze(0).to(device) # [1, 3, 48, 48] logits model(tensor) if target_class is None: target_class logits.argmax(dim1).item() # 對目標(biāo)類別得分反向傳播 model.zero_grad() one_hot torch.zeros_like(logits) one_hot[0, target_class] 1.0 logits.backward(gradientone_hot) weights gradient.mean(dim(2, 3), keepdimTrue) # 通道平均權(quán)重 cam (weights * feature_map).sum(dim1, keepdimTrue) # 加權(quán)求和 cam F.relu(cam) # 只保留正向影響區(qū)域 cam F.interpolate(cam, size(48, 48), modebilinear, align_cornersFalse) fh.remove() bh.remove() return cam[0, 0].cpu().numpy()register_full_backward_hook是 PyTorch 新版本推薦寫法舊版本的register_backward_hook在nn.Module上已被棄用。gradient拿到的是目標(biāo)層輸出的梯度mean(dim(2,3))是 Grad-CAM 的經(jīng)典加權(quán)操作把高寬的梯度平均成一個通道權(quán)重。最后F.relu過濾掉負(fù)貢獻(xiàn)區(qū)域因為負(fù)的 CAM 值對應(yīng)的像素對目標(biāo)類別是抑制作用不在可視化范圍里。實際使用時把熱力圖和原圖疊加透明度設(shè) 0.4 左右然后逐個看測試集里每個類別的 sample。我自己的教訓(xùn)是模型的準(zhǔn)確率達(dá)標(biāo)不代表決策可信有一次我訓(xùn)練出的模型對”恐懼“類識別準(zhǔn)確率很高但 Grad-CAM 顯示它重點看的是背景里的窗戶邊緣——原因是數(shù)據(jù)里”恐懼“表情的樣本恰好全來自同一個室內(nèi)場景。發(fā)現(xiàn)這個問題后我把那批背景重復(fù)的樣本清洗掉重新訓(xùn)練后準(zhǔn)確率掉了 3 個百分點但換到真實場景照片上的表現(xiàn)反而提升了一截。這是我認(rèn)為整個項目里最有價值的一次排查也讓我養(yǎng)成了每次訓(xùn)完分類模型必看 Grad-CAM 的習(xí)慣。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
99超级碰免费视频| 久久婷婷精品| 天天日夜夜爽| 婷婷基地五月色| 影音先锋男人女人| 久久精品9| 丁香婷婷免费| 91人人操人人| 超碰在线资源| 麻豆观看夏晴子| 色五月涩涩婷婷| 只有精品视频在线观看| 人妻激情视频| 五月久久丁香| 男女啪啪做爰高潮无遮挡| 久久机热/这里只有精品| 五月婷婷狠狠干| 欧美日韩欧美| 综合激情视频| 欧美婷婷日本| 九九热在线视频| 婷婷激情五月天在线视频| 色色网站日本91| 97碰在线| 丁香五月网址| 99re热在线视频观看| 日本丁香五月婷婷| 婷婷丁香五月天哟啪| 91熟妇大香蕉| 婷婷五月丁香基| 久九色| 高清无码 一区 二区 三区| 一起肏在线视频| 欧美成人AAA片一区国产精品| 综合99综合久久久久久久| 激情五月亚洲| 九九综合久久| 色五月婷婷丁香五月| 丁香五月天天| 爱操人妻| 九九色影院| 9热久久在线| 野战J办公桌椅H| 午夜成人AV在线| 五月丁香中文字幕| 五月婷婷在线免费| 狠狠摸狠狠摸| 色五月综合资源推荐| 三级大香蕉网| 欧美va欧美va差| 色色丁香五月婷婷| 狠狠草综合网| 国产色色色色| 99热这里只有精品99| 国际国外精品欧洲南美洲专区无码不卡| www婷婷色情网| 久久久国产精品黄毛片| 99久久99热| 全国最新疫情| 99ri在线视频| 色五月婷婷五月天| 久久伊人大香蕉| 色欧美影院| 性 色 婷婷| 超碰人人插| 超喷97免费在线视频| 日本欧美成人片AAAA| 五月天婷婷婷| 婷婷五月天在线观看免费| 亚洲久久婷婷| 久久只有18视频| 操逼棍操逼| 五月丁香婷婷激情在线| 婷婷色av| A1片久久久| 性生活视频98791| 久99久99精品免| www.色婷婷.com| 国产欧美va| 无码色| 欧美色婷婷| 99这里只有精品|v| 五月丁香婷婷成人版| 中文字幕精品在线观看| 免费在线观看av网站| 亚洲欧洲中文日韩久久AV乱码| 乱精品一区字幕二区| 三年高清大片免费观看国语| 色五月婷婷婷婷婷婷婷婷婷婷| 狠狠精品干练久久久无码中文字幕 | 激情九色| 日本色色视频| 久操大| 99热8在线| 天天干狠狠| 综合久久人妻| 色丁香婷婷| 深爱五月激情综合| 伍月婷婷免费视频| 99在线综合视频| 久久久久人无码人妻| 大香蕉99热| 开心五月色婷婷综合开心网| 天天日夜夜爽| 五月天色不卡| 五月天色丁香| 五月天婷婷激情综合| 天天爱天天做综合| 久久aaa| 精品久久久999| 五月色丁香婷婷综合| 天天射影院| 色婷婷狠狠| 精品99在线| 日韩在线五月天婷婷| 婷婷丁香熟妇综合网| 97成人超碰免| 综合玖玖偷拍| 91久久网站| 五月天婷婷激情| 91丨九色丨国产打屁股| 在线观看欧美| 婷婷性爱| 久久多色| 九九热最新地址| 色私五月婷婷| 91成人品| 亚洲激情另类| 五月丁香久久| 色色综合网www| 免费视频99| 婷婷色婷婷| 激情综合九月| 在线视频你懂得| 99热精品中文字幕| AV操逼网| 激情欧美五月丁香| 激情五月综合网| 中文字幕在线免费观看视频| 五月丁香激情综合| 综合色情网| 9久久久| 亚洲综合视频一下| 婷婷色Av| 97热这里只有精品| 婷婷五月天堂| 欧美色五月| 五月丁香六月激情欧美综合| 激情久久久| 国产成人99久久亚洲综合精品| 亚洲网视屏| 亚洲五月婷婷| 国产亚洲精品久久久久苍井松| 伊人五月天在线| 亚洲综合激情五月久久| 九九视频在线观看视频6 | 99热这里有精品| 丁香久久在线| 婷婷丁香综合色AV| 中文字幕不卡+婷婷五月| 大香蕉五月| 丁香狠狠色婷婷| 久久久久久久久久久97| 色九月婷婷| 广东99色在线| 99视频久久免费视频| 激情婷婷五月色| 五月婷婷网站| 婷婷五月天福利| 99久久99久久| 一本色道久久88加勒比| 色色色区| 91久热| 美女丁香五月天| 婷婷国产日本欧美| 66精品成人免费网站在线观看| 玖玖热视频| 色综合久| 国产精产国品一二三在观看| 亚洲一区二区无遮挡A片| 久久激情综合| 人人噜天天上| 91超级碰| 亚洲av网址| 五月天激情四射| 五月丁婷婷| 久久机热/这里只有精品| 99超级碰碰| 婷婷久久综合| 五月天激情图片网| 狠狠色丁香婷婷基地| 精品A√| 久久丁香五月婷婷| 五月婷婷久久爱| 欧美大香蕉视频| 五月天婷婷一起草| 5五月综合网亚洲| 99re视频在线播放| 色五月美女| 激情四射网| 天天舔天天摸天天射| 一區四區歐美日韓| 玖玖婷婷五月天| 亚洲黄网AV| 久久刺激网| 美女100%露全身无挡网站| 久久五月天综合| 婷婷久久五月天| 69精品无码一区二区三区| H亚洲| 久久性刺激| 婷婷综合网伊人| 91.com男女操| 丁香六月综合| 久久久思思热| 99熟女啪啪视频| 欧美成人猛片AAAAAAA| 六月丁香六月婷婷欧美| 久久人妻视步| 79精品视频在线观看,| 婷婷婷久久| 99久久99视频只有精品| 色综合中文| 成人精品视频99在线观看免费| 色欲久久久久久综合网综合网| 婷婷久久五月天亚洲欧美国产日韩在线观看| 婷婷五月天国产在线播放| 九九热超碰| 亚洲av网址| www.久久66| 美女五月天| 99久免费视频| 丁香六月啪啪| 丁香五月成人婷婷| 9色天堂| 婷婷五月天777| 91超碰在线观看| 国产亚洲99久久精品熟女| 丁香五月综合婷婷| www.久久久久久久| 色久影院| 99久久玖玖| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 婷婷五月天性爱视频| 99精品国产在热久久| 婷婷丁香五月综合网上| 猫咪伊人AV| 色婷婷成人| 亚洲无码yw| 日韩小视频在线99| 中文字幕丁香五月| 五月开心久久| 99精品视频免费在线播放| 亚洲国产精品VA在线看黑人| 天天透天天干| 激情五月天婷婷在线网址发给我 | 亚洲 在线 性爱| 另类视频在线| 丁香五月亚洲AV| 五月亭亭六月天| 大香蕉在线99热| 大波美女VA网站| 婷婷久久五月| 中文字幕综合网| 婷婷色在线视频| HD久久精品视频| 色色色成人网| 色播五月天婷婷老师| www,天天干| 七七久久婷婷| 色色a| 热九九九九| 久久怕怕视频| 日都一级A片| 久久综合天天综合| 日本偷拍九九九| 五月激情婷婷女| 奇米色大香蕉| 日本操逼九九九九58日本操逼| 婷婷激情六月中文| www久久艹| 五月天丁香久久| 狠狠爱激情网| 丁香六月激情综合| 国产伦亲子伦亲子视频观看| 这里只有精品,日韩视频| 九九色逼| 开心五月色婷婷综合开心网| 东北黄色一级| 综合XX网| VA日本视频| 久久er99热精品一区二区| 婷婷激情五月综合基地| 久久资源综合| 特黄三级片| eeuss人妻| 天天爽天天| 91精品又长又大又粗又爽又猛| 婷婷深爱五月天| 超碰在线资源| 成人短视频在线| 激情 五月 婷婷 丁香| 中文字幕无码人妻少妇免费视频| 激情婷婷六月| 大香蕉人在线65| 亚洲啪啪啪啪| 色色色.com| 精品操逼一区二区| 久操福利| 开心婷婷五月天电影院| 手机在线视频观看9| 亚洲激情久久| 五月网激情| 操老逼综合网| 欧美大香蕉视频| 欧美欧盟性爱网| 日产精品一线二线三线芒果| 国产精品爽爽久久久久久| 一区色色色色网| 精品夜夜澡人妻无码AV| 人人色婷婷| 色五月网址| 无遮羞AV| 色色性爱视频| 天天爱天天做天天日| 成人做爰A片免费看视频| 俺去也五月天婷婷| 这里只有精品在线视频精品| 熟妇天天综合| 久久婷婷精品| 99aese| 色婷婷AV在线| 亚洲六月综合激情久久下卡| 五月在线| 丁香六月视频| 玖玖色综合网| AV亚洲在线| 综合色播| 亚洲亚洲永久无码777777| 九九热av| 欲求不满的人妻| 69精品人人人人| 日日操,夜夜爽| 九九色院| 影音先锋秋秋五月婷婷| 五月婷婷天| 婷婷五月丁香手机在线视频| 99久99热| 人人干女人| 成人精品视频99在线观看免费 | 日本女天天爽| 91九色 婷婷| 99精品偷自拍| 日日.c| 综合婷婷五月丁香在线观看| 五月天色婷婷av| 99碰网站| 91九色在线观看免费| 色色色综合| 九九婷婷五月天| 久去色色| 日本色天堂| 六月婷婷天堂| 无码激情AAAAA片-区区| 99久久网站| 成人婷婷五月天| 五月天丁香综合久久国产| 六月婷婷日| 婷婷五月色| 99精品在线观看视频| 深爱激情av| 六月五月丁香五月欧美| 丁香六月色婷婷| 九九色video| 夜夜操狠狠操| 99热国产免费| 色色色色色综合| 五月综合激情网| 激情综合网激情五月丁香| 婷婷六月丁香在线| 密黄站| 欧美激情综合色综合啪啪五月| www。五月,com| 国产精品久久久久久久久久久久 | 視频福利乱色| 日本人妻久久| 黄色aa观看aaguochan| .青娱乐天天操B| 337p大胆噜噜噜噜噜91Av| 99精品久久久久| 激情文学五月丁香六月婷婷| 天天插AV丝袜中| 99热这里只有精品一区| 亚洲VA在线| ji'qing'luan'ren'lun| 五月社区丁香| 色婷婷色五月综合| 五月婷婷开心六月激情小说| 日本九九热| 一本久久亚洲五月婷婷| 成年人99热| 婷婷五月开心中文字幕色| 色色网站观看| 国产寻花在线| 天天干天天爽天天操| 久噜久噜| 五月天精品综合| 五月丁香基地| 五月天婷婷激情小说电影| 天天色噜| 97久久草草超级碰碰碰| 综合五月婷婷| 操91| 在线观看日韩12345区| 丁香五月天堂婷婷| 久碰久| 天天射色五月天| 亚洲午夜一区二区| 色婷丁香| 中文人妻主播久久| 激情综合另类| www.天天干| 9久热在线视频精品| 亚洲精品影视| 91久久婷婷| 国产精品A成V人在线播放| 七月丁香五月婷婷在线| 色偷偷人人| 九月丁香八月婷婷久久综合久97| 精品在线网站| 五月天婷婷青青| 婷婷五月天资源| 亚洲成人婷婷| 亚洲啪啪啪啪| 九九无码| 天天操天天干天天射| 狠狠狠狠青草| 色婷婷综合久久久久| 五月婷丁香花| 五月丁香婷婷俺| 色九月婷婷丁香| 国产亚洲成AV人片在线观黄桃| site:picc-up.com| 五月丁香花婷婷玉莉AV| 亚洲婷婷五月| 中文字幕在线观看视频www| 亚洲视频在线观看| 永久天堂日本| 99九九久久| 热的国产,热的综合,热的有码| 亚洲精品五月| 六月婷婷久久| 免费看欧美成人A片无码| 日韩AC在线免费观看| www.yw色| 99高级会所久久| 久久人妻视步| 99热在线只有精品| 欧美日韩成人综合9| 色五月97| 天天婷婷天天| 99热这里都是精品| 免费无码毛片一区二区A片| 五月丁香六月停停停| 色~性~乱~伦~噜| 五月色婷婷综合丁香精品无遮挡| 51国精产品自偷自偷综合| 亚洲欧美成人在线| 97干在线免费| 激情五月图| 欧美日韩AAAA| 婷婷综合视频| 女同激情久久av久久| 26uuu亚洲欧美另类| 久久538| 久久99网站| 国产操逼网站| 我爱宗和色| 九九这里有精品| 九九久久综合| 丁香五月六月综合激情| 快色t v在线入口| 日本久久婷| 九月丁香很很色| 色色五月天婷婷| 日日日天天干| 色伦专区97中文字幕| 波多野结衣AV无码Porn| 这里只精品热在线18| 久热大香蕉| 91碰碰视频在线观看| 五月丁香啪啪啪综合网| 中文字幕 中文字幕明步| 日韩成人电影AV| www.com任你艹| 婷婷丁香五月天色区| 五月婷婷久久综合| www.久久9| 五月综合亚洲婷婷| 丁香五月天激情综合| 正宗黄色毛片| 狠狠五月综合在线| 亚洲蜜桃精久久久久久久久久久久| www.sebowuyue| 精品三区影院| 国产精品久久久久久久久久免费| 97干在线| 96精品久久久久久久久| 狠狠色网| 五月丁香龟婷婷| 99热久久这里只有精品| 欧美操逼天堂| 五月婷婷成人| 91人无码久久久久久| 五月婷伊人| 丁香五月先锋| 激情婷婷综合网| 五月丁香伊人网| 91日本在线观看| 91丨九色丨大屁股| 亚洲精品国产成人AV在线| 欧美色偷偷大香| 色五月激情综合| 少妇被下春药玩弄A片| 啪啪色激情五月天| 99啪啪| 婷婷激情视频| 91精品久久久久久久久| 激情婷婷五月少妇| 婷婷五月天天天| 五月天婷婷网站| 天天舔天天摸天天透| 99精品国产在热久久| Xx色综合| 九九無妻| www.天天干.com| 丁香婷婷五月| 九九热只有这里精品| 99精品久久| Av九九| 色5月婷婷色| 亚洲啪啪网| 久久亚洲天堂| 丁香婷婷色| 成人在线综合| 四季日韩AV无码综合| 深爱激情网五月天| 激情视频综合| 久久九九精彩| 欧美啪啪9| 国产免费av在线| 色五月婷婷五月天| 激情六月丁香| 成人片在线播放| 性爱网久久| 99热这里只有精品在线| 99热这里只有精品10| 天天射影院| 婷婷六月久久| 奇米影视在线视频| 中文字幕人妻在线| 国产日产成人亚洲欧美国产VA| 婷婷五月丁香五月| 99高级会所久久| 97涩涩丁香五月天| 99色在线| 五月丁香婷婷色色| 日韩啪啪网| 国产一二区爆乳_1国产日韩一区二区三-成人AV| 开心五月婷婷激情网| 欧美激情综合五月色丁香| 五月天成人在线| 九九伦子片| 噜噜噜狠狠色综| 天天操天天操天天操天天操天天操| 欧美激情丁香五月| 五月婷婷六月激情| 激情色视频| 久久网婷婷| 丁香五月激情婷婷| 亚洲 在线 性爱 | 大香蕉av在线| 丁香婷婷五月天色播| 超碰69天堂| 五月丁香婷婷爱| 色婷婷五月天av在线| 精品亚洲国产成AV人片传媒| 丁香五月天网友自拍啪啪啪视频| 欧美精品99| 99色视频| 婷婷色五月色| www久久99| 亚洲三级无码| 婷婷操超碰| 五月天婷婷三级黄| 色色五月丁香| 91精品久久久久、久五月天| www.日本久久videos| 在线观看免费视频| 99riAV国产精品视频| 亚洲aV写真天天综合网久久| 色A网| 青草激情综合| 六月婷婷色综合| 免费看成人747474九号视频在线观看| 久久精品婷婷| 91呦呦呦| 五月天综合婷婷| 天天色综合综合| 生活片五区| 国产成人网| 婷婷开心久久| 最新日本A片| 99热在线播放精品| 亚洲va在线∨a天堂va欧美va| 五月婷导航| 五月丁香婷婷伊人日韩| 亚洲人妻AV| 99视频精品全部免费观看| 日韩综合天堂| 久久99草五月婷婷| 激情综合五月丁香| 玖玖午夜视频| 激情综合色五月丁香六月亚洲| 99欧州偷拍视频| 国产真实乱了老女人视频| 日韩一级网站| 99久久综合精品五月天| 丁香五月综合婷婷| 一起草av在线观看| 久久婷婷啪啪视频| 99亚洲大片精品永久在线观看| 思思99热| 亚洲在线操| 五月天精品综合在线| 久月婷婷| 激情综合婷婷久久| 婷婷丁香五月天之开心少妇| 五月婷婷啪啪| www.99久久久| 综合激情视频| 久久这里有精品在线观看| 五月丁香六月婷婷综合在线| 欧美在线视频免费播放| 久久久久视剧HD| 欧美在线视频99| 五月婷婷天堂| 99热免费| 亚洲色优| www,av好吊操| 99色看| 天天爱天天日| 激情五月丁香五月| 免费婷婷| 五月开心久久| 青草青草久9视频在线视频| 中文字幕丰满孑伦无码专区| 激情综合久久| 丁香五月六月综合激情| 五月丁香六月玩女人| 激情图片久久| 99热在线观看精品| 青青久在线视频免费观看| 婷婷五日b| 欧美一级色| 26uuu国自产精品| 六月丁丁香| 婷婷五月天最新综合你懂的| www.操.com| 激情丁香婷婷五月天| 激情综合五月天| 丁香六月色香蕉视频| 婷婷五月天成人网| 激情欧美婷五月| 日本精品人妻无码77777| 五月天性色| 日韩丁香涩| 欧美成人精品三区综合A片| 亚洲激情高潮| 丁香五月色| 97久久香草精品视频| 教师性爱毛片| 婷婷深爱五月天| av国产精品偷| 91色久| 六月丁香婷婷网| 五月色情| www.五月丁香| 黄色五月婷婷| 99视频内射三四| 亚洲噜色| 啪精品| 大香蕉久| 亚洲成人乱码av网站| 超级碰 久久9| 丁香五月另类色婷婷麻豆| 成人色五月天婷婷| 激情网 久久| 五月婷婷综合在线视频小说| 91超碰在线播放| 人人草人人舔| 玖玖资源站蜜臀| w婷婷五月婷婷w| 五月丁香六月婷| 五月丁香六月婷婷在线播放| 99日精品视频| 丁香五月婷婷基地| 五月丁花六月丁香综合| 狠狠色婷婷7777久| 亚洲午夜成人av电影网| 人妻久久久| 亚洲天堂AV免费片| 久久码久久无清| 无码色色色| 欧美激情综合色综合色| www.91在线看| www久久艹| 九九热视频精品2| www.99热| 国产精品激情五月天色婷婷| 色九月婷婷综合| 国产精品91抖高| 99国产精品久久久久久久久久久| 婷婷久久婷婷色五月| 激情综合婷婷久久| 狠狠做五月婷婷| 99综合成人视频在线观看| 婷婷五月天成人网| 中文av网站| 人妻系列久久久久久久久久久| 婷婷五月激情综合啪啪| 1024人妻| 91日视频| 婷婷五月天在线观看第二页| 亚洲午夜精品久久久久久人妖| 色五月欧美| WWW.17C亚洲精品| 五月色 亚洲| 色婷婷影视99| 99精品偷自拍| 久操人妻| 九九性爱网| 色丁香久综合在线久综合在线观看| 伊人9在线| 色婷婷yy久| 丁香六月激情综合| 久久人人九| 久久这里只| 美女婷婷六月色| 九色无码| 亚洲一区二区色图-亚洲精品国产精品乱码-成人AV | 热热色色五月天婷婷| 午夜丁香婷婷| 天天爽夜夜操| 婷婷丁香色无五月| 五月天婷婷丁香视频| 日本色色网站| 97操男人的天堂| 影音先锋男人女人| 超碰99在线观看| 大香蕉99热| 婷婷色色亚洲| 亚洲国产精品VA在线看黑人| 五月婷六月| 91视频五月丁香| 色婷婷五月天偷拍| 婷婷五月视频| 五月婷婷内射网| 99综合色色色| 婷婷激情五月| WWW,激情五月天,COM| 婷婷99狠狠躁天天躁中| 日本久久99久久| 9999热在线观看| 综合久久综合五月天婷婷| 婷婷丁香九月| 婷婷色五月婷| 婷婷天天色| 国产性爱亚洲是图| 婷婷五月天精品| 五月丁香基地| 狠狠色婷婷777| 亚洲五月情| 久久久久久久五月婷婷六月丁香综合,开心激情综合网 | 色色色热| 97韩国久久电影院| 99久久精彩视频| 曰本aaaaaa丈片| 91啪啪| 精品人妻久久久| 色综合色综合网| 国产免费av在线| 吊色AV男人的天堂| 超碰99久久| 97狠狠色| jiqingtaose五月天| 超碰在线看| 丁香五月激情宗合网| www。五月天激情| www.激情五月天。com| 99热99在线| 婷婷五月AA五月在线| 另类婷婷丁香| 五月婷婷丁香av| 综合激情站| 色播五月综合网| 久久人操| 九九视频在线观看视频6 | 99精品视频在线观看| 成人网在线观看视频| 国产亚洲AV人片在线| 成人在线免费网址| 天天日夜夜欢| www.色综合.com| 五月丁香日本在线视频观看| va婷婷在线免费观看| 五月丁香六月婷综合成人综合 | 日本理论久久| 2017狠狠干| 六月婷婷天天操夜夜爽视频| 免费黄色片子| 亚洲AV无码久久精品色欲| 欧美性爱5月天天天看| 色婷婷在线视频综合| 99成人免费热视频| 婷婷丁香97| 国产成人精品一区二三区熟女在线| 婷婷99综合| 色在线五月天免费| 丰满少妇猛烈A片免费看观看| 丁香六月狠狠| 日本九九九九| 99热这里只有精品21| 欧美丰满熟妇BBB久久久| 日韩成人网站精品久久大全| 欧美三级A做爰在线观看| 颜射 精品性爱av| 91碰碰视频| 九九亚洲综合| 热99玖玖99玖玖99九九| 婷婷五月激情的图片| 国产99热在线看| 丁香成人色情五月天| 秋霞AV淫| 成人AV在线中文版| 99热黄| 婷婷五月天免费小说| 战争与艾拉电影免费观看| 五月婷婷六月激情| 99综合网| 艹天天射| 伦乱美欧| 久久99热这里只有精品| 天天爽天天干| 国产肥白大熟妇BBBB视频| 久久的爱大香蕉| 丁香六月av| 人人摸人人摸| 91性人人| 很很干天天干| 色五月首页| 狠狠ri| 黄色片avv| 五月天伊人手机在线播放AV| 一级性感毛片| 五月丁综合在线观看| 五月婷婷官网色| 久久婷婷视频| 奇米网大香蕉| 五月丁香亭亭天天舔| 综合网色| 久久综合色五月| 婷婷五月激情欧美大胆视频| 色色99| 琪琪色综合网站| 日本三级片片| 五月天玖玖狠狠色色| 五月婷婷之综合激情| 人人插9| 五月丁香六月婷婷久久久综合| 五月婷激情| 久久最新色| 亚洲情a| 亚洲va综合va国产va中文| 98永久精品| 丁香六月亭亭久久综合| 中文字幕无码人妻少妇免费视频| 91一起艹| 丁香五月色网| 成人啪啪色婷婷久| 思思 热 99| 一级操逼大片| 天天爱天天做综合| 日韩视频99| 偷偷操99| 五月开心激情| 色婷婷激情五月天丁香| site:esunnet.com| 涩五月婷婷| 超碰激情五月| 2025年最新亚洲在线欧美| 99国产精品久久久久久久久久久| 色狠狠五月天| 欧美性爱五月天| 亚洲、欧美、国产另类笫二区| 婷婷六月综合激情| 99网| www.夜夜操.con| 久久久这里有精品| 东京热免费视频| 九九九九毛片| 丁香婷婷五月色成人网站| 涩婷婷五月天在线精品视频| 99热在线网站| 婷婷五月天开心网| 色婷婷AV久久| 99热这里有精力| 亚洲精品V天堂中文字幕| 99这里只有精品|v| 亚洲欧洲另类| 色五月天综合网| 激情图片99| 99视频只有这里精品| 最近中文字幕2019视频1| 五月婷婷五月丁香综合| 狠狠五月天| 亚洲俩性性爱图片久久第六页| 婷婷五月天色| 久久五月激情网| 黄网在线免费| 激情九九这里只有精品| BlACKEDRAW视频一区二区| 欧美成人精品一区二区 | 婷婷六月丁香综合| 人妻AV在线| 丁香八月综合激情| 国产av天天插天天操天天爽| 五月综合色播播丁香婷婷| 青青久久五月天丁香婷婷| 色色综合网络| 九九人人自拍| 色色婷婷丁香| 久婷久婷激情肉| 婷婷五月丁香久久| 九色视频入口91| 久草五月| 综合色图区| 天天干天天干天天干| 五月天婷婷视频30| 玖玖资源网站最新站| 99久久99视频只有精品| 亚欧州精品视频| 色婷婷影音| 丁香五月天影院| www.色五月| 亚洲人妻AV| 26uuu成人网| 四虎成人精品永久免费AV九九| 久久婷婷五月综合色丁香| 丁香婷婷婷五月| 天天夜天天色天天| 色婷婷色久综| 六月婷婷日| Av性爱网| 五月天激情综合网站| 久久激情视频99| 激情婷婷网| 噜噜噜噜噜色| 美女黄频aⅴ视频| 高清无码网址| 色婷婷久综合久久一本国产AV| 五月天婷婷免费| 天天综合精品| www.日日夜夜.com| 婷婷五月天AV| 精品国婬伦V无码久久久| 碰97久久| 俺去也在线www色官网| 五月开心久久| 久热一区| 婷婷五月激情的图片| 婷婷五月天AV激情| 亚洲狠狠婷婷| 疯狂做受XXXX高潮A片| 99re这里只有精品在线观看| 免费AAAAA网| 国产乱子轮XXX农村| 欧美性做爰大片免费看办公室 | 日本片日本片祼观看网站在线看中文版网页在线看| 另类五月婷婷| 久9热| www.99在线| 久久这里只有精品久久| 五月停停999| 开心五月色婷| 亚州精品成人片| 五月婷婷深深爱| 五月天另类激情在线| 五月 丁香 欧美| 大香蕉人在线65| 婷婷丁香91综合| 91久久久久久久久18| 色五月五月丁香| 五月天久久婷婷婷| 五月丁香六月婷婷在线播放| 99综合视频一体| 日本综合99| 婷婷导航| 深爱激情五月网| 日在线V视频在线播放| 亚洲中文字幕AV| 成人AV综合在线| 丁香情色五月| 五月丁香六月婷婷网| 丁香五月婷婷乱| 99热都是精品| 丁香五月777| 久久精彩视频18| 婷婷久久综合| 九九激情| 丁香五月婷婷色播艳门照| 激情综合五月激情| 综合色图区| 久久亚洲天堂| 色啪久| 国产精品久久久久久久久久| 丁香五月五月婷婷| 五月婷婷五月天| 丁香五月综合在线观看| 天天成人五月天| 五月花综合网| 超碰在线视屏| 久热91精品| 日韩精品一区二区刘| 2025神马午夜福利| 亚洲丁香花色| 色综合婷婷| 操人91| 成人短视频在线| 天天色99| 午夜丁香综合婷婷| 五月天久久婷婷| 无码人妻一区| 性色99| 丁香婷婷久久老熟女综合网| 亚洲视频在线观看99| 中文网AV| 另类图片天天影视在线观看| 超碰免费成人| 丁香五夜激情四射夜夜夜| 五月激情在线| 五月色丁香婷婷综合| 97碰在线视频| 深爱激情网五月天| 婷婷伊人中文字幕| 操精品9| 欧美婷婷日本| 人人视频色| 亚洲激情四射| 欧美性生交XXXXX无码小说| 97婷婷狠狠久久综合9色| 色色综合日韩| 夜夜撸日日操| 日本无码专区| 国产操B视频| 天天干天天 亚洲| 99爽视频| 91碰人人| 色色综合色视频| 婷婷狠狠干| 激情五月婷婷丁香| www,99色| 五月婷高清视频| 丁香五月婷婷亚洲色图| 九月婷婷在线视频| 婷婷五月综合在线| 色色亚洲| 九九综合影音先锋| 天天综合色99| 丁香 亚洲 久久| 婷婷丁香花五月天| 99性视频| 久久人妻情侣| 色情五月天se| 开心婷婷五月花| 99热在线看片| 爱iii做iiii日| 婷婷五月天av网| 夜夜久久综合网| 亚洲色vA| www婷婷| 久久婷综合| 久久大香蕉| 拍色综合| 91vip在线观看| 色之综合网| 激情综合网亚洲色图| 婷婷五月天电影区小说区| 96精品久久久久久久久| 99热都是精品| 91九九九九九九| www.久操| 久9热| 五月色欧美| 五月天激情国产综合婷婷婷| 久久综合影院 | 99色色| www九九免费视频| 伦99热| 五月天色狠狠| 五月花在线观看视频| 99人碰碰碰| 亚洲激情五月| 97色 五月天丁香| 伊人丁香五月婷婷潮吹| 色婷婷五月天激情久久| 亚洲热视频在线| 91超碰在线观看| 欧美狠狠地| 一本色道久久综合狠狠躁小说| 色综合丁香| 日韩野外 无套| av在线不卡播放| 91视频综合网| 无码G高清天| 天天干一干| 丰满少妇猛烈A片免费看观看| 四射综合网| 热的国产,热的综合,热的有码| 天天婷婷| 三人荫蒂添的好舒服A片| 9久热免费视频99| 日本4399天堂中出| 色婷婷亚洲| 五月婷婷丁香五月婷婷| 色停停香蕉视频| 成人无码免费一区二区中文| 国产在线中文字幕| 欧美激情xxxXX| 久久思思热| 丁香五月花影院| 丁香五月色色| 五月天激情www| 色婷婷狠狠18禁| 任你日热视频| 开心激情站婷婷五月天| 色婷久久| 丁香五月ⅤA久久久| 亚洲激情 久久| 久久总和99| 激情99| 六月丁香久久| 噜噜视频| 九九9久九9国产视频| 五月天婷婷狠狠| 婷婷五月激情欧美| 亚洲无AV在线中文字幕| 在线观看av网站| 我要看激情五月天| 亚洲色99| 日韩精品超碰在线观看| 色婷婷基地| 亚洲愉拍99热成人精品| 丁香五月天导航| 久久久久久久久久8888| 亚洲第一色网站| 欧美婷婷成人| 欧美性生交XXXXX无码小说| 五月丁香A片| 6080av| 91chinese在线| 超碰免费成人| 激情五月婷| 超级碰碰一区| 婷激情五月| 五月日韩中文字幕| 99色精品视频| 国产精品大香蕉| 黑人熟妇一区二区三区| 99A片| 婷婷亚州综合| 亚洲VA在线| 午夜无码熟熟妇丰满人妻 | 五月综合色播播丁香婷婷| 国产AV一区二区三区日韩| 色久婷婷五月| 九九热精品视频| 五月丁香六月综合基地| 国产无人区大片| 婷婷色吧| www五月| av免费在线网站| 色色亚洲五月天| 亚洲丁香五冃97色| 人妻少妇色综合| 久热伊人| 2050人人操免费工开爱 | 成人无码髙潮喷水A片| 中文字幕丰满乱孑伦无码专区| 精品人妻伦一二三区久久| 99色在线观看免费| 久久婷婷五月| 五月天另类图片区99| 天天干、天天日日| 狠狠婷婷日韩| 色婷婷久久综合丁香五月| 日本综合99| 天天爽天天日天天舔| 超碰2021| 综合色色色色色色| 久久99精品久久久久久青青AR| 视频色色色色色色| 99日在线观看视频| 五月婷婷激情网| 97极品在线| 九月综合| 丁香六月啪啪啪| 欧洲电影在线观看免费版英语版 | 色婷婷综合影院| 另类伊人婷婷| 色婷婷亚洲婷婷| 欧洲毛片基地c区| 亚洲色五月天| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 五月婷婷色影院| 婷婷五月花| 天天骑天天操| 色99视| 婷婷综合九色伊人| 五月天综合在线观看| 色婷婷色综合激情91| 亚洲无线视频| site:hcxsz888.com| 国产av天堂| 婷婷色av| 国产成人精品一区二三区熟女在线 | 色色色色色色色色五月先| 99免费综合网| 久久99热网| 甈你aaaaa| 成人网丁香五月| 99久久九九| 天天日夜夜高潮| 五月婷婷综合在线亚洲视频| 天天爽天天日人人爱| 99热官网精品在线| 一本大道熟女人妻中文字幕在线 | 亚洲国产精品VA在线看黑人| 久久九九玖玖| 少妇熟女视频一区二区三区| 色XX综合网| 18久久| 天天干天干| 中文字幕色色色| 日本WWW九九九| 青青草成人网| WWW.开心五月天.COM| 影音先锋男人资源站一区二区| 可以免费观看的AV| 狠狠色综合久久| 色色色色色色色色五月先| 最新无毒无码AV| 外国碰视频网站97| 狠狠草婷婷| 手机旧版看人妻1025| 久久久天堂国产精品女人|