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

ARTICLE DETAIL

資訊詳情

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

從會(huì)用到會(huì)優(yōu)化:YOLOv5訓(xùn)練流程、損失函數(shù)與增強(qiáng)策略全解析

從會(huì)用到會(huì)優(yōu)化:YOLOv5訓(xùn)練流程、損失函數(shù)與增強(qiáng)策略全解析 開(kāi)篇導(dǎo)讀 很多人會(huì)用 YOLOv5 訓(xùn)練命令但指標(biāo)一掉就只會(huì)加epoch、改lr、換增強(qiáng)。結(jié)果是參數(shù)改了一堆卻說(shuō)不清到底哪一步真正生效也無(wú)法復(fù)現(xiàn)實(shí)驗(yàn)收益。 這篇文章不講玄學(xué)調(diào)參。我會(huì)按源碼執(zhí)行路徑把 YOLOv5 從參數(shù)讀取、權(quán)重加載、數(shù)據(jù)管線、損失計(jì)算到 best.pt 保存的關(guān)鍵機(jī)制講透并給出可直接照做的優(yōu)化與排錯(cuò)方法。 你將獲得三樣?xùn)|西 1一張訓(xùn)練主鏈路圖知道問(wèn)題該去哪里查 2一份高杠桿改點(diǎn)清單知道優(yōu)先改什么 3一套單變量實(shí)驗(yàn)順序知道怎么證明改動(dòng)有效。 YOLOv5訓(xùn)練源碼精講萬(wàn)字詳細(xì)版 一、本文目標(biāo)與閱讀說(shuō)明 ---------------------- 這篇文章的目標(biāo)非常明確幫你從會(huì)用 YOLOv5 訓(xùn)練命令升級(jí)到能獨(dú)立診斷問(wèn)題、能系統(tǒng)性?xún)?yōu)化效果、能自信解釋每一改動(dòng)的原因。 很多人遇到效果不達(dá)標(biāo)時(shí)第一反應(yīng)是調(diào)參數(shù)——加大 batch、改學(xué)習(xí)率、換增強(qiáng)策略結(jié)果改了一圈說(shuō)不清哪個(gè)有效指標(biāo)升了不知道為什么升降了不知道為什么降。這是因?yàn)闆](méi)有建立訓(xùn)練鏈路視角沒(méi)有把 YOLOv5 訓(xùn)練系統(tǒng)當(dāng)作一個(gè)整體來(lái)理解。 本文按 YOLOv5 源碼的真實(shí)執(zhí)行順序組織內(nèi)容從訓(xùn)練入口開(kāi)始依次覆蓋參數(shù)來(lái)源、預(yù)訓(xùn)練權(quán)重加載機(jī)制、凍結(jié)訓(xùn)練策略、輸入尺寸約束、優(yōu)化器與學(xué)習(xí)率、訓(xùn)練數(shù)據(jù)管線含增強(qiáng)與 cache、損失函數(shù)設(shè)計(jì)與調(diào)優(yōu)、驗(yàn)證與模型保存邏輯最后給出排錯(cuò)清單和推薦實(shí)驗(yàn)順序。 每個(gè)核心章節(jié)都會(huì)講清楚機(jī)制是什么what、為什么這樣設(shè)計(jì)why、什么情況下該改when以及怎么改、改了會(huì)怎樣how。讀完這篇你不僅能理解每個(gè)模塊在訓(xùn)練鏈路中的位置還能獨(dú)立完成一次有對(duì)照的優(yōu)化實(shí)驗(yàn)。 二、訓(xùn)練主鏈路全解析先建全局地圖再深入細(xì)節(jié) -------------------------------------------- 在深入每個(gè)模塊之前先把整條鏈路看清楚。YOLOv5 訓(xùn)練流程可以濃縮為以下十個(gè)關(guān)鍵節(jié)點(diǎn) 節(jié)點(diǎn)1參數(shù)解析。命令行參數(shù) 配置文件hyp.yaml合并產(chǎn)生最終生效的 opt 對(duì)象。這一步?jīng)Q定了一切后續(xù)行為的起點(diǎn)。 節(jié)點(diǎn)2模型構(gòu)建。依據(jù) cfg 文件yaml 格式的網(wǎng)絡(luò)結(jié)構(gòu)描述構(gòu)建模型實(shí)例。如果提供了預(yù)訓(xùn)練權(quán)重則進(jìn)入節(jié)點(diǎn)3。 節(jié)點(diǎn)3預(yù)訓(xùn)練權(quán)重加載。嘗試加載 checkpoint按鍵名匹配 shape 匹配的交集邏輯賦值參數(shù)。匹配部分繼承預(yù)訓(xùn)練權(quán)重未匹配部分隨機(jī)初始化。 節(jié)點(diǎn)4凍結(jié)層處理。如果指定了 freeze 參數(shù)則將對(duì)應(yīng)層的 requires_grad 設(shè)為 False使這些參數(shù)在反向傳播時(shí)不更新。 節(jié)點(diǎn)5優(yōu)化器與調(diào)度器初始化。包括 optimizerSGD / Adam / AdamW、lr_scheduler余弦退火或階梯衰減、EMA指數(shù)滑動(dòng)平均、AMP混合精度等可選組件。 節(jié)點(diǎn)6Dataset / Dataloader 構(gòu)建。Dataset 負(fù)責(zé)加載圖片、讀取標(biāo)簽、執(zhí)行在線數(shù)據(jù)增強(qiáng)Dataloader 負(fù)責(zé)多 worker 并行讀取、打亂順序、collate_fn 拼 batch。 節(jié)點(diǎn)7每輪訓(xùn)練epoch loop。前向傳播得到預(yù)測(cè)張量 → build_targets 為 GT 分配正負(fù)樣本 → compute_loss 計(jì)算 box/obj/cls 三類(lèi)損失 → 反向傳播更新參數(shù) → EMA 更新影子權(quán)重。 節(jié)點(diǎn)8驗(yàn)證。每隔 N 個(gè) epoch或每個(gè) epoch跑一次 val將模型通常是 EMA 權(quán)重切換到 eval 模式跑推理并統(tǒng)計(jì) P/R/mAP。 節(jié)點(diǎn)9模型保存。按 fitness 指標(biāo)判斷是否更新 best.pt同時(shí)保存 last.pt 供斷點(diǎn)續(xù)訓(xùn)。 節(jié)點(diǎn)10斷點(diǎn)續(xù)訓(xùn)resume。下次啟動(dòng)時(shí)從 last.pt 恢復(fù) epoch 進(jìn)度、optimizer 狀態(tài)、scheduler 狀態(tài)、EMA 影子權(quán)重。 理解這張圖的價(jià)值在于任何訓(xùn)練異常loss 不降、指標(biāo)抖動(dòng)、發(fā)散等都可以先定位到具體節(jié)點(diǎn)再在該節(jié)點(diǎn)內(nèi)部排查。例如 loss 發(fā)散 → 可能是 lr 過(guò)高或增強(qiáng)過(guò)強(qiáng) → 對(duì)應(yīng)節(jié)點(diǎn)5或節(jié)點(diǎn)6。建立了這張地圖才能系統(tǒng)性地排錯(cuò)而不是盲目試參。 三、訓(xùn)練入口參數(shù)來(lái)源的完整梳理 -------------------------------- YOLOv5 訓(xùn)練入口的行為本質(zhì)上是多來(lái)源參數(shù)合并 環(huán)境檢查的過(guò)程。很多我改了參數(shù)但好像沒(méi)生效的問(wèn)題都出在這一步的理解不夠清晰。 參數(shù)來(lái)源一共有三個(gè)層次按優(yōu)先級(jí)從高到低排列 第一層命令行參數(shù)Command Line Arguments。用戶在執(zhí)行 python train.py 時(shí)傳入的參數(shù)比如 --batch 16、--img 640、--epochs 300、--data coco128.yaml 等。這些參數(shù)會(huì)被解析到 opt 字典中。 第二層配置文件hyp.yaml。位于 data/hyps/hyp.scratch-low.yaml 或 hyp.detection.yaml 等路徑。包含數(shù)據(jù)增強(qiáng)概率flip、mosaic、mixup、hsv、損失權(quán)重box、cls、obj、優(yōu)化器參數(shù)lr0、lrf、momentum、weight_decay等。 第三層resume 快照opt.yaml。當(dāng)使用 --resume 參數(shù)恢復(fù)訓(xùn)練時(shí)run/expN/opt.yaml 文件中保存的歷史參數(shù)快照會(huì)覆蓋當(dāng)前命令行參數(shù)。這是很多人最容易踩的坑。 舉一個(gè)典型場(chǎng)景你想在續(xù)訓(xùn)時(shí)把 batch 從 16 改成 32命令寫(xiě)成 python train.py --resume runs/exp12/weights/last.pt --batch 32。但你可能發(fā)現(xiàn)最終生效的 batch 仍然是 16。這是因?yàn)?resume 時(shí)opt.yaml 中的 batch 參數(shù)優(yōu)先級(jí)更高會(huì)把你的 --batch 32 覆蓋掉。 正確的做法有兩個(gè) 方法一完全新開(kāi)一個(gè) run不使用 resume 參數(shù)只改 batch 參數(shù)。 方法二先手動(dòng)編輯 opt.yaml 中的 batch 參數(shù)再執(zhí)行 resume。 實(shí)戰(zhàn)建議每次啟動(dòng)訓(xùn)練時(shí)在訓(xùn)練日志開(kāi)頭打印 opt 的關(guān)鍵字段batch、imgsz、lr0、weight_decay、epochs確認(rèn)這些值和你預(yù)期的一致。養(yǎng)成這個(gè)習(xí)慣可以避免 70% 的參數(shù)不生效類(lèi)問(wèn)題。 環(huán)境檢查部分也會(huì)執(zhí)行一些輔助操作git diff 查看代碼是否有未提交修改、依賴(lài)版本檢查如 torch 版本、AMP 可用性檢測(cè)cuDNN 是否支持 fp16等。如果你的環(huán)境比較干凈且確定沒(méi)問(wèn)題這些檢查在調(diào)試階段可以臨時(shí)注釋掉以加快啟動(dòng)速度但生產(chǎn)環(huán)境建議保留。 四、預(yù)訓(xùn)練權(quán)重加載交集加載機(jī)制的深度理解 ------------------------------------------ 這是 YOLOv5 遷移學(xué)習(xí)能力的核心也是最容易被誤用的模塊。很多結(jié)構(gòu)改動(dòng)后的訓(xùn)練失敗根因都在預(yù)訓(xùn)練權(quán)重加載這一步。 YOLOv5 的預(yù)訓(xùn)練權(quán)重加載機(jī)制本質(zhì)上是一個(gè)集合交集操作。加載過(guò)程分三步 第一步加載 checkpoint。用 torch.load() 將 .pt 文件反序列化為字典。checkpoint 中通常包含model模型狀態(tài)字典、optimizer優(yōu)化器狀態(tài)、training_results訓(xùn)練歷史、epoch當(dāng)前輪次等。 第二步構(gòu)建當(dāng)前模型。用 cfg 文件yaml 格式的模型結(jié)構(gòu)描述實(shí)例化一個(gè)全新的模型。這個(gè)新模型有自己的參數(shù)字典state_dict keys和參數(shù)形狀。 第三步取交集加載。遍歷 checkpoint 中的每個(gè)參數(shù)鍵值對(duì)檢查兩個(gè)條件條件A鍵名在當(dāng)前模型中是否存在條件B形狀shape是否完全一致。只有兩個(gè)條件同時(shí)滿足才執(zhí)行賦值。如果鍵名不存在或者 shape 不匹配該參數(shù)就被跳過(guò)以當(dāng)前模型的初始化權(quán)重替代。 舉個(gè)例子假設(shè)你在 YOLOv5m 的預(yù)訓(xùn)練權(quán)重基礎(chǔ)上改了檢測(cè)頭的通道數(shù)比如把 3 個(gè) anchor 改成 5 個(gè)。新模型中對(duì)應(yīng)的 head 層參數(shù) shape 發(fā)生了變化checkpoint 中的對(duì)應(yīng)鍵雖然名字相同但 shape 不一致所以這些層不會(huì)被加載而是使用新初始化。匹配的層如 backbone 的大部分參數(shù)則完全繼承了預(yù)訓(xùn)練權(quán)重。 這一機(jī)制的設(shè)計(jì)非常優(yōu)雅它允許你在預(yù)訓(xùn)練權(quán)重的基礎(chǔ)上做結(jié)構(gòu)改動(dòng)而不需要每次都從零訓(xùn)練。具體來(lái)說(shuō) 如果你只改了檢測(cè)頭層head layer而 backbone 不變那么 backbone 的權(quán)重基本可以完全繼承匹配率很高訓(xùn)練收斂會(huì)很快。 如果你改動(dòng)了 backbone 的中間層匹配率會(huì)下降但只要改得不多預(yù)訓(xùn)練收益仍然可觀。 如果你用 YOLOv5m 的權(quán)重去初始化 YOLOv5s 規(guī)模的模型匹配率會(huì)非常低因?yàn)橥ǖ罃?shù)不一致幾乎等同于從零訓(xùn)練。 實(shí)戰(zhàn)操作中加載完成后你應(yīng)該關(guān)注日志中的輸出。YOLOv5 會(huì)在加載完成后打印類(lèi)似這樣的信息 Transfering params [%d/%d] (%.1f%%) ... loaded 這里的百分比就是交集加載的匹配率。如果匹配率低于 80%建議重新評(píng)估結(jié)構(gòu)改動(dòng)是否過(guò)大或者考慮使用更接近目標(biāo)結(jié)構(gòu)的預(yù)訓(xùn)練權(quán)重。 另外還有一個(gè)細(xì)節(jié)加載權(quán)重時(shí)YOLOv5 通常會(huì)先將 checkpoint 加載到 CPU再用 .to(device) 移到目標(biāo)設(shè)備。這種兩步策略比直接加載到 GPU 更穩(wěn)定可以避免某些設(shè)備上因?yàn)?GPU 初始化順序?qū)е碌膯?wèn)題。如果你在自定義推理代碼中遇到權(quán)重加載報(bào)錯(cuò)可以檢查是否遵循了這個(gè)CPU 反序列化 → 再遷移的原則。 五、凍結(jié)訓(xùn)練策略從原理到分階段解凍實(shí)戰(zhàn) ---------------------------------------- 凍結(jié)訓(xùn)練Freeze Training是遷移學(xué)習(xí)中最穩(wěn)定、最常用的技巧之一。它的核心原理很簡(jiǎn)單通過(guò)將指定層的 requires_grad 設(shè)為 False使這些參數(shù)在反向傳播時(shí)不被更新。 freeze 策略的價(jià)值在于三個(gè)方面 第一小數(shù)據(jù)集場(chǎng)景下直接全量訓(xùn)練容易過(guò)擬合凍結(jié) backbone 可以減少需要學(xué)習(xí)的參數(shù)規(guī)模降低過(guò)擬合風(fēng)險(xiǎn)。 第二大數(shù)據(jù)集跨任務(wù)遷移時(shí)backbone 提取的特征通常已經(jīng)有通用性邊緣、紋理、局部形狀等不需要大幅調(diào)整凍結(jié)可以加快收斂。 第三顯存優(yōu)化凍結(jié)層的梯度不需要保存可以顯著減少顯存占用在顯存受限時(shí)可以跑更大的 batch。 YOLOv5 中 freeze 參數(shù)的指定方式是通過(guò)命令行傳入層索引或?qū)用?。例?--freeze 0 10 表示凍結(jié)第 0 層到第 10 層具體對(duì)應(yīng) backbone 的前 11 層。凍結(jié)實(shí)現(xiàn)的核心代碼邏輯類(lèi)似于 for k, v in model.named_parameters(): if int(k.split(.)[1]) freeze_epochs: # 按層索引判斷 v.requires_grad False 注意凍結(jié)和 BatchNorm 的關(guān)系需要額外關(guān)注。凍結(jié)層的 BatchNorm 統(tǒng)計(jì)量均值和方差是固定的來(lái)源于預(yù)訓(xùn)練階段。如果你凍結(jié)了 backbone 但 BN 仍在訓(xùn)練模式下更新統(tǒng)計(jì)量可能會(huì)造成不一致。YOLOv5 中凍結(jié)操作通常也包含了對(duì)應(yīng) BN 層的 eval() 模式切換。 常見(jiàn)的 freeze 策略有以下幾種適用場(chǎng)景各不相同 策略一全凍結(jié)full freeze。所有層都凍結(jié)只訓(xùn)練 head 層。適用場(chǎng)景數(shù)據(jù)集極小幾百?gòu)?、領(lǐng)域差異極大比如用 ImageNet 預(yù)訓(xùn)練權(quán)重去訓(xùn)一個(gè)醫(yī)學(xué)影像檢測(cè)。優(yōu)點(diǎn)是收斂極快缺點(diǎn)是頭部能力受限。 策略二部分凍結(jié)partial freeze。凍結(jié) backbone 前 N 層解凍后 N 層和 head。例如凍結(jié) 0-9 層backbone 的前10層解凍 10 層以后和 head。適用場(chǎng)景小到中等數(shù)據(jù)集、領(lǐng)域有一定差異。這是 YOLOv5 的默認(rèn)做法對(duì)大多數(shù)場(chǎng)景都比較穩(wěn)妥。 策略三分階段解凍gradual unfreezing。第一階段凍結(jié) backbone 只訓(xùn) head第二階段解凍 backbone 后幾層較低學(xué)習(xí)率微調(diào)第三階段全量解凍整體微調(diào)。適用場(chǎng)景中等規(guī)模數(shù)據(jù)集、想最大化預(yù)訓(xùn)練收益。這個(gè)策略被多個(gè)論文驗(yàn)證優(yōu)于一次性全量訓(xùn)練但需要手動(dòng)控制階段切換。 策略四解凍后低學(xué)習(xí)率low-lr fine-tuning。不解凍全部層只以極低學(xué)習(xí)率通常是預(yù)訓(xùn)練 lr 的 1/10 到 1/100微調(diào) backbone 后幾層和 head。適用場(chǎng)景大數(shù)據(jù)集、領(lǐng)域接近的場(chǎng)景如用 COCO 預(yù)訓(xùn)練權(quán)重去訓(xùn)同類(lèi)別的產(chǎn)品檢測(cè)。 判斷何時(shí)該解凍的經(jīng)驗(yàn)法則 觀察 head losscls/obj是否進(jìn)入平臺(tái)期連續(xù) 5 個(gè) epoch 變化小于 1%同時(shí)訓(xùn)練集 loss 仍有下降空間。如果兩者同時(shí)滿足可以嘗試解凍。 解凍時(shí)建議將學(xué)習(xí)率降低為原來(lái)的 1/10同時(shí)打開(kāi) warmup 避免參數(shù)大幅震蕩。 六、輸入尺寸為什么必須是32的倍數(shù) ---------------------------------- 這是 YOLOv5 的高頻面試題也是影響訓(xùn)練穩(wěn)定性和推理一致性的真實(shí)工程約束。 先從下采樣鏈路說(shuō)起。YOLOv5 的 backbone 包含 5 次下采樣操作每次 stride2 的卷積或池化操作都會(huì)將特征圖尺寸減半。所以從輸入圖像到最終特征圖經(jīng)歷了 2^5 32 倍的下采樣。 對(duì)應(yīng)三個(gè)檢測(cè)頭80x80、40x40、20x20 80x80 特征圖對(duì)應(yīng)輸入圖像中每個(gè)格子覆蓋 8x8 像素區(qū)域640/808 40x40 特征圖對(duì)應(yīng)輸入圖像中每個(gè)格子覆蓋 16x16 像素區(qū)域640/4016 20x20 特征圖對(duì)應(yīng)輸入圖像中每個(gè)格子覆蓋 32x32 像素區(qū)域640/2032 這三個(gè)格子尺寸分別對(duì)應(yīng)小目標(biāo)、中目標(biāo)、大目標(biāo)的檢測(cè)。 如果輸入尺寸不是 32 的倍數(shù)會(huì)怎樣假設(shè)你輸入 608x608608/3219可以整除沒(méi)問(wèn)題但如果你輸入 640x500500/3215.625不能整除代碼通常會(huì)做兩種處理 處理方式一自動(dòng) padding。將短邊 pad 到最近的 32 倍數(shù)比如 500 pad 到 512變?yōu)?640x512。但這改變了圖像內(nèi)容的寬高比可能導(dǎo)致目標(biāo)形變降低檢測(cè)精度。 處理方式二報(bào)錯(cuò)或警告。有些配置下會(huì)要求嚴(yán)格對(duì)齊直接報(bào)錯(cuò)。 多尺度訓(xùn)練的場(chǎng)景下這個(gè)問(wèn)題更復(fù)雜。YOLOv5 支持在訓(xùn)練時(shí)隨機(jī)選擇多個(gè)尺度比如 320-640 之間但每個(gè)采樣的尺寸仍然要求是 stride 的倍數(shù)。如果選了一個(gè) 544544/3217可以但選了一個(gè) 576576/3218也可以這兩個(gè)尺度產(chǎn)生的特征圖網(wǎng)格不同分別是 18x18 和 17x17 在 stride32 下網(wǎng)絡(luò)要能正確處理這種變化。 建議的工程實(shí)踐 在數(shù)據(jù)預(yù)處理階段將所有圖像 resize 到統(tǒng)一的 32 倍數(shù)尺寸比如 640x640 或 416x416避免訓(xùn)練和推理時(shí)的隱式 padding 行為。 如果你需要處理任意長(zhǎng)寬比的圖像優(yōu)先使用 letterbox 方式保持寬高比灰色填充到 32 倍數(shù)而不是簡(jiǎn)單的拉伸 resize。 七、優(yōu)化器、學(xué)習(xí)率、EMA、AMP決定訓(xùn)練能不能穩(wěn)住 ------------------------------------------------ 這四個(gè)組件共同決定了訓(xùn)練過(guò)程的穩(wěn)定性和最終模型的泛化能力。下面逐一講解每個(gè)模塊的設(shè)計(jì)原理和調(diào)優(yōu)思路。 7.1 優(yōu)化器選擇與 weight decay 的正確理解 YOLOv5 支持 SGD、Adam 和 AdamW 三種優(yōu)化器默認(rèn)使用 SGDmomentum0.937。為什么默認(rèn)是 SGD 因?yàn)樵诖?batch 訓(xùn)練場(chǎng)景下SGD 的泛化性能通常優(yōu)于 Adam。SGD 通過(guò)動(dòng)量momentum累積歷史梯度方向形成一個(gè)更穩(wěn)定的更新方向適合大規(guī)模目標(biāo)檢測(cè)這種需要強(qiáng)泛化能力的任務(wù)。 Adam 和 AdamW 的優(yōu)勢(shì)在于自適應(yīng)學(xué)習(xí)率每個(gè)參數(shù)有自己的 lr收斂更快但泛化能力有時(shí)不如 SGD。適合小 batch8-16、短訓(xùn)練周期幾十個(gè) epoch、或者數(shù)據(jù)量較小的場(chǎng)景。 weight decay簡(jiǎn)稱(chēng) wd也叫 L2 正則化是優(yōu)化器中一個(gè)容易被誤用的參數(shù)。很多人直接照抄網(wǎng)上的 weight_decay0.0005卻不理解這個(gè)數(shù)值在不同 batch 下代表什么意義。 weight decay 的實(shí)際正則強(qiáng)度和 batch size 以及有效 batch 數(shù)nbsnominal batch size有關(guān)。在 YOLOv5 中effective batch size batch × accumulation_steps而 weight decay 的影響會(huì)被這個(gè)有效 batch 縮放 effective_wd wd × (effective_batch / nbs) 例如如果你把 batch 從 16 改到 64擴(kuò)大 4 倍其他參數(shù)不變那么有效正則強(qiáng)度就增強(qiáng)了約 4 倍。如果你的模型在 batch64 時(shí)出現(xiàn)過(guò)擬合可以適當(dāng)降低 wd而不是改 lr。 7.2 學(xué)習(xí)率調(diào)度warmup 和余弦衰減 warmup預(yù)熱是訓(xùn)練初期的一個(gè)關(guān)鍵階段。在前 N 個(gè) epoch 內(nèi)學(xué)習(xí)率從極低值通常是 lr0 的 1/1000逐步上升到 lr0。這個(gè)設(shè)計(jì)的目的是 訓(xùn)練初期模型參數(shù)是隨機(jī)初始化的或者從預(yù)訓(xùn)練權(quán)重繼承的此時(shí)梯度方向很不穩(wěn)定。如果直接用大學(xué)習(xí)率參數(shù)更新幅度過(guò)大可能直接跳到 Loss 的一個(gè)很差的位置甚至導(dǎo)致發(fā)散。warmup 讓參數(shù)在初期用小步試探逐步建立穩(wěn)定的梯度方向。 warmup 之后通常接余弦退火cosine annealing或者階梯衰減step LR。余弦退火的優(yōu)點(diǎn)是 lr 曲線平滑從 warmup 結(jié)束時(shí)的 lr0 緩慢下降到接近零讓模型在訓(xùn)練末期有充足時(shí)間在 Loss 谷底找到最優(yōu)解。階梯衰減則是在特定 epoch 將 lr 降低一個(gè)比例比如降低到原來(lái)的 1/10適合你想精確控制訓(xùn)練曲線的場(chǎng)景。 調(diào)優(yōu)建議如果你發(fā)現(xiàn)訓(xùn)練初期 loss 波動(dòng)很大發(fā)散或者震蕩可以增加 warmup epoch 數(shù)默認(rèn)是 3 個(gè)。如果你發(fā)現(xiàn)訓(xùn)練后期 loss 平臺(tái)后無(wú)法再下降可以嘗試余弦退火替代階梯衰減。 7.3 EMA穩(wěn)定驗(yàn)證指標(biāo)的利器 EMAExponential Moving Average指數(shù)滑動(dòng)平均維護(hù)一套模型參數(shù)的影子副本。更新公式是 theta_ema decay × theta_ema (1 - decay) × theta_current 其中 decay 通常取 0.9999非常接近1。這意味著 EMA 權(quán)重在每次更新時(shí)只吸收當(dāng)前權(quán)重 0.01% 的變化因此變化非常緩慢。 為什么 EMA 通常帶來(lái)更好的泛化因?yàn)?EMA 本質(zhì)上是一個(gè)時(shí)間平均操作。訓(xùn)練末期的參數(shù)往往在一個(gè)最優(yōu)解附近波動(dòng)直接取最后一個(gè) checkpoint 可能恰好取到了波峰。EMA 通過(guò)平滑抵消了這種高頻波動(dòng)取到的是歷史上多次更新的平均位置通常更接近真實(shí)的最優(yōu)解。 在 YOLOv5 中驗(yàn)證時(shí)默認(rèn)使用 EMA 權(quán)重進(jìn)行推理。保存 best.pt 時(shí)也是 EMA 權(quán)重參與 fitness 計(jì)算。所以你最終拿到的 best.pt 實(shí)際上是 EMA 影子權(quán)重而非訓(xùn)練末期的即時(shí)權(quán)重。 7.4 AMP省顯存提吞吐的正確姿勢(shì) AMPAutomatic Mixed Precision自動(dòng)混合精度的核心是前向傳播用 FP16 計(jì)算節(jié)省顯存和加速梯度更新用 FP32保證精度不損失。 CUDA 的 tensor core 對(duì) FP16 矩陣運(yùn)算做了硬件加速FP16 的矩陣乘法比 FP32 快將近 8 倍取決于具體硬件。同時(shí) FP16 的顯存占用是 FP32 的一半可以跑更大的 batch。 YOLOv5 中的 AMP 通過(guò) torch.cuda.amp.autocast 和 GradScaler 實(shí)現(xiàn)。autocast 自動(dòng)決定哪些操作用 FP16、哪些用 FP32通常卷積用 FP16loss 計(jì)算和梯度更新用 FP32。GradScaler 負(fù)責(zé)在 loss scaling 階段防止 FP16 下的下溢問(wèn)題梯度值太小超出 FP16 表示范圍。 需要注意的風(fēng)險(xiǎn)某些硬件配置老顯卡、驅(qū)動(dòng)版本過(guò)舊下 AMP 可能不穩(wěn)定。如果你在訓(xùn)練中遇到 NaN loss先關(guān)閉 AMP 試試--half False。 八、數(shù)據(jù)管線從 Dataset 到 batch 的完整數(shù)據(jù)流 ----------------------------------------------- 訓(xùn)練數(shù)據(jù)管線是70%的玄學(xué)問(wèn)題所在。理解這一部分的價(jià)值不僅在于排查問(wèn)題更在于知道如何通過(guò)調(diào)整數(shù)據(jù)策略來(lái)提升模型效果。 8.1 Dataset 的職責(zé) YOLOv5 的 Dataset 類(lèi)通常在 utils/datasets.py 中負(fù)責(zé)以下職責(zé) 第一文件索引。遍歷 images 目錄建立圖片路徑列表。同時(shí)在 labels 目錄下查找對(duì)應(yīng)名稱(chēng)的 .txt 標(biāo)簽文件YOLO 格式class_id cx cy w h全部歸一化到 0-1。 第二標(biāo)簽解析。讀取 .txt 文件每行代表一個(gè) GT 框。解析后存儲(chǔ)為 [class_id, cx, cy, w, h] 的列表。 第三圖像加載與預(yù)處理。讀取圖片文件做 resizeletterbox 或簡(jiǎn)單拉伸、通道順序轉(zhuǎn)換BGR→RGB、歸一化/255.0。 第四在線數(shù)據(jù)增強(qiáng)。增強(qiáng)操作在這一步執(zhí)行具體包括 Mosaic、MixUp、幾何變換旋轉(zhuǎn)、平移、縮放、翻轉(zhuǎn)、顏色域增強(qiáng)HSV 調(diào)整、亮度、對(duì)比度等。 8.2 文件命名的常見(jiàn)坑 YOLO 數(shù)據(jù)集有一個(gè)隱式約定images/ 和 labels/ 目錄下的文件名必須完全對(duì)應(yīng)擴(kuò)展名不同。如果文件名出現(xiàn)以下問(wèn)題會(huì)導(dǎo)致找不到標(biāo)簽或找不到圖片的報(bào)錯(cuò) 坑1文件名含有多余空格或隱藏字符。比如 img .jpgimg 和 .之間有空格或者文件名校驗(yàn)時(shí)看起來(lái)正常但實(shí)際含有多余字符。 坑2文件名含有多余點(diǎn)號(hào)。比如 img..jpg兩個(gè)點(diǎn)某些路徑解析邏輯會(huì)截取錯(cuò)誤。 坑3大小寫(xiě)不匹配。Windows 系統(tǒng)文件名大小寫(xiě)不敏感但 Linux 服務(wù)器訓(xùn)練環(huán)境通常大小寫(xiě)敏感。images/ 下是 cat.jpglabels/ 下是 Cat.txt在服務(wù)器上就會(huì)找不到。 坑4圖片和標(biāo)簽擴(kuò)展名不統(tǒng)一。比如圖片用 .JPG大寫(xiě)標(biāo)簽用 .txt小寫(xiě)解析邏輯可能無(wú)法匹配。 建議的工程實(shí)踐寫(xiě)一個(gè)數(shù)據(jù)校驗(yàn)?zāi)_本在訓(xùn)練前檢查所有圖片和標(biāo)簽是否一一對(duì)應(yīng)文件名是否符合規(guī)范。這比訓(xùn)練到一半才發(fā)現(xiàn)數(shù)據(jù)問(wèn)題要高效得多。 8.3 cache 機(jī)制加速加載的雙刃劍 YOLOv5 支持標(biāo)簽 cache 功能。當(dāng)?shù)谝淮渭虞d數(shù)據(jù)集時(shí)程序會(huì)解析所有標(biāo)簽并將結(jié)果緩存到磁盤(pán).cache 文件類(lèi)似 labels_cache.cache.pkl。后續(xù)訓(xùn)練啟動(dòng)時(shí)直接從 cache 文件讀取標(biāo)簽不再重新解析每個(gè) .txt 文件可以大幅加速 Dataset 初始化。 這個(gè)機(jī)制的坑在于如果你修改了標(biāo)簽文件改坐標(biāo)、改類(lèi)別、新增標(biāo)注但 cache 文件沒(méi)有刪除程序會(huì)繼續(xù)讀取舊的 cache導(dǎo)致你改了標(biāo)注但指標(biāo)沒(méi)變化。 正確的做法是每次修改標(biāo)簽后手動(dòng)刪除對(duì)應(yīng)的 .cache 文件?;蛘咴?YOLOv5 中使用 --cache-images disk 參數(shù)將圖片也緩存到內(nèi)存或磁盤(pán)這樣標(biāo)簽修改也必須同步更新 cache。 8.4 collate_fn 與 image index對(duì)齊 batch 的關(guān)鍵機(jī)制 Dataset 返回的是單張圖片及其 GT 標(biāo)簽列表。collate_fn 的作用是把 N 個(gè)樣本通常 N batch size合并成一個(gè) batch 張量。 這個(gè)過(guò)程中最關(guān)鍵的一個(gè)細(xì)節(jié)是 image index圖像索引。GT 標(biāo)簽在拼 batch 時(shí)會(huì)在每條 GT 記錄前插入一個(gè) image index表示該 GT 屬于 batch 中的哪一張圖片。 為什么要這樣做因?yàn)?loss 計(jì)算時(shí)batch 內(nèi)的 N 張圖片是一起前向傳播的輸出是 N 張圖合并的預(yù)測(cè)結(jié)果。計(jì)算 loss 時(shí)必須知道某條 GT 該和 batch 中哪一張圖的預(yù)測(cè)結(jié)果進(jìn)行匹配。如果缺少這個(gè) image indexGT 和預(yù)測(cè)會(huì)錯(cuò)位導(dǎo)致 loss 計(jì)算完全錯(cuò)誤。 這個(gè)細(xì)節(jié)非常適合作為面試表達(dá)素材我不僅知道 YOLO 標(biāo)簽格式是 class_id cx cy w h還知道 batch 拼接時(shí)為什么要加 image index 來(lái)做 GT 與預(yù)測(cè)的對(duì)齊。 九、數(shù)據(jù)增強(qiáng)從原理到實(shí)驗(yàn)順序的全鏈路講解 ------------------------------------------ 數(shù)據(jù)增強(qiáng)是 YOLOv5 訓(xùn)練中最強(qiáng)大也最容易被誤用的模塊。很多人一味疊加增強(qiáng)手段卻不清楚每個(gè)增強(qiáng)的作用邊界和疊加效果最終導(dǎo)致離線指標(biāo)好看但上線效果差。 9.1 為什么增強(qiáng)不是越多越好 數(shù)據(jù)增強(qiáng)的核心目標(biāo)是讓模型在訓(xùn)練時(shí)見(jiàn)過(guò)的分布盡可能接近它在現(xiàn)場(chǎng)推理時(shí)會(huì)遇到的分布。 真實(shí)數(shù)據(jù)集有三個(gè)常見(jiàn)局限樣本有限采集成本高、場(chǎng)景單一白天多、夜晚少、目標(biāo)形態(tài)單一正面多、側(cè)面少。增強(qiáng)是用低成本的圖像變換模擬高成本的真實(shí)場(chǎng)景多樣性。 但如果增強(qiáng)過(guò)度反而會(huì)讓訓(xùn)練分布偏離真實(shí)分布。例如把 mosaic 概率設(shè)到 1.0每張圖都是4張合成同時(shí)把 mixup 也開(kāi)啟每張圖都是多張圖的混合。這會(huì)讓模型長(zhǎng)期處于一種過(guò)度人工的分布中訓(xùn)練學(xué)到的特征不夠貼近真實(shí)單一目標(biāo)最終泛化到真實(shí)場(chǎng)景時(shí)效果反而下降。 所以增強(qiáng)的原則是寧缺毋濫寧可少用有效的也不要濫用全部。 9.2 YOLOv5 增強(qiáng)的執(zhí)行順序非常重要 YOLOv5 中增強(qiáng)的執(zhí)行順序不是隨意排列的理解這個(gè)順序?qū)φ{(diào)試和設(shè)計(jì)增強(qiáng)策略非常關(guān)鍵。以默認(rèn)配置為例mosaic 啟用 第一步Mosaic 拼接。將 4 張圖片及其標(biāo)簽按九宮格方式拼接成 1 張。這張合成圖通常覆蓋了更大的上下文區(qū)域模擬了多目標(biāo)場(chǎng)景。 Mosaic 增強(qiáng)的關(guān)閉方式有兩種方法一是在 hyp.yaml 中將 mosaic 參數(shù)設(shè)為 0方法二是在代碼中將相關(guān)布爾變量置 False。 第二步MixUp 混合。在 mosaic 之后隨機(jī)以一定概率將當(dāng)前圖和另一張圖做加權(quán)混合像素級(jí) blend。對(duì)應(yīng)參數(shù) mixup默認(rèn) 0.0不啟用。當(dāng)你的數(shù)據(jù)集較小、目標(biāo)重疊較多時(shí)開(kāi)啟 mixup 有助于增加多樣性。 第三步幾何變換。包括隨機(jī)旋轉(zhuǎn)-5°到5°、隨機(jī)平移、隨機(jī)縮放。這些變換會(huì)同時(shí)作用于圖像和對(duì)應(yīng)的 GT 框坐標(biāo)。關(guān)鍵要求是幾何變換必須同步變換標(biāo)簽坐標(biāo)否則 GT 和圖像就錯(cuò)位了。 第四步顏色域增強(qiáng)。包括 HSV 空間調(diào)整色調(diào)H、飽和度S、亮度V的隨機(jī)偏移、亮度調(diào)整、對(duì)比度調(diào)整。顏色增強(qiáng)只改變像素值不改變坐標(biāo)因此不需要同步更新標(biāo)簽。 第五步翻轉(zhuǎn)。水平翻轉(zhuǎn)vertical flip是 YOLO 中最常用的翻轉(zhuǎn)方式。翻轉(zhuǎn)概率在 hyp.yaml 中由 fliplr 參數(shù)控制默認(rèn) 0.5。注意YOLO 通常不做垂直翻轉(zhuǎn)因?yàn)榇蠖鄶?shù)拍攝場(chǎng)景中目標(biāo)不會(huì)有上下翻轉(zhuǎn)做垂直翻轉(zhuǎn)反而會(huì)引入錯(cuò)誤的分布。 9.3 常見(jiàn)增強(qiáng)手段及其適用場(chǎng)景 翻轉(zhuǎn)Flip適合對(duì)稱(chēng)目標(biāo)車(chē)輛、行人、商品。不適合不對(duì)稱(chēng)目標(biāo)手勢(shì)識(shí)別中的左右手不能互換。 旋轉(zhuǎn)Rotation小角度旋轉(zhuǎn)±15°適合模擬攝像頭輕微傾斜。過(guò)大的旋轉(zhuǎn)角度如 180°只有在攝像頭可能倒裝的場(chǎng)景下才啟用。旋轉(zhuǎn)后的黑邊處理會(huì)引入干擾區(qū)域需要額外處理。 Mosaic4圖拼接大幅增加 batch 內(nèi)多樣性適合多目標(biāo)檢測(cè)??梢酝瑫r(shí)模擬背景多樣性和多目標(biāo)共現(xiàn)。但 mosaic 會(huì)讓每張子圖變小對(duì)小目標(biāo)的檢測(cè)難度實(shí)際是增加的。 MixUp兩圖混合像素級(jí) blend適合類(lèi)別之間邊界模糊的場(chǎng)景。但會(huì)模糊目標(biāo)的輪廓對(duì)定位精度有一定負(fù)面影響。 HSV 調(diào)整模擬不同光照條件白天/陰天/室內(nèi)/室外。幾乎所有場(chǎng)景都建議保留屬于低成本高收益的增強(qiáng)。 馬賽克Mosaic9 / 九宮格YOLOv5 源碼中有 Mosaic9 的實(shí)現(xiàn)入口。9張圖拼接上下文信息更豐富但標(biāo)簽處理更復(fù)雜對(duì)超密集目標(biāo)場(chǎng)景有一定幫助對(duì)大多數(shù)場(chǎng)景收益不明顯。 Albumentations 擴(kuò)展增強(qiáng)如果需要更多增強(qiáng)手段如雨霧模擬、運(yùn)動(dòng)模糊、色彩空間變換可以接入 Albumentations 庫(kù)。需要注意區(qū)分顏色域增強(qiáng)模糊、壓縮、噪聲只改像素不需改坐標(biāo)幾何增強(qiáng)旋轉(zhuǎn)、透視、縮放必須同步更新 GT 框坐標(biāo)。 9.4 增強(qiáng)實(shí)驗(yàn)的正確順序 建議按以下順序做增強(qiáng)實(shí)驗(yàn)每次只開(kāi)一個(gè)觀察 3-5 個(gè) epoch 的趨勢(shì) 第一步關(guān)閉所有復(fù)雜增強(qiáng)mosaic0、mixup0用最基礎(chǔ)的增強(qiáng)HSV、翻轉(zhuǎn)跑基線。記錄基線的 P/R/mAP。 第二步打開(kāi) mosaicmixup 保持關(guān)閉觀察指標(biāo)變化。mosaic 通常能帶來(lái)明顯收益因?yàn)樵黾恿四繕?biāo)多樣性和背景多樣性。如果收益明顯可以保留。 第三步如果數(shù)據(jù)集較小或類(lèi)別較多打開(kāi) mixupmosaic 保持開(kāi)觀察收益。mixup 通常對(duì)分類(lèi)有幫助對(duì)定位幫助有限。 第四步調(diào)整 HSV 參數(shù)范圍色調(diào)偏移量 H、飽和度偏移量 S、亮度偏移量 V。如果你現(xiàn)場(chǎng)的光照變化劇烈可以擴(kuò)大 HSV 偏移范圍。 第五步調(diào)整翻轉(zhuǎn)概率。如果你的場(chǎng)景中目標(biāo)左右不對(duì)稱(chēng)如手勢(shì)、面部表情降低 fliplr。 十、損失函數(shù)設(shè)計(jì)box/obj/cls 三路平衡實(shí)戰(zhàn) ------------------------------------------ 損失函數(shù)是 YOLOv5 訓(xùn)練中最重要的部分也是最值得深入調(diào)優(yōu)的區(qū)域。YOLOv5 的總損失由三類(lèi)損失加權(quán)求和得到 Total Loss box_loss × λ_box obj_loss × λ_obj cls_loss × λ_cls 其中 λ_box、λ_obj、λ_cls 是由 hyp.yaml 中的 box、cls、obj 參數(shù)控制的權(quán)重項(xiàng)。理解這三路損失的機(jī)制是做有效優(yōu)化的前提。 10.1 box_loss定位質(zhì)量的衡量 box_loss 負(fù)責(zé)衡量預(yù)測(cè)框和 GT 框之間的定位誤差。YOLOv5 從 v5.0 開(kāi)始使用 CIoUComplete IoU作為 box_loss 的核心度量。 回顧一下 IoU 家族的演進(jìn)邏輯 IoU Loss -log(IoU)。直接用兩個(gè)框的重疊程度做損失。當(dāng)兩框完全不重疊時(shí) IoU0無(wú)法反映分離程度梯度消失。 GIoUGeneralized IoU在 IoU 基礎(chǔ)上加入了外接框的懲罰項(xiàng)GIoU IoU - (外接框面積 - 并集面積) / 外接框面積。即使兩框完全分離GIoU 也能反映它們的距離遠(yuǎn)近。 DIoUDistance IoU在 GIoU 基礎(chǔ)上進(jìn)一步加入了中心點(diǎn)距離約束DIoU IoU - (中心點(diǎn)距離2 / 外接框?qū)蔷€2)。這讓收斂更快尤其是框大小接近但中心點(diǎn)錯(cuò)開(kāi)的情況。 CIoUComplete IoU在 DIoU 基礎(chǔ)上再加入寬高比約束CIoU IoU - (中心點(diǎn)距離項(xiàng)) - (寬高比項(xiàng))。同時(shí)優(yōu)化重疊面積、中心點(diǎn)距離、寬高比是目前 YOLO 系列最常用的 box_loss。 理解這個(gè)演進(jìn)邏輯你就知道為什么改 IoU 變體可能帶來(lái)收益不同 IoU 損失對(duì)框的什么方面不夠好的敏感度不同。如果你的檢測(cè)框總是中心點(diǎn)準(zhǔn)確但寬高比不對(duì)CIoU 比 DIoU 更適合如果框總是和 GT 重疊夠但中心點(diǎn)偏得遠(yuǎn)DIoU 是更好的選擇。 10.2 obj_loss目標(biāo)性判斷的置信度學(xué)習(xí) obj_loss 衡量這個(gè)位置有沒(méi)有目標(biāo)的判斷能力。這是一個(gè)二分類(lèi)問(wèn)題本格子是否包含 GT 目標(biāo)的中心點(diǎn)。 正樣本分配規(guī)則GT 框中心點(diǎn)落在哪個(gè) Grid Cell哪個(gè) Grid Cell 對(duì)應(yīng)的 Anchor Box 就是正樣本置信度 target 1。此外如果同一個(gè) GT 和多個(gè) Anchor 匹配通常取 IoU 最高的那個(gè) Anchor 為正樣本。 負(fù)樣本分配規(guī)則不是正樣本但與 GT 的 IoU 超過(guò)某個(gè)閾值的格子為忽略樣本通常 target -1不參與 loss 計(jì)算。其余格子為負(fù)樣本target 0置信度應(yīng)該接近0。 obj_loss 使用 BCE二元交叉熵或者 Focal BCE 計(jì)算。如果啟用 Focal Loss通過(guò) hyp.yaml 中的 cls_pw 參數(shù)控制則用 Focal BCE 替代標(biāo)準(zhǔn) BCE以降低易分類(lèi)負(fù)樣本的影響。 10.3 cls_loss類(lèi)別判斷的分類(lèi)學(xué)習(xí) cls_loss 衡量如果有目標(biāo)它屬于哪個(gè)類(lèi)別的分類(lèi)能力。使用 CE交叉熵或 Focal CE 計(jì)算。 類(lèi)別不平衡時(shí)可以通過(guò) class weights類(lèi)別權(quán)重處理稀有類(lèi)賦予更高的權(quán)重防止被頭部類(lèi)別主導(dǎo)。YOLOv5 的 hyp.yaml 中通常不直接配置 class weights需要在 compute_loss 代碼中啟用通常是一個(gè)可選項(xiàng)。 10.4 多尺度頭損失平衡 YOLOv5 有三個(gè)檢測(cè)頭P3/P4/P5分別對(duì)應(yīng)小目標(biāo)80x80、中目標(biāo)40x40、大目標(biāo)20x20。這三個(gè)頭分別負(fù)責(zé)不同尺度的目標(biāo)大小差異很大直接用同一權(quán)重可能導(dǎo)致某類(lèi)目標(biāo)訓(xùn)練不充分。 多尺度頭損失平衡的調(diào)節(jié)方式在 compute_loss 時(shí)給不同檢測(cè)頭的損失乘以不同的系數(shù)。YOLOv5 源碼中默認(rèn)的平衡系數(shù)是 [4.0, 1.0, 0.4]分別對(duì)應(yīng)小目標(biāo)頭、中目標(biāo)頭、大目標(biāo)頭。 如果你發(fā)現(xiàn)小目標(biāo)漏檢嚴(yán)重可以嘗試提高 P3 頭的權(quán)重比如從 4.0 改到 6.0 或 8.0。 如果你發(fā)現(xiàn)大目標(biāo)檢測(cè)不穩(wěn)定可以適當(dāng)提高 P5 頭的權(quán)重。 10.5 Focal Loss 的作用與拆分策略 Focal Loss 的設(shè)計(jì)目標(biāo)是解決難易樣本不平衡問(wèn)題。在 YOLO 中正樣本目標(biāo)區(qū)域遠(yuǎn)少于負(fù)樣本背景區(qū)域且大量負(fù)樣本是簡(jiǎn)單背景模型已經(jīng)很容易判斷這里沒(méi)有目標(biāo)。如果用標(biāo)準(zhǔn) BCE這些簡(jiǎn)單負(fù)樣本貢獻(xiàn)的損失累積起來(lái)會(huì)淹沒(méi)正樣本的梯度。 Focal Loss 的公式FL(p_t) -α_t × (1 - p_t)^γ × log(p_t) 其中 (1-p_t)^γ 是調(diào)制因子。當(dāng)樣本容易分類(lèi)時(shí)p_t 接近 1調(diào)制因子趨近于 0大幅降低易樣本的損失貢獻(xiàn)當(dāng)樣本難以分類(lèi)時(shí)p_t 接近 0調(diào)制因子接近 1損失基本不變讓模型繼續(xù)聚焦于難樣本。 工程上有一個(gè)非常有價(jià)值的拆分策略先關(guān)注 obj目標(biāo)檢出再關(guān)注 cls類(lèi)別分類(lèi)。具體做法是 第一階段obj_loss 用 Focal BCEcls_loss 用普通 BCE。優(yōu)先保證能檢出來(lái)分類(lèi)交給第二階段。 第二階段在基線穩(wěn)定后將 cls_loss 也切換為 Focal CE強(qiáng)化分類(lèi)能力。 這種拆分策略適合漏檢代價(jià)高、誤分類(lèi)代價(jià)相對(duì)低的業(yè)務(wù)場(chǎng)景如安監(jiān)、質(zhì)檢。 10.6 IoU 變體替換的實(shí)驗(yàn)方法 替換 IoU 變體CIoU→DIoU→SIoU→EIoU 等是 YOLOv5 調(diào)優(yōu)中一個(gè)經(jīng)常被提到的手段但很多人替換后沒(méi)有觀察到收益原因是實(shí)驗(yàn)方法不對(duì)。 正確的做法是單因素替換 有對(duì)照。每次只替換 IoU 變體固定其他所有參數(shù)lr、batch、增強(qiáng)、權(quán)重初始化跑至少 20-30 個(gè) epoch記錄完整曲線。不同 IoU 變體的收斂速度不同短期內(nèi)可能看不出差異但長(zhǎng)期訓(xùn)練后可能有顯著差異。 SIoUSCYLLA-IoU是近年來(lái)提出的新變體引入了Angle cost和Distance cost的重新設(shè)計(jì)在某些數(shù)據(jù)集上比 CIoU 收斂更快。EIoU 則進(jìn)一步拆分了寬高比損失項(xiàng)在目標(biāo)形狀多樣的數(shù)據(jù)集上可能更有效。 十一、驗(yàn)證與 best.pt 保存機(jī)制 ------------------------------ 很多人把 best.pt 等同于某個(gè)指標(biāo)最高的 epoch這是一個(gè)常見(jiàn)的誤解。理解 best.pt 的保存機(jī)制對(duì)正確評(píng)估模型效果和制定保存策略至關(guān)重要。 11.1 fitness 綜合評(píng)分機(jī)制 YOLOv5 的 best.pt 不是按單個(gè)指標(biāo)保存的而是按 fitness適應(yīng)度綜合評(píng)分決定。fitness 是一個(gè)加權(quán)組合典型的計(jì)算方式是 fitness 0.1 × P 0.9 × mAP0.5:0.95 或者更復(fù)雜的變體 fitness w1 × P w2 × R w3 × mAP0.5 w4 × mAP0.5:0.95 其中 w1、w2、w3、w4 是權(quán)重參數(shù)可以在源碼中修改。權(quán)重的設(shè)計(jì)反映了什么對(duì)你更重要 如果你更看重查全率Recall可以提高 R 的權(quán)重防止模型為了追求高精度而漏檢。 如果你更看重高精度Precision可以適當(dāng)降低 Recall 的權(quán)重。 如果你在 COCO 格式數(shù)據(jù)集上評(píng)測(cè)mAP0.5:0.95 是最重要的指標(biāo)建議給它最高權(quán)重。 這就解釋了為什么最高 Recall 未必是 bestRecall 最高的那一輪可能 Precision 很低導(dǎo)致綜合 fitness 并不是最高的。 11.2 業(yè)務(wù)目標(biāo)映射到 fitness 權(quán)重 不同的業(yè)務(wù)場(chǎng)景對(duì) P/R 的偏好不同 場(chǎng)景一醫(yī)療影像輔助診斷。漏檢假陰性可能導(dǎo)致重大風(fēng)險(xiǎn)此時(shí)應(yīng)該降低 fitness 中 Recall 的權(quán)重閾值或者單獨(dú)設(shè)置Recall 優(yōu)先的保存規(guī)則。寧可多報(bào)一些可疑區(qū)域Precision 降低也不要漏掉真正的病灶。 場(chǎng)景二商品識(shí)別計(jì)數(shù)。需要精準(zhǔn)計(jì)數(shù)誤檢假陽(yáng)性會(huì)直接導(dǎo)致計(jì)數(shù)錯(cuò)誤此時(shí)應(yīng)該更看重 Precision。可以適當(dāng)犧牲一些 Recall。 場(chǎng)景三通用目標(biāo)檢測(cè)監(jiān)控、安防。沒(méi)有明顯的 P/R 偏好使用默認(rèn)的 fitness 權(quán)重組合通常就是最優(yōu)選擇。 11.3 驗(yàn)證閾值對(duì)指標(biāo)觀感的影響 YOLOv5 驗(yàn)證時(shí)會(huì)使用 conf_thres 和 iou_thres 兩個(gè)閾值 conf_thres置信度閾值只保留置信度高于此值的預(yù)測(cè)。設(shè)得越高Precision 越高但 Recall 越低。 iou_thresNMS 閾值NMS 時(shí) IoU 超過(guò)此值的框會(huì)被抑制。設(shè)得越低重復(fù)框越少但可能誤刪重疊目標(biāo)。 這兩個(gè)閾值的選擇直接影響驗(yàn)證指標(biāo)。實(shí)戰(zhàn)建議做橫向?qū)Ρ葘?shí)驗(yàn)時(shí)所有模型的驗(yàn)證閾值必須完全一致包括 conf_thres 和 iou_thres否則對(duì)比結(jié)論不可靠。 通常 mAP0.5 是最魯棒的指標(biāo)因?yàn)樗辉u(píng)估 IoU0.5 下的 P/R 曲線下面積對(duì)閾值選擇的敏感性低于 mAP0.5:0.95它評(píng)估 IoU 從 0.5 到 0.95 的平均值。 十二、排錯(cuò)清單從現(xiàn)象到根因的系統(tǒng)定位 ------------------------------------- 本節(jié)整理了 YOLOv5 訓(xùn)練中最常見(jiàn)的四類(lèi)問(wèn)題及其完整排查路徑。 12.1 問(wèn)題一參數(shù)改了但指標(biāo)沒(méi)變化 排查步驟 第一步檢查啟動(dòng)日志中的最終生效參數(shù)。在訓(xùn)練開(kāi)始時(shí)會(huì)打印 opt 字典確認(rèn)關(guān)鍵參數(shù)batch、imgsz、lr、weight_decay、增強(qiáng)開(kāi)關(guān)是否和預(yù)期一致。 第二步如果使用了 resume檢查 opt.yaml 是否覆蓋了你的修改。打開(kāi) run/expN/opt.yaml對(duì)比其中的參數(shù)和你的預(yù)期。 第三步如果修改的是 hyp.yaml增強(qiáng)參數(shù)確認(rèn)訓(xùn)練時(shí)是否真的讀取了這個(gè)文件。可以在 hyp.yaml 中加一個(gè)唯一的注釋比如加一行 # DEBUG_TEST_001然后確認(rèn)訓(xùn)練日志中是否出現(xiàn)了這個(gè)注釋。 第四步如果以上都沒(méi)問(wèn)題檢查代碼緩存如果有 .pyc 文件或 __pycache__ 目錄可能運(yùn)行的是舊代碼。執(zhí)行 rm -rf __pycache__ 清理后再試。 12.2 問(wèn)題二改了標(biāo)簽但指標(biāo)不變 排查步驟 第一步檢查 .cache 文件是否仍然存在。如果存在刪除它并重新啟動(dòng)訓(xùn)練。 第二步抽樣可視化。用 YOLOv5 自帶的 plot_val_results.py 或者手動(dòng)寫(xiě)一個(gè)腳本來(lái)可視化 GT 框確認(rèn)標(biāo)簽是否正確讀取。 第三步檢查圖片和標(biāo)簽的對(duì)應(yīng)關(guān)系。確認(rèn) images/ 下的圖片文件名和 labels/ 下的標(biāo)簽文件名完全一致注意擴(kuò)展名。 第四步確認(rèn) Dataset 的 cache 參數(shù)設(shè)置。如果使用了 --cache-images確保圖片和標(biāo)簽的 cache 都刷新了。 12.3 問(wèn)題三自寫(xiě)推理結(jié)果和官方推理差距大 排查步驟 第一步預(yù)處理一致性排查。這是差距最大的來(lái)源。檢查顏色通道順序YOLO 用 RGBOpenCV 默認(rèn) BGR、歸一化系數(shù)/255.0 還是 /255 還是 /1、resize 方式letterbox 保持寬高比 vs 直接拉伸、padding 顏色BGR 還是 RGB值是多少。 第二步后處理一致性排查。檢查 conf_thres 和 iou_thres 是否一致。檢查 NMS 實(shí)現(xiàn)是否和 YOLOv5 的 torchvision.ops.nms 等價(jià)注意 YOLOv5 的 NMS 做了多類(lèi)別處理不是直接調(diào)用單類(lèi)別 nms。 第三步模型加載確認(rèn)。檢查加載 best.pt 時(shí)是否正確切換到 eval 模式model.eval()。檢查是否漏了 .float() 或 .half()如果官方用 FP16你用 FP32數(shù)值精度差異可能累積。 第四步輸出張量解析。YOLOv5 的輸出是 [batch, 3, 85, H, W]不是 [batch, 85, H, W, 3]確認(rèn)你解析輸出張量的 reshape 順序是否正確。 12.4 問(wèn)題四訓(xùn)練 loss 發(fā)散或劇烈抖動(dòng) 排查步驟 第一步梯度爆炸檢測(cè)。在訓(xùn)練循環(huán)中加入梯度范數(shù)打印torch.nn.utils.clip_grad_norm_。如果 grad_norm 超過(guò) 100通常說(shuō)明梯度爆炸。處理方法調(diào)低學(xué)習(xí)率lr0 降低 5-10 倍或者打開(kāi)梯度裁剪YOLOv5 中可用 --gr 等參數(shù)控制。 第二步學(xué)習(xí)率是否過(guò)高。觀察第一個(gè) epoch 的 loss 曲線。如果第一個(gè) epoch loss 就非常高比如超過(guò) 10說(shuō)明 lr 過(guò)高。YOLOv5 默認(rèn) lr00.01SGD對(duì)于小 batch 或小模型來(lái)說(shuō)可能過(guò)高可以嘗試 0.001。 第三步增強(qiáng)是否過(guò)強(qiáng)。關(guān)閉 mosaic 和 mixup只用基礎(chǔ)的 HSV 和翻轉(zhuǎn)看 loss 曲線是否恢復(fù)正常。如果恢復(fù)正常說(shuō)明增強(qiáng)強(qiáng)度超過(guò)了模型當(dāng)前能力的接受范圍。 第四步batch size 與 weight decay 的配合。減小 batch 后如果訓(xùn)練變得不穩(wěn)定檢查 weight_decay 是否需要同比降低參考 effective_wd 的計(jì)算公式。 十三、推薦實(shí)驗(yàn)順序一次只改一個(gè)核心因素 ------------------------------------- 做 YOLOv5 優(yōu)化時(shí)最大的浪費(fèi)是同時(shí)改了很多東西然后說(shuō)不清哪個(gè)有效。下面的實(shí)驗(yàn)順序是經(jīng)過(guò)驗(yàn)證的高效優(yōu)化路徑每次只改一個(gè)核心因素確保你能準(zhǔn)確定位每個(gè)改動(dòng)的收益。 第一階段數(shù)據(jù)正確性驗(yàn)證基石。在開(kāi)始任何優(yōu)化之前必須確認(rèn)數(shù)據(jù)本身沒(méi)問(wèn)題。操作跑 1-2 個(gè) epoch 的訓(xùn)練然后可視化 10-20 張樣本的 GT 框用 YOLOv5 自帶的 plot_labels 或手寫(xiě)腳本。檢查GT 框是否畫(huà)在正確位置、類(lèi)別標(biāo)簽是否和圖片內(nèi)容一致、圖片讀取是否正常。如果數(shù)據(jù)有問(wèn)題優(yōu)化一切都白搭。 第二階段可信基線建立。這一步的目的是在最干凈的條件下獲得一個(gè)基準(zhǔn)指標(biāo)用于后續(xù)對(duì)照。操作關(guān)閉 mosaic、關(guān)閉 mixup、增強(qiáng)只保留基礎(chǔ)的 HSV 和水平翻轉(zhuǎn)跑完一個(gè)完整的訓(xùn)練周期通常 300 epochs記錄 best.fitness 和對(duì)應(yīng) epoch。增強(qiáng)越少離線指標(biāo)通常越好看因?yàn)橛?xùn)練難度降低了但泛化能力未必最好。所以基線的意義在于基準(zhǔn)而不是最優(yōu)。 第三階段增強(qiáng)逐項(xiàng)恢復(fù)。每隔 3-5 個(gè) epoch 開(kāi)啟一個(gè)新的增強(qiáng)手段記錄每個(gè)增強(qiáng)單獨(dú)帶來(lái)的變化。比如 baseline只有 HSV flip → mosaic → mixup → augment 的其他選項(xiàng) 通過(guò)這個(gè)過(guò)程你會(huì)知道每個(gè)增強(qiáng)在你的數(shù)據(jù)集上帶來(lái)的真實(shí)收益是正還是負(fù)。 第四階段損失權(quán)重調(diào)優(yōu)。觀察哪個(gè)尺度小/中/大目標(biāo)的 AP 最低針對(duì)性地調(diào)高對(duì)應(yīng)檢測(cè)頭的損失權(quán)重。比如 P3 (80x80) 的 AP 明顯低于其他兩個(gè)就將對(duì)應(yīng)權(quán)重從 4.0 改到 6.0 再到 8.0觀察 5 個(gè) epoch 的趨勢(shì)。 第五階段IoU 變體和 Focal 策略。如果基礎(chǔ)優(yōu)化都已做完、指標(biāo)仍有提升空間可以嘗試替換 IoU 損失CIoU→DIoU→SIoU→EIoU和 Focal Loss 的拆分策略。每次替換后跑 20-30 個(gè) epoch 觀察長(zhǎng)期趨勢(shì)。 第六階段fitness 規(guī)則校準(zhǔn)。根據(jù)業(yè)務(wù)目標(biāo)重新設(shè)定 fitness 權(quán)重組合確保 best.pt 的保存邏輯和驗(yàn)收標(biāo)準(zhǔn)一致。比如業(yè)務(wù)更關(guān)心 Recall就把 fitness 中 Recall 的權(quán)重調(diào)高。 第六步之后你就有了一個(gè)完整對(duì)照的實(shí)驗(yàn)記錄可以寫(xiě)報(bào)告、寫(xiě)論文、或者做下一步優(yōu)化規(guī)劃。 十四、面試與匯報(bào)的表達(dá)升級(jí)從會(huì)調(diào)參到會(huì)優(yōu)化 ----------------------------------------------- 能清晰表達(dá) YOLOv5 訓(xùn)練鏈路和優(yōu)化思路是區(qū)分調(diào)參工程師和算法工程師的重要標(biāo)志。下面給出幾套可直接使用的表達(dá)模板。 模板一適用于面試算法崗 我做過(guò) YOLOv5 的系統(tǒng)性?xún)?yōu)化核心思路是鏈路診斷 單變量實(shí)驗(yàn)。具體來(lái)說(shuō)我會(huì)在訓(xùn)練初期先固定數(shù)據(jù)正確性標(biāo)簽、cache、增強(qiáng)然后關(guān)閉復(fù)雜增強(qiáng)建立基線再逐項(xiàng)恢復(fù)增強(qiáng)觀察單變量收益。在損失優(yōu)化階段我會(huì)先分析多尺度頭的 AP 分布針對(duì)性調(diào)整頭部損失權(quán)重。IoU 變體替換和 Focal 策略則放在最后做長(zhǎng)期對(duì)照實(shí)驗(yàn)。 模板二適用于晉升答辯或項(xiàng)目匯報(bào) 本次 YOLOv5 訓(xùn)練的優(yōu)化工作分為三個(gè)層面數(shù)據(jù)層面通過(guò)增強(qiáng)逐項(xiàng)恢復(fù)實(shí)驗(yàn)確定 mosaicHSV 是對(duì)我們數(shù)據(jù)集收益最高的組合損失層面通過(guò)頭部損失平衡調(diào)整將小目標(biāo) AP 提升了 X%工程層面通過(guò) fitness 規(guī)則重設(shè)確保 best.pt 保存邏輯與業(yè)務(wù)驗(yàn)收標(biāo)準(zhǔn)一致。 模板三適用于描述具體問(wèn)題的診斷過(guò)程 當(dāng)發(fā)現(xiàn)訓(xùn)練 loss 抖動(dòng)后我依次排查了梯度范數(shù)排除爆炸、學(xué)習(xí)率從 0.01 降到 0.001、增強(qiáng)強(qiáng)度關(guān)閉 mosaic 后恢復(fù)穩(wěn)定、weight decay 縮放batch 從 16 改到 64 后降低了 wd。最終通過(guò)梯度裁剪和降低 wd 的組合解決了問(wèn)題并驗(yàn)證了在更大 batch 下模型收斂更穩(wěn)定mAP 提升了約 X%。 這類(lèi)表達(dá)的核心是說(shuō)清楚現(xiàn)象→排查→假設(shè)→實(shí)驗(yàn)→結(jié)論的完整過(guò)程而不是只給我改了什么參數(shù)、結(jié)果變好了。 十五、最終總結(jié) ------------ YOLOv5 訓(xùn)練源碼學(xué)習(xí)的真正價(jià)值不在于背函數(shù)名而在于建立三個(gè)能力 第一個(gè)能力鏈路視角。能說(shuō)出參數(shù)從哪來(lái)到哪去能定位任何訓(xùn)練異常到具體模塊能解釋為什么這個(gè)參數(shù)這樣設(shè)置。 第二個(gè)能力系統(tǒng)優(yōu)化。不是調(diào)一個(gè)參數(shù)等結(jié)果而是有計(jì)劃地建立基線、逐項(xiàng)實(shí)驗(yàn)、記錄對(duì)照最終用數(shù)據(jù)說(shuō)服自己和他人這個(gè)改動(dòng)有效。 第三個(gè)能力工程閉環(huán)。能從訓(xùn)練到推理全鏈路保持一致性預(yù)處理/后處理/閾值能設(shè)計(jì)符合業(yè)務(wù)目標(biāo)的 fitness 規(guī)則能用排錯(cuò)清單快速定位問(wèn)題根因。 當(dāng)你同時(shí)具備這三個(gè)能力你就已經(jīng)不是會(huì)跑 YOLO了而是會(huì)優(yōu)化 YOLO。這才是技術(shù)深水區(qū)的核心競(jìng)爭(zhēng)力。 完
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日日爽天天| 久久AV无码精品人妻系列试探| 99热99思午夜精品| 婷婷丁香在线| 99热在线精品观看| 色月丁| 婷婷五月婷婷| 一区二区成人电影| 在线观看欧美| 天天色噜| 丁香五月婷婷香| 婷婷六月开心网| 91久久99久久91熟女精品| 国产色色色色色| 丁香六月婷婷综情欧美| 91婷婷色| 色吧五月婷婷| 欧美天堂久久| 日韩人妻无码精品| 超碰91人人操| 九九热欧美| 超碰99成人在线| 亚洲精品久久久久久久久久吃药| www.色婷婷| 亚洲成人高清在线| www狠狠| 婷婷五月天AV在线| 9月色婷婷| 毛片色五月| 欧美激情2025| 色五婷婷| 国产va视频| 五月婷婷婷婷婷| 色五月激情五月丁香五月婷婷啪啪综合 | 色很很96| 色激情综合狠狠婷婷| www.91.com黄| 久久婷婷青草五月天| 丁香六月婷婷综合欧美| 99re热在线视频| 91日视频| 天天色月| 九九视频热| 婷婷五月 丁香六月| 婷婷五月天丁香花| 五月熟妇婷婷久久| 影音先锋人妻出差| 日韩欧美一级大黄网站| 六月丁香五月婷婷| 色色色欧美| 91综合国免费久入| 天天色情站| 婷婷激情四射| 亚洲精品第一国产综合亚AV | 久久综合婷婷五月| 五月久久五月激情| 亚洲 小说 欧美 激情 另类| 亚洲五月天婷婷| 六月丁香久久| 人人操AV| 亚洲国产精品二二三三区| 91男同视频| 狠狠干.com| 久久婷婷五月综合色区| 亚洲天99| 五月丁香五月激情综合色综合| 五月婷婷丁香五月亚洲色| 99热在线里有精品| 激情五月婷婷开心网| 99热免费看| 婷婷亚洲五月| 激情六月天| 久久综合九九| 99少妇精品| Www99热| 黄网网站在线播放| 思思久久96热在精品国产,| 99精品爱| 婷婷五月天影院| 综合色播| 日韩婷久| 久久五月天婷婷| 五月天大香蕉| 久久aaaaa| 國語久久婷| 亚洲日韩人妻操逼| 天堂网啪啪| 人人干av| 亚洲无码激情| 婷婷热婷婷色| 久超超碰| 日本97在线观看| 激情综合色图| av性爱在线| 五月丁香操婷逼| 激情第四色| 91碰免费视频| 色色色视频免费无码 | 我去色色网五雨天| 天天添天天摸天天天天做| 丁香六月婷婷综合啪啪| 国产成人网| 91热视频| 沈娜娜av| 九九成人高清视频| 久人操| 中文激情网| chaopeng在线人人| 婷婷六月丁香色| 色欲婷婷五月天丁香| 裸体做A爰片毛片A片免费| 六月丁香婷婷综合影院| 婷婷五月天性| 涩涩五月天| 成片免费观看大全| 麻豆123区| 91热99| 久99久视频精品| 日韩人妻无码专区| 综合色影院| 亚洲乱码日产精品BD| 国产免费av在线| 久久综合热17c| 五月丁香香蕉| 丁香六月婷婷| 中文字幕丰满乱孑伦无码专区| PORNY九色9l自拍视频成人| 激情综合六月| 超碰成人公开| 白天AV月月| 亚洲中文av| 久久全色| 婷婷丁香五月激情| 色色色五月天激情资源| 婷婷激情丁香六月| 老师高潮流白浆喷水的A片| www色色色com| 无码任你操| 欧美婷婷丁香五月| 婷婷六月综合激情| 99re视频在线| 夜夜骑天天操| 日韩视频女神99| 丁香色五月婷婷91桃色| 超碰人人摸人人操| 天天色官网| 亚洲亚洲人成综合网络| 91dy.av| 高清无码入口| 九九视频精品这里只有| 开心五月色婷婷综合开心网| 色婷婷丁香五月高清在线| 激情九月综合| 91色婷婷综合久久中文字幕二区| 久久综合中文| 91欧美| 欧美精产国品一二三区| 五月婷啪| 五月丁香成人网| 日韩综合天堂| 狠狠干天天内射| 婷婷色网站| 人妻久热| 狠狠色婷婷| 亚洲国产成人在线| 五月天婷婷基地| 激情五月深爱五月| 国产69久久久欧美黑人A片| 久久小视频免费| 99这里有精品| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 色约约视频一区二区三区四区五区| 丁香婷婷六月天| 欧美日韩成人| 六月婷婷九月丁香亚洲综合| 五月婷婷六月综合| 久碰视频| 色五月天天| 丁香五月花| 大伊久久| 欧美VA视频| 久草视频一,二三四| 国产综合婷婷| 色色综合网站| 人人爽欧美婷婷久久久五月丁香| 伊人久久大香线蕉av一区| 色99热| 伊人超碰| 亚洲天堂婷婷丁香| 丁香五月影院| av婷婷丁香 六月| 色综合五月天| 色色色色av色色色色| 大香婷婷| 99九九久久| 色天天综合色| 亭亭五月基地在线| 色五月婷婷网| 月婷婷婷婷五月| 色欲五月婷婷| 欧美丰满熟妇BBB久久久| 99人人操人人摸| 伊人热婷婷| 四虎成人精品永久免费AV九九| 99er这里只有精品| 丁香五月 激情文学| 亚洲精品国产setv| 都市激情小说婷婷| 婷婷爱在线观看| 日日影院 | 激情五月天小说| 色99网| 国产肥白大熟妇BBBB视频| 亚洲色无码| 久久丁香五月| 日韩熟女啪啪视频| 五月婷婷六月丁香在线| 2025色婷婷| 婷婷五月天成人导航| 极骚大香蕉伊人| 射久久丁香五月| 五月丁香色婷婷伊人| 色色999三级片| 大香蕉精品视频| 五月激情婷婷播播网| 色色色色色五月丁香| 99热色精品| 婷婷五月中文在线视频| 婷婷5月天激情综合| 日本欧特黄色刺激一区影视久精品无码| 91丨九色丨43老版熟女| 五月婷婷片| 综合五月丁香久久| 色婷婷婷婷| 一本到不卡高清DVD| 大香蕉婷婷色| 久久丁香五月天| 新99色色色色色色| 丁香五月婷婷啪| 九九精品丁香花| 99热这里只有精品22| 五月天激情啪啪| 国产乱码久久| 欧美日朝成人| 色五月婷婷影院| 国产乱轮一区二区三区| 午夜成人片400| AV九九| 可以直接看的av| 五月天影院婷婷在线观看| av久热| 一级性爱大片| 色吊操色妞| 中文字幕网伦射乱中文| 婷婷五月天开心网| 色五月激情综合网| 色五月天丁香| 五月色丁香| 久久少妇视频| 激情亚洲网| 婷婷四色五月| 热久久66| 五月丁香伊人网| j久久性爱视频| 91凹凸在线| 亚洲啪啪精品| 日韩成人电影Av| 久9综合| 538在线精品| 色欲久久综合| 99热国品| 婷婷五月丁香第四色超碰在线| 91色婷婷综合久久中文字幕二区| 五月丁香婷婷综合| 九九在线视频| 99原创自拍视频在线观看| 五月丁香色色网| 亚洲欧美成人在线| 色色色网站| 婷婷色五月天在线| 色五月婷婷综合| 日日噜噜夜夜狠狠久久丁香六月| 色欲久久综合| www.色婷婷| 五月色影院| 色婷操逼| 久色资源| 偷偷与邻居做爰完整视频| 婷婷五月天av| 亚洲成人AV电影在线| 粉嫩AV久久一区二区三区| 五月天婷婷影院| 天天做天天爱| 五月婷婷丁香91| 亚洲欧美综合7777色亭亭| 狠狠干.com| 九月丁香八月婷婷加勒比| 亚洲成人AV电影在线| 成人综合网站| 欧在线一区| 九九精品碰| 国产视频福利| 日韩色色小视频| 美妞av| 九月婷婷综合八月丁香在线观看| 五月开心激情网| 亚洲 五月 婷婷 成人| 五月天婷婷在线播放免费| 99er热精品视频| 五月天啪啪啪| www.天天干| 五月激情在线| 久草视频大香蕉99| 91avse| 思思99精品视频在线观看| 五月丁香 啪啪啪| 成人精品99| 人妻久久久久久久| 久久只有18视频| 五月天婷婷影院| 五月天婷婷青青草| 九九色色网| 五月天婷婷日日爱| 久久精品只有这| 九九大香蕉黄色影院| 色爱亚洲| 久久五月天丁香花| 婷婷五月丁香基地在线视频官网| 丁香激情婷婷网| 丁香六月婷婷五月婷婷| 国产精产国品一二三在观看| 另类丁香综合| 九九热10| 类似婷婷激情综合网站| 欧美私人家庭影院| 一区二区免费看| 精品国产人人爱人人| 国产精品视频久久99| 五月婷婷激情日本| 激情AV网| 五月婷婷色影院| 成人色情五月天婷婷丁香| 五月色丁香视频精品| 五月婷婷无码| 久久99免费视屏| 99综合| 天天天摸夜夜夜玩| 五月丁香啪啪网| 9在线9在线婷婷在线国产| av在线免费播放| 影音先锋人妻出差| 久热免费视频| 丁香五月婷婷激情四射| 丁香婷婷色五月合集| 久久婷五月综合| 国产午夜精品一区二区三区四区| 91尤物九色在线| 另类小说五月天激情| 日亚二欧美| 成人午夜天| 美女黄频aⅴ视频| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 久99久热| 热久久99热欧美国产亚洲| 99色网站| 丁香婷婷五月天激情四射| 99热精品6| 久久婷婷亚洲| 97狠狠色| 日本在线99| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 久久综合这里只有精品1| 丁香五月播播| 婷婷狠狠综合网入口| 色婷五月| 超碰9| 97se在线视频| 五月天电影网| 夜夜嗨一区二区三区直播内容 | 婷婷香蕉视频| 六月丁香好婷婷| 丁香五月婷婷在线| 9 1超碰九色| 激情五月婷婷五月丁香五月开心五月| 日韩青青| 丁香五月婷婷乱| 九九热在线精品视频| 色在线99| 深爱五月婷婷| 狠狠久久婷婷| 婷婷五月情| 色啪久| 天天爱天天做综合| 少妇性BBB搡BBB爽爽爽视頻| 五月丁香亭亭| Xx色综合| 涩五月婷婷| 啪啪色激情五月天| 天天干夜晚夜操| 人妻久久婷婷| 久色网址| 五月婷婷性爱| 激情婷婷五月| 五月激情六月| 亚洲乱码日产精品BD| 婷婷激情五月天7| 超碰久热| 五月婷婷新网站| 亚洲欧美婷婷五月色综合| 色久影院| 超碰AV在线| 99精品久久久久久久婷婷| 九月av| 日韩欧美老妇性视频91久久久| 婷婷五月亚洲一本在线丁香| 亚洲av无码精品色午夜| 国产在线黄色| 狠狠色丁香久久久婷| 欧美va在线| 五月丁香色情| 欧美顶级少妇做爰HD| 插插插色综合网| 成人超碰网| 严洲天天插| 丁香五月婷婷天激情| 五月天婷婷黄色| 中文字幕操比影片| 免费看欧美成人A片无码| 五月天激情啪啪| 五月色丁香| 亚洲综合久| 996er热| 青青夜夜狠狠夜夜狠狠| 五月天婷婷偷拍| 热思思| 色婷亚洲五月丁香| 这里只有精品免费| 天天爽综合| 91色色色视频| 99热老网站| 国产精品久久久99视频| 色九四色| 久热91精品| 人人爽在线视频综合网| 97超碰色| 色五月婷婷综合| 五月天色婷婷小说| 久久久欧美精品sm网站| 欧美成人精品A片免费一区99| 思思热性操| 婷婷激情综合色五月久久91| 性爱综合网| caopeng97日韩| 免费观看高清无码| 久久久久久欧美精品se一二三四| 伊人网色婷婷五月天| 91丨九色|PRNY熟妇| 亚洲操b| 激情丰满熟妇五月| 69久久99精品久久久久婷婷| 国产又黄又爽又色的免费| 一级操逼内射在线视频| 亚洲婷婷在线播放十月| 激情婷婷99| 中文字幕在线免费观看视频| aaa日韩| 激情AV在线| 欧美内射AAAAAAXXXXX| 九九热这里| 日韩色色小视频| 久久久久久久,99精品视频| 美欧日韩国产成人在战| 五月激情综合深爱| 18av天堂| 五月天丁香综合久久国产| 99在线精品视频| 日本婷婷| 天天爽天天透天天爱| 91九色国产在线| 色哟呦av| 久久99热这里只频精品6学生| 99热久久这里只有精品2010| 五月婷婷六月丁| 丁香五月黄色| 日韩二区搞逼插逼毛片| 97色色视频| 狠狠操狠狠操AV| 天天爱天天做天天舔| 五月婷婷,狠狠操| 操操操B| 久久婷婷五月天| 五月婷婷人妻| 亚洲99手机免费看视频 | 99九九玖玖| 开心五月丁香啪| 久草五月| 最新久久网址| 狠狠色狠狠爱| 91a片爽| 成人短视频在线观看| 外国碰视频网站97| 天天干天天干天天干天天干天天干| 五月天婷婷丁香花| 激情五月天在线观看婷婷| 五月婷婷黄| 婷婷六月激情综合| 国产精产国品一二三在观看| 99久在线精品99re8热| 丁香五月影视| 欧美性爱中文字幕| 色色无码| 久9热视频| 色99网站| 泰州成人视频| 丁香五月六月综合激情| 色婷婷视频在线| 亭亭社区五月天| 五月天欧美 另类小说| 日韩免费乱轮网站| 天天爽爽日日做做| 99噜噜噜在线播放| 亚洲综合激情五月天婷婷| 97香蕉久久超级碰碰高清版| 色欧美影院| 久久人五月| 中文字幕天天干| 国产探花一片区| 大香蕉丁香婷婷| 超碰婷婷色| 天天躁日日躁狠狠躁日日躁2022年5月9日| 亚州美女| 丁香婷婷AV| 日韩青青| 日本9区视频| WWW、日本色丁香、co m| 97超级啪啪在线观看| 亚洲激情四射色| 色六月 婷婷| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 深爱激情五月婷婷| 天堂五月婷婷| 久久精品婷婷| 五月丁香在线| 免费看欧美成人A片无码| 99热个人在线| 婷婷综合久久综合| 91久久电影| 99在线视频资源| 91超碰在线播放| 日韩无码专区| 99久久国产成人精品| 99成人精品六| 日本欧美国产| 午夜爱爱网站| 日本久久爱| 婷婷五月天成人网| 超碰免费成人网站| AV在线不卡播放| 国精产品一区二区三区| 99热99| 激情五月天网站| 久久激情五月婷婷| 综合五月天| 99er6热在线观看精品6| 丁香 亚洲 久久| 婷婷成人综合| 亚洲成色综合网站免费观看| 日本91在线播放| 激情综合激情五月一起草| 亚洲一级AV在线免费播放| 91丨九色丨熟女| 26uuu视频欧美| 性欧美大战久久久久久久83| 99综合网| 综合久久婷婷五月丁香| av五月天婷婷丁香| 97色片| 婷婷五月天xxx| 婷婷色综合中心站| 五月婷婷啪| 天天摸,天天爽| 色婷婷av综合网| 91操片| 天天插天天日天天爽| 欲色人妻| AV性爱在线| 五月WWW| 国产熟女大叫受不了| 99这里只有精品| 五月天成人在线播放丁香| 日韩在线成人电影| 精品国产AV色一区二区深夜久久| 99热国产这里只有精品| 大香蕉久久伊人婷婷五月丁香| 九九色婷| 日本五月婷婷| 天天天操天天天日| 日韩色色色99| 9色在线视频| 天天爱天天做天天舔| 在线成人国产| 婷婷五月丁香五月| 婷婷五月天美女21p| 五月丁香久久综合| 91免费看片| 六月成人网| 久久婷婷色综合| 艹| 超碰女人天堂| 天天婬色综合| 色九月| 色噜噜狠狠色综无码久久合欧美| 婷婷丁香激情五月| 97色碰| 日韩操啪| 成人无码精品1区2区3区免费看| 五月婷婷导航| 视色综合| www.minyis.com【JT】实力收量可预付TG@LXSPSW8 | 99久久97久久欧美综合网| 无码少妇高潮喷水A片免费| 五月婷婷丁香综合| 丁香六月婷婷色XXXXX| 五月花综合网| 丁香花五月天激情| 久久精彩视频99| 欧美色色色| 99热免费精品| 五月婷婷香| 欧美一区二区三区不卡影视| 欧亚洲在线高清视频| 久久影视婷婷五月| 91久女| 99精品在线观看| 97视频.干com| 国产成人亚洲综合A∨婷婷| 六月米奇色综合| 99热精品在线| 五月丁香亭亭操逼| 五月天婷婷激情网| 精品国婬伦V无码久久久| 99精品成人无码A片观看金桔| 久热欧美| 99色在线观看视频| 青青草五月天| 亭亭五月色男人| 五月婷深深爱激情网| 精品一区二区三区四区五区六区介绍| 国产激情视频在线观看| 99精品无码| 庭庭久久内射| 亚洲成人无码网站| 婷婷综合成人| 九九热视频这里只有精品| 天天爽综合网| 天堂AV在线看| 色情五月天A片| 久久 这里只有精品1| 五月丁香在线视频观看| 五月天激情国产综合婷婷婷就去爱| 日韩成人AV在线播放| 99色久| www:99热视频| 青青草五月天| CAOBIBI| 亚洲婷婷丁香五月| 一起草aV| 射久久丁香五月| 男人的天堂97| 色情五月天。| 婷婷五月综合网| 日韩日比视频| 综合另类视频| 婷婷五月天激情网| 性日本激情| 激情综合自拍五月婷婷色五月| 如何安全看伊人婷婷| 天天艹天天综合网| 色情五月丁香婷婷网| 亚洲激情无码久久| 婷婷色色播五月天| 色噜噜婷婷| 亚洲欧美国产高清vA在线播放| 骚。com| A久久| 久草狼人| 久久综合九九| 婷色五月| 久久婷婷七月丁香| Caoporn公开| 99ri国产精品| 91精品久久久久久久久久久久| 激情五月婷| 婷婷色五月激情| 日日日日做夜夜夜夜无码| 婷婷激情六月综合| 天天做天天爱综合| 九九这里只有精品| 久久只有18视频| 96丁香六月婷婷蜜桃综合久久| 吉澤明步Av一區二區| 天天插天天日| 久久XX| 天天综合精品| a性生活久久无| 成人人操| 欧美在线视频99| 五月天婷婷色播| 亭亭五月天成人| 另类视在线| 亚洲色网络| 色欲色欲久久宗合网| 9热在线视频| 成片免费播放| 天天干天天操天天上| 狠狠插狠狠插| 亚洲激情另类| 天天日日| 人人澡玖玖一| 九九免费在线视频| 亚洲色五月| 人人操AV| 丁J香六月首页| 色热久| 六月丁香综合网| 久久久久久人妻| 丁香五月成人网| 丁香婷婷五月综合欧美另类| 五月婷婷丁香综合| 婷婷综合伊人丁香| 玖玖99免费视频| 国产JK精品白丝AV在线观看| 一起草av在线观看| 中文人妻主播久久| 丁香五月在线播放| 成AV人片一区二区三区久久| 丁香婷婷婷五月综合色情| 免费AAAAA网| 婷婷综合五月天亚洲综合| 久久婷婷五月天懂色| 亚洲丁香五冃97色| 99操视频| 五月丁香六月婷婷开心网| 久久综合九九| 色五月色五天色情网址| www.粉嫩av.com| 天天色天天爱天天爱天天爱y| 泰州成人视频| 色五月天丁香婷婷色| 另类图片激情五月天| WWW.桔色成人.COM| 丁香婷婷天堂| 激情五月天久久丁香| 五月丁香中文字幕| 国产精自产拍久久久久久蜜| 亚洲色色色| 丁香五月婷婷99| 求可以看的AV网址| 67194国产| 久久青青日本视频| 丁香六月婷婷综合网| 99热大香蕉| 亚洲精品九九| 婷婷五月天亚洲色| 婷婷激情五月| 六月婷婷九月丁香| 五月激情丁香| 亚洲视频在线观看| 人妻人人操| 五月天婷婷激情在线色图| 99网| 99精品久久| www.色五月| 99色免费观看全部| 99久99热| 日韩中文欧美| 欧美色色色色色色色色色色| 狠狠干综合网| 婷婷中合| 婷婷激情五月综合基地| 五月婷婷五月| 色综合久久天天综合网| 九九热视频在线观看| 3p九色在线| 婷婷亚洲激情在线观看视频| 伊人五月天在线| 久色激情| 天天日夜夜爽| 五月丁香A片| 日逼免费视频| 性按摩玩人妻HD中文字幕| 色情五月天小说| 97九色| 丁香婷婷色色| 欧美影院| 五月婷婷草| 无码操B| 久久亭亭电影| 亚洲色情网站| 任我肏视频精品| 亚洲va欧美va国产综合久久久| 色婷婷成人做爰A片免费看网站| 97色色色色色色色| 色色色com| 四月婷婷五月色综合| 91干| 九九aV| 99热这里| 97碰啪啪| 99日韩| 91色综合| 夜夜操天天干| 九九热这里只有精品556| 久久久五月激| 少妇搡BBBB搡BBB搡毛茸茸| 天天日狠狠| 国产精品久久久久久妇女6080| 天天激情视频| 狠狠CAO日日穞夜夜穞AV| 激情黄色五月天| 色呦精品| 五月丁香激情在线| 色色图五月天| 开心激情五月天网| 久久综合色五月| 丁香久久五月婷综合| 亚洲性爱电影| 亚洲超碰在线| 丁香五月AV在线| 无码AV久久久久久久久| 思思综合热| 天天干天天av天天射| 久色资源网| 婷婷性爱视频在线| 成人版视频在线观看| 中文字幕在线日亚洲9| 天天操天天操天天操天天操天天操 | av第一二区| 超碰免费大香蕉| 99re这里只有精品99| 激情综合网激情五月天| 97色色色色色色色色色色色色色| 老师高潮流白浆喷水的A片| 婷婷五月花西瓜| 婷婷色操| 天天干天天操天天拍| 另类图片激情五月天| 五月天婷a在线| 熟女激情五月天| 99在线热| AA片在线观看视频在线播放| 激情九九这里只有精品| 超碰人人99| 五月丁香亚洲综合| 五月丁综合在线观看| 婷婷丁香五月基地| 91seav| 婷婷九月激情| 精品五月花| 国产精品成人AV在线| 久久五月天色婷婷| 伊人婷婷福利网| 色久综合| 日韩无码一区二区三区四区| 久久免费高| 免费AV在线| 九九热这里都是精品6| 日本婷婷色| 激情的五月婷婷蜜桃| 亚洲中文AV| 在线网黄| 婷婷成人丁香色情基地30| 色综合久久综合| 日日干日日| 99热日韩| 第四色激情网| 99色嘟嘟精品网站| 五月丁香无码| 九九爱看亚洲| 久久伦乱| 91919191919久久成人视频| 婷婷五月综合啪| 丁香婷婷偷拍| 激情九色| 精品少妇人妻AV无码专区偷人| 综合网亚洲| 天天拍夜夜撸| 婷婷综合九月| 搡BBBB搡BBB搡18| 色五月激情网| 五月激情开心婷婷| 欧洲亚洲午夜| A片天天| 丁香婷婷色五月| 激情五月婷婷色| 色情性爱视频网址| 亚洲婷婷丁香五月| 极品少妇高潮啪啪AV无码| 天天爱天天爽| 五月丁花色综合网| 激情丁香婷婷| 97热超碰| 国产欧美精品AAAAAA片| 久久婷婷五月综合伊人| 婷婷综合六月| www.粉嫩av.com| 停停综合色色| 韩国中文字幕91| 婷婷精品| 狠狠狠色激情综合适合| 亚洲精| 青青热视频| 久热丁香| 超碰色碰碰| 欧美操人| 99色综合网| 色爱亚洲| 丁香婷五月| 欧美欧盟性爱网| 亚洲99在线| 婷婷天堂综合网| 极品少妇高潮啪啪AV无码| 中文字幕综合网| 丁香五月成人av| 午夜婷婷五月天在线| 国产99美少妇| 色五月婷婷av| 日韩视频女神99| 操逼电影免费看| 国自产拍偷拍精品啪啪一区二区| 99热最新| 激情綜合網址| 久久美女五月天| 六月色国内综合| 综合久久丁香婷婷,五月婷婷六月丁香,开心激情综合网,六月丁香在线观看,婷婷丁 | 九月影院義母在线播放| 开心五月婷婷综合在线精品素人| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品| 99热9| 大香蕉婷婷久久| 激情五月婷婷六月丁香| 99福利视频| 安息电影在线观看完整版| 久操热线| 色婷婷狠| 手机在线日韩视频中文字幕| 黄色91在线观看| 九九热内射| 7777国产盗摄农村女人| 国产精品扒开腿做爽爽爽A片唱戏 青青草国产亚洲精品久久 | 色色色99| 久久婷婷成人综合色怡春院| 中美日韩成人在线| 成人AV中文字幕| 狠狠干婷婷| 天天日天天干天天爽| 99re视频精品| 久久五月激情| 天天操天爱综合| 久久成人精品视频| 色婷婷五月综合在线| 五月婷婷久久爱| 我爱宗和色| 日日鲁鲁夜夜爽爽| 2025最新亚洲激情在线| 亚色网站小视频| 成人色站,在线视频,看片-SS1AV| 婷婷色色狠狠| 综合五月天亚洲婷婷| 婷婷丁香社区网| 亚洲视99| 新99色色色色色色| 色婷婷激情小说网| www.伊人天堂偷偷婷婷| 色高清无码视频| 五月激情基地| 精品三区影院| 99亚洲日韩| 婷婷五月天激情电影小说| 99热这里只有精品9| 思思热在线| 国产精品社区| 六月丁香啪啪| 天天操夜夜操| 99ER热精品视频| 国精产品一区一区三区免费视频 | 精品无码av丁香五月激情| 国产裸舞福利资源在线视频| 丁香五月狠狠综合欧美| 中文字幕 久久9999| 婷婷精品性性性性性性性| 99热这里只有精彩| 五月丁香在线| 超碰人妻在线| 亚洲欧洲另类| 日本WwW色偷偷丁香花久久久京东热| 婷婷中文综合网| 一起草av在线观看| 生活片五区| 丁香亭亭久久| 丁香五月综合在线播放| 亚洲成人人人操| 精品久热69| 婷婷丁香五月激情| 国产精产国品一二三在观看| 色九月综合| av激情在线| 五月丁香婷婷色| 激情伍月 欧美| 色五月亚洲开心网| 久久色9| 激情图片五月天| 亚洲最大成人综合网720P| 一起操最新网址| 亚洲天堂啪啪| oumeisesewang| 婷婷瑟瑟五月天| 最新色色五月天| 色婷婷六月| 亚洲色频| 久久婷色| 丁香五月av在线| 色五月激情综合| 97在线精品| 欧美五月婷婷综合| 亚洲 视频 导航 一区| 五月花婷婷在线精品视频| 六月色丁香中文字幕| 婷婷综合97| 777影视理论片大全在线观看| 亚洲激情Av| 激情五月天色色网| 五月天婷婷导航| 久久五月婷婷丁香| 亚洲精品久久久久AV无码| 色婷婷五月天无码视频| 丁香五月婷婷久久综合激情网 | 亚洲艹网| 婷婷综合爱| 久久综合九九| 99热香港| 91美女被操| 丁香五月,激情五月,深爱五月| 99碰网站| 一起草AV入口| 内射综合网| 天天情色五月天| 草一草avb| 婷婷视频在线| 激情久久五月天| 影音先锋人妻出差| 色五月综合激情| 色九四色| 婷婷亚洲日本| 26UUU欧美| 99色热| 91|九色|动漫| 天天透天天摸天天舔| 超碰成人电影| 婷婷丁香综合在线| aaaaaa片| 99re热在线视频观看| 99噜噜噜在线播放| 婷婷黄色| 直接看的AV| 国产全是老熟女太爽了| 五月婷啪啪| 91久久婷婷人人澡草| 99精品无码| 九九色院| 久热这里只有精品在线| 激情开心五月天| 98永久精品| 97色婷婷五月天| 激情婷婷五月天| 亚洲午夜电影| 五月天激情无码专区| 思思热在线视频精品| 久99在线视频| 五月天婷婷在线播放免费| 日日日日日| 97久久久久| 丁香五月在线观看| 97色 五月天丁香| 深爱五月激情综合| 久热中文字幕| 俺去婷婷 丁香| 69er小视频| 亚洲激情久久| 国产精品社区| 欧美精品18| 色色六月| 色婷婷丁香五月天激情综合网| 天天色视频| 色五月天丁香婷婷| 亚洲视频色婷婷| 1024欧美看片| 伊人在线婷婷草| 久久伊人五月天| 五月婷婷大香蕉| 综合久久97| 色www.con| 久久激情五月婷婷| 亚洲色图五月丁香五月婷婷| 亚洲婷婷六月天| 丁香五月AV| 九九热这里只有精品556| 中文字幕AV在线播放| 91丨九色|PRNY熟妇| 99无码黄色视频| 成人国产网| 亚洲人妻一区二区| 国产成人精品一区二三区熟女在线 | 99激情在线| 色爽九九| 久婷五月| 九九99热久久精品66中文字幕| 亚洲免费婷婷| 激情色情五月天| 亚洲aV写真天天综合网久久| 久99久视频精品| 精品色色网| av网站不卡在线| 亚洲婷婷六月天| 婷婷五月花| 欧美性爱特黄一级aaaassss| 在线观看免费视频| 色丁香综合影院| 亚洲国产精品二二三三区| 2025最新亚洲激情在线| 少妇人妻偷人精品无码视频新浪| 99久久国产成人精品| 色亚洲无码| 99亚洲综合| 色色婷| 国产1区2区3区在线观| 99精品亚洲| 五月开心婷婷中文字幕| 五月综合久久| 久热这里只有精品在线观看 | 色婷五月| 九九视频这里是精品五月| 少妇人妻人伦A片| 69五月天视频| 超碰9799| 夜夜撸日日骑| 丁香六月亚洲| 日日操夜夜爽| 9热在线观看| 超碰操网| 538午夜激情| 五月激情天| 玖玖九九99| 色五月婷婷丁香凹凸| 99re这里| 九九干视频| 色999五月色| 四色综合网| 国产伦亲子伦亲子视频观看| 性生活久久人妻| 七月激情六月婷婷综合在线播放| 操操自拍| 99,色| 少妇大叫太大太粗太爽了A片| 开心五月婷婷激情网| 人人操婷婷| 丁香婷婷色情| 五月丁香| 人与禽A片啪啪| 婷婷丁香五月亚洲综合网在线视频观看| 人操人| 9久久久久| 五月婷婷中字在线| 五月天丁香久久综合 | www.99热这里只有精品| 久久久99婷婷久久久久久| 色播五月天激情| 玖玖精品资源| 人人操人人看97干| 在线播放中文字幕| 欧美天天干五月丁香| 久热99狠| 香蕉操亚洲| 秋霞午夜理论| 丁香五月色激情| 啪啪99| 天天做天天爰天天爽天天无遮挡| 色婷婷激情视频| 中文字幕av在线| 五月夜丁香| 99在线视频女女视频| 99热这里有精品| 五月婷久久在线| 色七七九九| 国产一区二区三区影院| 五月婷婷综合在线视频小说| 久久久激情| 69热91天堂| 九九精品自拍| 久久五月丁香综合17C| 六月婷婷视频| 久久九九99| 激情六月天婷婷| 狠狠色婷婷在线| 高清av在线国产| www.99热| 亚洲a色| 丁香五月激情天AV无码| www.1024久久| 五月丁香亚洲综合| 日日操天天| 无码se| 精品九九婷婷| 免费黄色片子| 熟女激情五月天| 天天爽天天日人人爱| 五月丁香六月婷婷的女人| 婷婷综合网| 人人草人人看| 夜夜噜夜夜奇| 久99视频在线观看| 99综合97| 伊人在线视频| 亚洲色网址| 婷婷六月网| 操操天堂| 色情网综合| 91丨九色丨国产打屁股| 婷婷八月丁香激情综合| 另类丁香五月天区图| 色5月婷婷色| 六月婷婷天堂| 丁香六月综合激情| 久草大| 五月婷色丁香| 91九色在线| 伊人久热91| 超碰国产在线播放| 天天搞天天爽| 国产日韩欧美性爱| 天天摸天天高潮天天爽| 性爱动图国产麻豆一区二区三区| 久久综合五月| 综合六月久久| 天天做天天爱| 久青操| 夜夜干天天干| 丁香五月狠狠综合欧美| 色婷五月| 婷婷综合网性| 婷婷不卡基地| 成人国产欧美大片一区| 人妻AV在线| 久热亚洲| 九九热只有精品| 五月色天五月色| 国产色色网站网址| 婷婷色网站| 激情图片99| 色色综合五月| 九月丁香婷婷基地| 激情小说五月天| 色五月婷婷五月| 99热人人| 碰97久久| 色婷婷六月天|