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

ARTICLE DETAIL

資訊詳情

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

從零手寫YOLO檢測(cè)頭:網(wǎng)格預(yù)測(cè)、標(biāo)簽分配與損失收斂實(shí)戰(zhàn)

從零手寫YOLO檢測(cè)頭:網(wǎng)格預(yù)測(cè)、標(biāo)簽分配與損失收斂實(shí)戰(zhàn) 1. 為什么我選擇從零手寫一遍YOLO檢測(cè)頭先說結(jié)論如果你已經(jīng)能熟練調(diào)用現(xiàn)成的檢測(cè)框架跑通推理卻說不清一張 640×640 的圖進(jìn)去之后為什么輸出是 8400 個(gè)候選框、為什么正樣本只有寥寥幾個(gè)、為什么 loss 里有一項(xiàng)幾乎不下降——那這篇內(nèi)容就是寫給你的。我打算把一次完整的實(shí)驗(yàn)過程攤開講用 PyTorch 把一個(gè) YOLO 風(fēng)格的單階段目標(biāo)檢測(cè)模型從數(shù)據(jù)管道、骨干網(wǎng)絡(luò)、檢測(cè)頭、標(biāo)簽分配、損失函數(shù)一路搭到訓(xùn)練收斂和推理可視化。這里說的“YOLO”不是指某個(gè)具體版本的官方實(shí)現(xiàn)而是指單階段、Anchor-based、輸出為網(wǎng)格化預(yù)測(cè)張量這一整類檢測(cè)范式的核心骨架。選它做實(shí)驗(yàn)的理由很實(shí)在相比兩階段方法它沒有區(qū)域建議網(wǎng)絡(luò)那一層整條鏈路是端到端可微的任何一個(gè)環(huán)節(jié)寫錯(cuò)都會(huì)立刻體現(xiàn)在 loss 曲線上調(diào)試反饋非常直接相比純分類任務(wù)它又多出了坐標(biāo)回歸、正負(fù)樣本分配、NMS 后處理這幾塊真正的“工程難點(diǎn)”正好是檢驗(yàn)自己是否真的理解檢測(cè)模型的分水嶺。適合誰(shuí)看有 PyTorch 基礎(chǔ)、寫過 Dataset 和訓(xùn)練循環(huán)、能看懂卷積和矩陣運(yùn)算但對(duì)“檢測(cè)模型到底怎么訓(xùn)起來”還停留在調(diào)包階段的同學(xué)。全文的代碼都是可運(yùn)行的片段級(jí)實(shí)現(xiàn)我刻意避開了過度封裝參數(shù)含義全部寫進(jìn)注釋你可以直接抄進(jìn)自己的實(shí)驗(yàn)倉(cāng)庫(kù)。至于我為什么堅(jiān)持手寫而不是直接改開源倉(cāng)庫(kù)——因?yàn)楦膭e人的代碼時(shí)你永遠(yuǎn)在猜作者為什么這么寫自己寫一遍錯(cuò)一次就永遠(yuǎn)記住了。2. 先想清楚輸入輸出約定再動(dòng)手寫第一行代碼動(dòng)手搭網(wǎng)絡(luò)之前我強(qiáng)制自己先在紙上寫清楚三件事輸入張量的形狀、輸出張量的形狀、以及兩者之間的語(yǔ)義映射。這一步偷懶后面 80% 的 bug 都源于此。很多人一上來就抄 backbone結(jié)果訓(xùn)了兩天發(fā)現(xiàn) loss 不降回頭一查是 anchor 順序和輸出通道的排布對(duì)不上。這種錯(cuò)誤不會(huì)報(bào)異常只會(huì)安靜地浪費(fèi)你的時(shí)間。2.1 網(wǎng)格化預(yù)測(cè)張量的形狀為什么是 S×S×(B×(5C))先定義清楚符號(hào)。把輸入圖像統(tǒng)一縮放到 640×640網(wǎng)絡(luò)以 32 倍下采樣輸出特征圖于是得到 20×20 的網(wǎng)格。每個(gè)網(wǎng)格單元負(fù)責(zé)預(yù)測(cè) B 個(gè)邊界框每個(gè)框帶 5 個(gè)量中心點(diǎn)相對(duì)網(wǎng)格的偏移 x、y寬高 w、h以及一個(gè) objectness 置信度。再加 C 個(gè)類別的條件概率通道數(shù)就是 B×(5C)。以單尺度、B3、C80 的配置為例輸出張量形狀是 1×20×20×3×85。但我更推薦把三個(gè)尺度拼起來看stride 8 得到 80×80stride 16 得到 40×40stride 32 得到 20×20把它們?nèi)空蛊讲淳W(wǎng)格順序拼接總數(shù)是 80×80×3 40×40×3 20×20×3 19200 4800 1200 25200 個(gè)預(yù)測(cè)。這個(gè)數(shù)字很重要它就是你后面標(biāo)簽分配時(shí)要處理的候選總量也是你評(píng)估顯存占用的依據(jù)。補(bǔ)充說明一個(gè)容易混淆的點(diǎn)不同實(shí)現(xiàn)里“(5C)”和“(C5)”的排布順序不一樣有的是[x, y, w, h, obj, cls...]有的是[obj, cls..., x, y, w, h]。這純粹是工程約定但一旦定了就必須全鏈路統(tǒng)一從標(biāo)簽編碼、損失計(jì)算到解碼推理任何一處反了都會(huì)導(dǎo)致模型學(xué)到一個(gè)完全錯(cuò)位的映射。我的習(xí)慣是把它寫成常量并只在一處引用# 每個(gè) anchor 的預(yù)測(cè)向量長(zhǎng)度4 個(gè)坐標(biāo) 1 個(gè) objectness C 個(gè)類別 NUM_CLASSES 80 NOOBJ 4 1 NUM_CLASSES # 85 # 通道索引約定全局唯一定義禁止在別處硬編碼數(shù)字 IDX_XYWH slice(0, 4) IDX_OBJ 4 IDX_CLS slice(5, 5 NUM_CLASSES)這套 slice 常量看起來啰嗦但我在排查一次“類別分?jǐn)?shù)全部趨同”的問題時(shí)就是靠全局替換 slice 才確認(rèn)不是索引錯(cuò)位導(dǎo)致的省了至少半天。2.2 坐標(biāo)為什么要預(yù)測(cè)偏移量而不是絕對(duì)值這是我在第一次實(shí)驗(yàn)里踩得最深的坑。如果直接讓網(wǎng)絡(luò)回歸框中心的絕對(duì)像素坐標(biāo)訓(xùn)到中期 loss 會(huì)卡在一個(gè)較高的平臺(tái)反復(fù)震蕩。原因是絕對(duì)坐標(biāo)的取值范圍是 0~640而卷積輸出的數(shù)值分布天然集中在較小的區(qū)間網(wǎng)絡(luò)為了輸出大數(shù)值必須把權(quán)重推到很大的量級(jí)梯度尺度失衡。正解是讓網(wǎng)絡(luò)只預(yù)測(cè)相對(duì)網(wǎng)格左上角的偏移量并用 sigmoid 壓到 0~1解碼時(shí)再加回網(wǎng)格坐標(biāo)寬高則預(yù)測(cè)相對(duì)于 anchor 尺度的對(duì)數(shù)縮放比。這樣每個(gè)輸出單元的回歸目標(biāo)都落在 0~1 或接近 0 的小范圍內(nèi)數(shù)值穩(wěn)定得多。解碼公式我固定成下面這樣寫在decode函數(shù)里訓(xùn)練和推理共用同一份def decode(pred, anchors, stride, grid_size): # pred: [B, A, H, W, 5C]A 為該尺度 anchor 數(shù) device pred.device gy, gx torch.meshgrid( torch.arange(grid_size, devicedevice), torch.arange(grid_size, devicedevice), indexingij) grid torch.stack((gx, gy), dim-1).float() # [H, W, 2] xy (torch.sigmoid(pred[..., 0:2]) grid) * stride # 解碼到輸入尺度 wh torch.exp(pred[..., 2:4]) * anchors.view(1, -1, 1, 1, 2) obj torch.sigmoid(pred[..., 4:5]) cls torch.sigmoid(pred[..., 5:]) return torch.cat([xy, wh, obj, cls], dim-1)注意meshgrid的indexing參數(shù)必須顯式寫成ij否則在較新版本的 PyTorch 里會(huì)產(chǎn)生警告而且在寬高不相等的特征圖上會(huì)靜默給出轉(zhuǎn)置后的網(wǎng)格坐標(biāo)全錯(cuò)卻不會(huì)報(bào)錯(cuò)。我因?yàn)檫@個(gè)排查過一整晚。寬高用exp而不是 sigmoid是因?yàn)槌叨瓤s放比理論上無(wú)上界用指數(shù)映射可以覆蓋任意大小目標(biāo)同時(shí)讓梯度形式保持簡(jiǎn)潔。3. 數(shù)據(jù)管道比模型更容易出錯(cuò)的地方我現(xiàn)在的經(jīng)驗(yàn)是檢測(cè)任務(wù)的調(diào)試時(shí)間大概七成花在數(shù)據(jù)和標(biāo)簽上。模型結(jié)構(gòu)寫錯(cuò)了頂多 shape 報(bào)錯(cuò)數(shù)據(jù)寫錯(cuò)了是“能跑、loss 也降、但 mAP 上不去”最難定位。所以這一節(jié)我把數(shù)據(jù)管道拆得細(xì)一些。3.1 圖像與框的同步增強(qiáng)最容易寫錯(cuò)的是翻轉(zhuǎn)后的 x 坐標(biāo)檢測(cè)的增強(qiáng)和分類最大的區(qū)別所有幾何變換必須同時(shí)作用于圖像和標(biāo)注框而且框的表示形式在變換前后要來回轉(zhuǎn)換。我采用內(nèi)部統(tǒng)一的中間格式(cx, cy, w, h)歸一化到 0~1因?yàn)榭s放、翻轉(zhuǎn)在這個(gè)格式下計(jì)算最簡(jiǎn)潔只在最終編碼時(shí)才轉(zhuǎn)成像素單位。水平翻轉(zhuǎn)的坑在于框中心 x 變換后應(yīng)該是1 - cx但寬不變。而如果你順手把 x1、x2 也做了1 - x再重排結(jié)果雖然等價(jià)代碼里卻很容易忘記重排導(dǎo)致 x1 x2。我的做法是統(tǒng)一走中心點(diǎn)格式翻轉(zhuǎn)只改一個(gè)數(shù)def hflip(img, boxes): img img[:, ::-1, :].copy() boxes boxes.copy() boxes[:, 0] 1.0 - boxes[:, 0] # 只改中心 x寬高不變 return img, boxes另外隨機(jī)縮放和隨機(jī)裁剪之后那些面積被裁掉大半的框必須過濾。我用的閾值是保留可見面積占原面積 30% 以上、且裁剪后寬高都不小于 4 像素的框。閾值不是玄學(xué)是基于實(shí)測(cè)低于這個(gè)比例的目標(biāo)在特征圖上已經(jīng)不足一個(gè)感受野的中心區(qū)域強(qiáng)行保留只會(huì)給回歸分支注入噪聲標(biāo)簽。3.2 一個(gè) batch 內(nèi)如何組織多尺度標(biāo)簽多尺度輸出意味著標(biāo)簽也要按尺度分別準(zhǔn)備。我的Dataset.__getitem__返回的是原始圖像張量和未編碼的歸一化框 類別編碼放到collate_fn里批量做理由是編碼過程依賴 anchor 配置而這些配置是全局的放在 batch 級(jí)別做可以順便完成 padding 對(duì)齊。collate 階段的處理順序我固定為取 batch 內(nèi)最大寬高做 letterbox 填充保持長(zhǎng)寬比灰色 114 填充記錄每張圖的縮放比和填充偏移然后按三個(gè)尺度分別計(jì)算每個(gè) GT 落在哪個(gè)網(wǎng)格、與哪幾個(gè) anchor 的 IoU 超過閾值。這里的 DOIIoU 閾值我設(shè)成 0.5 起步但對(duì)小目標(biāo)尺度放寬到 0.4因?yàn)樾∧繕?biāo)匹配到的 anchor 天然 IoU 偏低卡太死會(huì)導(dǎo)致正樣本極度稀疏。下面這個(gè)表格是我實(shí)測(cè)的 anchor 配置針對(duì)自建數(shù)據(jù)集以行人和車輛為主調(diào)過兩輪供參考輸出尺度stride特征圖anchor 尺寸像素適用目標(biāo)小880×80(12,16), (19,24), (28,36)小于 32px 的目標(biāo)中1640×40(38,52), (56,76), (82,110)32~96px 的目標(biāo)大3220×20(116,150), (160,210), (240,320)大于 96px 的目標(biāo)anchor 不是隨便給的我的做法是先對(duì)自己的訓(xùn)練集跑一遍 K-means距離用 1-IoU把聚類中心按面積排序后三等分再微調(diào)讓相鄰尺度的比例接近 2 倍。直接用公開數(shù)據(jù)集的默認(rèn) anchor 到自己數(shù)據(jù)上召回率通常會(huì)掉幾個(gè)點(diǎn)。4. 骨干網(wǎng)絡(luò)與頸部結(jié)構(gòu)的選擇邏輯結(jié)構(gòu)選型這件事我的判斷標(biāo)準(zhǔn)只有一個(gè)在目標(biāo)硬件的推理預(yù)算內(nèi)保證足夠的下采樣倍數(shù)和足夠的跨尺度融合能力。檢測(cè)需要大感受野來定位大目標(biāo)也需要高分辨率特征圖來定位小目標(biāo)這兩者靠單一尺度無(wú)法同時(shí)滿足所以多尺度輸出是必需項(xiàng)不是可選優(yōu)化。4.1 從 Darknet 風(fēng)格殘差塊講起的最小可用骨干我不建議一開始就上很復(fù)雜的結(jié)構(gòu)。實(shí)驗(yàn)初期我的骨干只用了“卷積 殘差塊堆疊”的最小組合每個(gè) stage 由一個(gè) stride2 的下采樣卷積開頭后接 N 個(gè)殘差單元通道數(shù)按 32→64→128→256→512 遞增。這套結(jié)構(gòu)的好處是每一層的形狀都能手算出來出問題一眼能定位。殘差塊內(nèi)部我用 1×1 降維 3×3 提特征的瓶頸結(jié)構(gòu)并在 3×3 卷積后接 BatchNorm 和 LeakyReLU負(fù)斜率 0.1。選 LeakyReLU 而不是 ReLU 的原因很實(shí)際檢測(cè)任務(wù)里大量回歸目標(biāo)的梯度在負(fù)半軸也有貢獻(xiàn)ReLU 在負(fù)區(qū)直接截?cái)鄷?huì)讓回歸收斂變慢。這個(gè)差異我在對(duì)比實(shí)驗(yàn)中觀察到過換成 ReLU 后坐標(biāo) loss 的下降速度明顯滯后。class Bottleneck(nn.Module): def __init__(self, cin, cout): super().__init__() cmid cout // 2 self.conv1 nn.Conv2d(cin, cmid, 1, biasFalse) self.bn1 nn.BatchNorm2d(cmid) self.conv2 nn.Conv2d(cmid, cout, 3, padding1, biasFalse) self.bn2 nn.BatchNorm2d(cout) self.act nn.LeakyReLU(0.1, inplaceTrue) self.short (nn.Identity() if cin cout else nn.Conv2d(cin, cout, 1, biasFalse)) def forward(self, x): y self.act(self.bn1(self.conv1(x))) y self.bn2(self.conv2(y)) return self.act(y self.short(x))顯存方面提醒一句訓(xùn)練時(shí)把torch.backends.cudnn.benchmark打開輸入尺寸固定的話能白撿一成左右的速度但如果你的 dataloader 會(huì)輸出不同尺寸的圖比如沒做統(tǒng)一 letterbox這個(gè)開關(guān)反而會(huì)導(dǎo)致反復(fù)重選算法速度更慢。4.2 頸部融合上采樣加拼接而不是直接相加三個(gè)尺度的特征要互相“看見”彼此的信息否則小尺度分支缺語(yǔ)義、大尺度分支缺細(xì)節(jié)。我采用的路徑是自頂向下從 stride 32 的特征圖開始1×1 卷積把通道壓到統(tǒng)一值我設(shè) 256然后雙線性上采樣 2 倍與 stride 16 的同通道特征沿通道維拼接再過一組 3×3 卷積融合重復(fù)一次到 stride 8。用拼接而不是相加是因?yàn)槠唇颖A袅瞬煌瑏碓刺卣鞯莫?dú)立性讓后續(xù) 1×1 卷積自己去學(xué)如何加權(quán)相加則強(qiáng)制假設(shè)兩路特征語(yǔ)義對(duì)齊這個(gè)假設(shè)在淺層往往不成立。代價(jià)是通道數(shù)翻倍帶來的顯存開銷所以我在拼接后緊跟一個(gè) 1×1 卷積把通道壓回去實(shí)測(cè)能省下約 15% 的顯存而不掉精度。提示上采樣我用F.interpolate(..., modenearest)而不是轉(zhuǎn)置卷積。轉(zhuǎn)置卷積容易在特征圖上產(chǎn)生棋盤格偽影對(duì)小目標(biāo)的定位有肉眼可見的負(fù)面影響而且參數(shù)更多。最近鄰插值雖然“粗糙”但在檢測(cè)任務(wù)里配合后續(xù) 3×3 卷積完全夠用。5. 檢測(cè)頭、標(biāo)簽分配與損失函數(shù)整個(gè)實(shí)驗(yàn)的核心我把這一節(jié)放在最中間因?yàn)檫@里是 YOLO 類模型真正區(qū)別于普通回歸網(wǎng)絡(luò)的地方。頭部結(jié)構(gòu)本身很簡(jiǎn)單幾個(gè)卷積難的是如何決定哪個(gè)預(yù)測(cè)該對(duì)哪個(gè) GT 負(fù)責(zé)以及如何為不同質(zhì)量的預(yù)測(cè)賦不同權(quán)重。5.1 檢測(cè)頭的三種輸出分支與解耦設(shè)計(jì)每個(gè)尺度上我接一個(gè)檢測(cè)頭結(jié)構(gòu)是先 3×3 卷積把頸部輸出壓到中間通道我取 256然后分出三個(gè)并行的 1×1 卷積分支分別輸出坐標(biāo)4 通道、objectness1 通道、類別C 通道。這就是所謂的解耦頭。為什么要解耦因?yàn)榉诸愋枰氖钦Z(yǔ)義不變性同一個(gè)物體平移、縮放后類別不變回歸需要的是位置敏感性。讓同一組卷積核同時(shí)服務(wù)這兩個(gè)目標(biāo)存在內(nèi)在沖突。我在實(shí)驗(yàn)中做過對(duì)照耦合頭訓(xùn)到第 30 輪時(shí)類別 loss 和坐標(biāo) loss 會(huì)互相拉扯表現(xiàn)為其中一個(gè)下降另一個(gè)就抬頭換成解耦頭后兩條曲線都能單調(diào)下降。代價(jià)是參數(shù)量增加不多完全值得。單尺度檢測(cè)頭的實(shí)現(xiàn)如下注意輸出通道順序要和前面定義的常量嚴(yán)格一致class DetectHead(nn.Module): def __init__(self, cin, num_anchors, num_classes): super().__init__() self.stem nn.Sequential( nn.Conv2d(cin, 256, 3, padding1, biasFalse), nn.BatchNorm2d(256), nn.LeakyReLU(0.1, inplaceTrue)) self.reg nn.Conv2d(256, num_anchors * 4, 1) self.obj nn.Conv2d(256, num_anchors * 1, 1) self.cls nn.Conv2d(256, num_anchors * num_classes, 1) def forward(self, x): x self.stem(x) # 輸出統(tǒng)一調(diào)整為 [B, A, H, W, C] 便于后續(xù)按 anchor 維處理 b, _, h, w x.shape reg self.reg(x).view(b, -1, 4, h, w).permute(0, 1, 3, 4, 2) obj self.obj(x).view(b, -1, 1, h, w).permute(0, 1, 3, 4, 2) cls self.cls(x).view(b, -1, self.num_classes, h, w).permute(0, 1, 3, 4, 2) return reg, obj, cls坐標(biāo)分支我不加任何激活原始輸出直接交給 loss配合前面說的 sigmoid/exp 在解碼時(shí)處理objectness 和類別分支同理sigmoid 在 loss 內(nèi)部配合 BCEWithLogits 使用避免數(shù)值不穩(wěn)定。這是一個(gè)非常容易出錯(cuò)的細(xì)節(jié)如果在頭部就套了 sigmoid再用 BCEWithLogits 就相當(dāng)于做了兩次變換loss 會(huì)一直偏高且梯度異常。5.2 正負(fù)樣本分配我用的簡(jiǎn)化版動(dòng)態(tài)分配策略早期的 YOLO 只按“GT 中心落在哪個(gè)網(wǎng)格”來分配正樣本一個(gè) GT 一個(gè)正樣本監(jiān)督信號(hào)太稀疏。我現(xiàn)在的做法是對(duì)每個(gè) GT找出中心點(diǎn)落在其內(nèi)部或附近的網(wǎng)格計(jì)算這些網(wǎng)格上所有 anchor 與該 GT 的 IoU凡是 IoU 超過正閾值的都作為正樣本IoU 低于負(fù)閾值的作為負(fù)樣本中間的忽略不計(jì)入 loss。關(guān)鍵在于引入中心先驗(yàn)一個(gè)網(wǎng)格即使 IoU 夠高如果它的中心離 GT 中心太遠(yuǎn)也不應(yīng)該算正樣本否則會(huì)讓模型學(xué)到“從遠(yuǎn)處預(yù)測(cè)物體”的壞習(xí)慣。我的過濾條件是中心距離落在 GT 寬高的一半范圍內(nèi)。這個(gè)約束加上之后訓(xùn)練初期 loss 的抖動(dòng)明顯減小。分配過程我用一個(gè) mask 張量實(shí)現(xiàn)形狀與輸出對(duì)齊1 表示正樣本、0 表示負(fù)樣本、-1 表示忽略def assign_targets(gt_boxes, anchors, strides, grid_sizes, pos_thr0.5, neg_thr0.4): # 返回每個(gè)尺度上的 mask 與回歸目標(biāo)此處展示單尺度核心邏輯 masks, targets {}, {} for s, (anc, st, gs) in enumerate(zip(anchors, strides, grid_sizes)): # 展開該尺度所有預(yù)測(cè)框中心為網(wǎng)格中心尺寸為 anchor cx (torch.arange(gs).float() 0.5) * st cy (torch.arange(gs).float() 0.5) * st # ... 構(gòu)造 [gs*gs*A, 4] 的候選框與每個(gè) GT 算 IoU iou pairwise_iou(candidates, gt_boxes) # [N_cand, N_gt] best_iou, best_gt iou.max(dim1) mask torch.full_like(best_iou, -1.0) # 默認(rèn)忽略 mask[best_iou neg_thr] 0.0 # 負(fù)樣本 mask[best_iou pos_thr] 1.0 # 正樣本候選 # 中心先驗(yàn)過濾網(wǎng)格中心必須落在 GT 內(nèi)部 mask[~inside_center(candidates, gt_boxes[best_gt])] -1.0 masks[s], targets[s] mask, build_reg_target(candidates, gt_boxes[best_gt]) return masks, targets代碼里pairwise_iou和build_reg_target是輔助函數(shù)分別算兩兩 IoU 和把 GT 編碼成相對(duì)偏移量。我在實(shí)現(xiàn)pairwise_iou時(shí)犯過一個(gè)經(jīng)典錯(cuò)誤直接用x1 cx - w/2這種形式計(jì)算但沒有對(duì)坐標(biāo)做 clamp導(dǎo)致超出圖像邊界的框算出負(fù)寬度IoU 出現(xiàn)負(fù)值進(jìn)而讓一批本該是負(fù)樣本的候選被誤判為忽略。修復(fù)方法是在算面積前統(tǒng)一clamp(min0)。5.3 三項(xiàng)損失的權(quán)重配比與不收斂的排查經(jīng)驗(yàn)損失由三部分組成坐標(biāo)回歸 loss、objectness 的二元交叉熵、類別的二元交叉熵。坐標(biāo)我用 CIoU 形式因?yàn)樗瑫r(shí)考慮重疊面積、中心距離和長(zhǎng)寬比收斂更快后兩項(xiàng)用帶 logits 的 BCE。權(quán)重配比是這套實(shí)驗(yàn)里我最不愿意給“標(biāo)準(zhǔn)答案”的部分因?yàn)閺?qiáng)依賴數(shù)據(jù)分布。我踩坑后穩(wěn)定下來的一組起點(diǎn)是坐標(biāo) 7.5、objectness 1.0、類別 0.5。給坐標(biāo)更高的權(quán)重是因?yàn)槎ㄎ痪戎苯記Q定 mAP 的上限objectness 保持 1.0 是因?yàn)檎?fù)樣本極度不均衡如果權(quán)重給太高負(fù)樣本的 loss 會(huì)淹沒正樣本類別權(quán)重壓到 0.5 是因?yàn)樵谡龢颖疽呀?jīng)很少的情況下類別分支的梯度容易過大。另外必須處理正負(fù)樣本比例。實(shí)測(cè)下一個(gè) batch 里正樣本可能只有幾十個(gè)而負(fù)樣本上萬(wàn)。我用的策略是只對(duì)負(fù)樣本中 objectness 預(yù)測(cè)值最高的前 K 個(gè)計(jì)算 lossK 取正樣本數(shù)的 3 倍其余負(fù)樣本直接忽略。這一步聽起來粗暴但它比直接給負(fù)樣本乘個(gè)小權(quán)重更有效因?yàn)樗劢乖凇澳P妥罾Щ蟮呢?fù)樣本”上。判斷訓(xùn)練是否正常我只看三個(gè)信號(hào)一是坐標(biāo) loss 應(yīng)該在 10 輪內(nèi)降到初始值的三成以下二是 objectness loss 的下降曲線要平滑如果出現(xiàn)周期性尖峰多半是某個(gè) batch 的標(biāo)簽編碼有問題三是正樣本數(shù)量均值應(yīng)該穩(wěn)定在一個(gè)區(qū)間內(nèi)如果隨 epoch 劇烈波動(dòng)說明標(biāo)簽分配的中心先驗(yàn)在邊界目標(biāo)上失效了。我曾遇到 objectness loss 每 5 個(gè) epoch 準(zhǔn)時(shí)跳一次的問題最后定位到是 dataloader 的 shuffle 與采樣器組合導(dǎo)致某個(gè)類別的樣本被集中投放改回標(biāo)準(zhǔn)隨機(jī)采樣就平了。6. 訓(xùn)練循環(huán)、顯存控制與推理后處理網(wǎng)絡(luò)和數(shù)據(jù)都跑通之后剩下的工作是從“能訓(xùn)”到“訓(xùn)得動(dòng)、訓(xùn)得好”。這一節(jié)的每一條都是我在有限顯存條件下被逼出來的直接照做能省很多試錯(cuò)時(shí)間。6.1 學(xué)習(xí)率調(diào)度、混合精度與梯度累積的組合我用 AdamW 起步初始學(xué)習(xí)率 1e-3 配 weight decay 5e-4前 3 個(gè) epoch 做線性 warmup之后余弦退火到 1e-5。warmup 不是可有可無(wú)的檢測(cè)頭是隨機(jī)初始化的前幾百步梯度尺度很大直接上高學(xué)習(xí)率會(huì)把坐標(biāo)分支推到一個(gè) bad local minimum表現(xiàn)為坐標(biāo) loss 長(zhǎng)期卡在高位不下來。混合精度我用torch.cuda.amp但loss 計(jì)算部分強(qiáng)制在 float32 下進(jìn)行。原因是 objectness 的 BCE 在 fp16 下容易溢出尤其是當(dāng)某個(gè) batch 里出現(xiàn)極端難負(fù)樣本時(shí)。寫法上我用 autocast 包裹前向loss 前用float()轉(zhuǎn)換scaler torch.cuda.amp.GradScaler() for imgs, gts in loader: imgs imgs.cuda(non_blockingTrue) with torch.cuda.amp.autocast(dtypetorch.float16): reg, obj, cls model(imgs) # 關(guān)鍵損失計(jì)算退回到 fp32保證數(shù)值穩(wěn)定 loss compute_loss(reg.float(), obj.float(), cls.float(), gts) scaler.scale(loss).backward() scaler.unscale_(optimizer) torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm10.0) scaler.step(optimizer) scaler.update() optimizer.zero_grad(set_to_noneTrue)梯度裁剪的閾值我設(shè) 10.0實(shí)測(cè)下來只有當(dāng)標(biāo)簽編碼出現(xiàn)異常時(shí)才會(huì)觸發(fā)所以它其實(shí)充當(dāng)了一個(gè)免費(fèi)的異常探針如果你發(fā)現(xiàn)裁剪頻繁觸發(fā)別急著調(diào)大閾值先去查標(biāo)簽。顯存不夠時(shí)用梯度累積每 4 個(gè) micro-batch 做一次step等效 batch 翻 4 倍。這里有一個(gè)細(xì)節(jié)必須配對(duì)處理——BN 的統(tǒng)計(jì)量在小 batch 下會(huì)失真我改用SyncBatchNorm或者在凍結(jié) BN 統(tǒng)計(jì)量的前提下累積否則等效 batch 放大了但 BN 看到的仍是小 batch精度對(duì)不上。6.2 NMS 的實(shí)現(xiàn)細(xì)節(jié)與置信度閾值的標(biāo)定方法推理階段把三個(gè)尺度的解碼結(jié)果拼成一個(gè)[N, 5C]的大張量先按 objectness 過濾閾值 0.05 起步寧低勿高因?yàn)楹罄m(xù) NMS 還會(huì)再篩再依次做按類別的 NMS。我的 NMS 實(shí)現(xiàn)里最容易寫錯(cuò)的邊界是IoU 計(jì)算要用到裁剪后的坐標(biāo)且不同類別的框不互相抑制。def nms(boxes, scores, iou_thr0.45): # boxes: [N, 4] 格式為 xywh坐標(biāo)已還原到原圖尺度 x1, y1 boxes[:, 0] - boxes[:, 2] / 2, boxes[:, 1] - boxes[:, 3] / 2 x2, y2 boxes[:, 0] boxes[:, 2] / 2, boxes[:, 1] boxes[:, 3] / 2 areas (x2 - x1).clamp(min0) * (y2 - y1).clamp(min0) order scores.argsort(descendingTrue) keep [] while order.numel() 0: i order[0].item() keep.append(i) xx1 torch.clamp(x1[order[1:]], minx1[i]) yy1 torch.clamp(y1[order[1:]], miny1[i]) xx2 torch.clamp(x2[order[1:]], maxx2[i]) yy2 torch.clamp(y2[order[1:]], maxy2[i]) inter (xx2 - xx1).clamp(min0) * (yy2 - yy1).clamp(min0) iou inter / (areas[i] areas[order[1:]] - inter 1e-7) order order[1:][iou iou_thr] return keepIoU 閾值我最后定在 0.45。這個(gè)值不是拍腦袋密集場(chǎng)景比如人群設(shè) 0.5 以上會(huì)殘留大量重復(fù)框而設(shè) 0.3 又會(huì)把相鄰的兩個(gè)真實(shí)目標(biāo)合并掉。我的標(biāo)定方法是拿驗(yàn)證集畫一張“置信度閾值-召回率”曲線找召回率曲線開始陡降前的拐點(diǎn)通常落在 0.25~0.35 之間而 NMS 的 IoU 閾值則固定 0.45兩者不要混在一起調(diào)否則你無(wú)法判斷性能變化歸因于哪一個(gè)。6.3 調(diào)試檢測(cè)模型時(shí)我常用的三個(gè)可視化手段第一是把標(biāo)簽畫回原圖。訓(xùn)練前必須做這一步我見過太多因?yàn)闅w一化坐標(biāo)和像素坐標(biāo)混用導(dǎo)致框全部擠在左上角的案例而 loss 依然在降因?yàn)槟P痛_實(shí)在學(xué)習(xí)這個(gè)錯(cuò)誤分布。第二是把預(yù)測(cè)框在訓(xùn)練中期畫出來哪怕框很亂只要它開始聚集在目標(biāo)附近就說明坐標(biāo)分支方向?qū)α恕5谌前闯叨确謩e統(tǒng)計(jì)正樣本數(shù)如果某個(gè)尺度長(zhǎng)期是 0說明 anchor 尺寸和你的數(shù)據(jù)分布完全錯(cuò)配那個(gè)尺度的檢測(cè)頭永遠(yuǎn)學(xué)不會(huì)。有一次我把這三個(gè)手段串起來排查了一個(gè)典型問題mAP 卡在 0.2 上不去可視化發(fā)現(xiàn)所有預(yù)測(cè)框都比真實(shí)框小一圈。原因是我在編碼時(shí)用了log(w_gt / w_anchor)解碼時(shí)卻用了exp(pred) * anchor的寬高順序搞反了把 w 對(duì)到了 h 的 anchor 上。這類錯(cuò)誤不可能從 loss 數(shù)值看出來只能靠可視化。7. 幾個(gè)必須提前知道的邊界與經(jīng)驗(yàn)最后分享幾條我認(rèn)為比代碼本身更值錢的經(jīng)驗(yàn)。第一不要在小數(shù)據(jù)集上追求多尺度。我最初在只有 1200 張圖的數(shù)據(jù)集上直接開三個(gè)尺度訓(xùn)練結(jié)果最小尺度分支一直是零正樣本白白多算了 40% 的前向開銷。數(shù)據(jù)量小的時(shí)候先用單尺度stride 16把整條鏈路驗(yàn)證通再逐步加尺度效率高得多。第二objectness 的分支比類別分支更容易出問題優(yōu)先調(diào)它。很多“mAP 上不去”的表象根因是 objectness 的校準(zhǔn)不好——模型給了目標(biāo)很高的類別分?jǐn)?shù)但 objectness 很低NMS 前就被閾值濾掉了。檢查方法是單獨(dú)統(tǒng)計(jì)正樣本上的 objectness 均值正常情況下它應(yīng)該隨訓(xùn)練穩(wěn)步上升到 0.8 以上。第三關(guān)于驗(yàn)證集的選擇我堅(jiān)持按場(chǎng)景而非隨機(jī)劃分。隨機(jī)劃分會(huì)讓同一段連續(xù)視頻或被同一組采集條件下的圖片同時(shí)出現(xiàn)在訓(xùn)練集和驗(yàn)證集里驗(yàn)證 mAP 虛高 5~10 個(gè)點(diǎn)是常有的事。按場(chǎng)景、按采集批次、甚至按時(shí)間劃分得到的數(shù)字才代表真實(shí)泛化能力。常見癥狀大概率根因快速驗(yàn)證方式loss 完全不降標(biāo)簽編碼與輸出通道順序不一致單 batch 過擬合測(cè)試看能否記住 4 張圖坐標(biāo) loss 平臺(tái)震蕩直接回歸絕對(duì)坐標(biāo)未用相對(duì)偏移檢查解碼公式的縮放項(xiàng)某尺度無(wú)正樣本anchor 尺寸與數(shù)據(jù)分布錯(cuò)配統(tǒng)計(jì)各尺度的正樣本數(shù)框普遍偏小或偏移anchor 寬高順序與編碼時(shí)不一致可視化預(yù)測(cè)框與 GT 疊加訓(xùn)練后期 mAP 回落學(xué)習(xí)率未退火或正樣本過擬合打印每輪正樣本數(shù)與 lr我還想強(qiáng)調(diào)一個(gè)調(diào)試習(xí)慣用 4 張圖做單 batch 過擬合測(cè)試。把這個(gè)小實(shí)驗(yàn)跑通loss 降到接近 0預(yù)測(cè)框和 GT 幾乎重合就等于證明了數(shù)據(jù)管道、編碼、損失、解碼這整條鏈路自洽。凡是鏈路級(jí)別的 bug都會(huì)讓這個(gè)測(cè)試失敗而鏈路一旦自洽剩下的問題都只是超參和容量問題排查范圍小得多。這個(gè)習(xí)慣幫我省掉的調(diào)試時(shí)間比我讀過的所有文檔加起來都多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
午夜视频久久久久一区| 精品伊人久久久大香线蕉小说| 九九探花视频在线观看| 少妇极品熟妇人妻无码| 97超碰国产亚洲精品| 91另类| 亚洲国产成人高清在线| 欧美 亚洲 另类 综合| 啊啊啊啊,啊啊好多水| 黄色人人| 午夜欧美J进J出白浆流出久久久 | 国产性爱乱伦AV| 91色鬼| 九九九九九精品视频| 另类一区| 91色综合色| xxx0国产在线播放| 一区二区三区成人 | 后入人妻无码| aⅴ日韩成人电影av在线免费看av大全| 自拍视频大全亚洲专媒视频/一区二区三区| 九九av| 在线播放免费av福利片| 本道在线| 岛国毛片在线观看免费| AV中文字幕剧情1区2区3| 欧美性爱第一页久久| 91婷婷伊人狠人| 欧美人妻制服| 啊啊啊好湿久久| 1769国内精品视频| 午夜精品久久久久| 欧美性爱1080p| 国产91丝袜在线播放蜜月| 波多野结衣一级视频| 国产偷人妻精品一区二区在线| 日韩精品字幕| 亚洲精品久久一区二区三区蜜桃臀| 美国人人操人人操| 少妇激情AV| 国产精品久久久三级无码| 欧美激情一| 9九九九九视频在线观看| 91亚洲欧美激情| 人妻熟女字幕一区二区| 欧美精品日韩久久久九| 亚洲欧美综合网站| 久久久久久亚洲精品不卡人乳| 熟女91网站| 五月天黄色激情视频| 九九九九九九九九九九九蜜桃| 日本高清有码网址视频| 91骚熟女| 制服诱惑亚洲一区二区三区在线观看| 在线国产一区二区av| 日1区2区3区2020| 国产激情在线观看| 日韩在线国产字幕| 伦理日韩国产久久| 2020中文字幕| 日韩欧美亚洲自拍偷拍| 97精品97| www.欧精品| 精品成人亚洲午夜电影| 99re综合伊人| 日韩AV一区二区三区三州三州| 中文字幕精品一区欧美| 青娱乐91| 国模久久在线| 97久久精品国产| 国产伦乱91| 搡老女人老91妇女老熟女| 操操操操操操| 五月天开心网| 在线人人人人人人精品超 | 干B| 狠狠狠一区二区三区| 国产91影院| 天天日熟妇| 婷婷五月天小说| 久久黄色视频一区二区三区| 国产精品久久久 | 操逼操操操91| 国产黄色影片在线观看| 无码久久亚洲高清,| 大但人体久久久久| 韩国国产欧美情侣视频在线| 亚洲一二三四区机械| 国产精点久久久成人| 欧美视频一| 另类欧美色| 亚洲人久久久网| 欧美熟女激情| 精品国产一区二区三区久久久蜜臀 | 伊人天堂在线| www超碰| 一区不卡在线观看av| 天天日天天看| 欧美日韩在线小说 | 26uuu国产日韩综合在线观看| 亚洲日本天堂| 蜜桃色院一区久久| 久久综合女优| 美女黄码视频午夜| 艳尻美人妻| 国产在线76页| 香蕉婷婷| 志村玲子视频一区二区| 性爱乱伦一区| 18禁超污无遮挡无码免费网| 天天干人人干天天日97| 日本欧美一区二区三区免费| 色噜噜精品一区二区三| 夜夜操青青草| 久久精品国产亚洲AV无码电影| 青草草免费网站av| 艹精品| 黄色香蕉视频网站一区| 亚洲熟女av中文字幕| 蜜臀va69| 精品少妇99| 国产精品另类| 青青五月天| 男女啊啊啊| 999热这里只有精品| 日韩国产九九精品一区二区三区毛片| 玖玖资源视频一区二区三区| 在线一区| 97操综合| 亚洲国产97| 一级性爱视频免费在线| 8x福利精品第一福利视频导航| 久操操AV电影| 欧美极品性爱天天射| 亚欧成人综合影院| WWW黄片COM| 制服乱伦| 澳门人妻久久| 熟女高潮合集-永久久久-成人AV| 日本不卡免费二区| 在线 欧美 亚洲| 激情小说亚洲图片| 九久久精品| 超碰在线日韩一区| 久久这里只有精品9| yiqicaoav| 欧美一级黄色免费专区| 婷婷五月天激情网| 操死我干死我| 91狠狠狠| 欧美激情性久久久久久| 欧美日韩成人在线| 欧洲乱码一区二区| 青青草久久| 精品人妻少妇| 午夜乱轮操逼视频免费看| 美女写真| http://qxhbdz.com| 亚洲激情色片| 欧州91高潮| 操逼日批| 综合色图区| 18禁久极品美女久久哦哟呀!| 欧美中字不卡| 天堂无码精品国产久| 亚洲成人久久美女| 嗯嗯啊啊用力视频免费| 欧美日韩精品久久久久东北老熟妇| 嗯嗯啊啊啊好爽| 丰满美女一级毛片在线播放| 日韩不卡av一二三| 熟妇一区二区三区| 肥佬影院91| 无码免费在线观看黄色片| 中国东北熟女老太婆内谢| 婷婷五月天小说| 少妇人妻无码| 国产一级内射高清视频| 欧美午夜视频精品久久| 欧州激情视频在线一区二区| 蜜臀AV一区二区三区| 日韩人妻一区二区| 91丨九色丨国产打屁股| 1769一区二区| 99re这里只有精品3| 欧美激情黑人| 天天干人人干天天日97| 97免费在线视频在线观看| 加勒比海成人视频网 | 日韩黄色成人性爱| 精品国产乱码久久久影院| 国产福利电影| 日本在线不卡123| 9999久久久久| 国产精品久久久久久 百度| 国产最新AV| 九九九九九九九九九国产精品 | 99re在线视频国产| 中国一级特黄大片护士 | 国产精品久久久久久照片| 欧美综合97www| 亚洲女人91| 亚洲色欲天天人妻无码系列专区| 亚洲色情在线影视| 曰韩av中文字幕专区| 91久久堂| 午夜福利激情在线视频| 99国产在线绯色一区| 大香蕉日韩| 久久久国产三级黄色片| 91天美| 国产精品一二三区福利| 91精品人妻| 欧美日韩99| 久久久一二三四区| 欧美激情五月天| 久久视频,这里只有精品 | 97视频观看| 九九久久玖玖| 偷窥自拍亚洲色图| 亚洲无线码欧洲精品区别| 亚洲一区二区三区麻豆传媒| 中国AAAAAA黄色片| 少妇与黑人高潮在线| 1769一区| www.AV有限公司一区| 日逼逼免费看| 久久精品无码专区| 欧美宗合网| 欧洲综合无码| 亚洲AV噜噜狠狠网址蜜桃动漫| 久久久九九网站| 亚洲和欧美裸体美女双飞视频| 欧洲精品欧洲精品| 26uuu欧美日韩| 中文字幕精品资源在线| 91久久久老司机| 搡老熟女免费视频| 国产欧美第五页| 狠操91,com| 自拍偷拍亚洲熟女妇人精品| 欧美成人一区二区三区在线播放| 大香蕉综合| 神马久久久久| 欧美色偷拍| 青娱乐啪啪视频| 激情视频网址| 老熟乱一区二区三区四区| 欧美黄片欧美黄片xxx| 精品久久九| 国产一在线观看| 男人的天堂2018.| 九九九九精品九九九九| 五月天婷婷色| 久久久一区二区三区四区五区| 丁香五月激情啪啪| 日本天天干天天操一区| 久久天天性久久伊人| 精品亚洲天堂| 91N欧美| 青草成人免费视频一com| 色一射色一射| 国产精品99999| 亚洲AV资源| 在线观看亚洲成人精品| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 亚洲九九视频| 五月天开心网| 国产黄色视频久久| 国产熟女二区| 国产AV高清AV无码| 色吊丝 日日骚 清纯唯美| 黑丝内射一区二区三区| 国产福利视频精品视频| 激情婷婷丁香| 熟女视频久久| 婷婷五月天激情四射| 中文字幕版| 九九干| 九九五月天| 中文字暮97| 日小BB小视频| 96国产精品| 亚洲男人的天堂V| 琪琪精品免费一区二区三区| 91成人国产综合久久精品蜜月| 欧美精品日韩久久久九| 九九九九精品九九九九| 欧美黑人168页欧美黑人167| 4141514逼喷水三级片| 无码av永久免费专区网站| 起碰97| 2026国产精品视频| 97天天搞在线| 黄片免费久久久久久久| 搡老女人老91二区| 亚洲综合一| 色综合色色| 日韩在线欧美精品一区二区| 中出20p| 国产av高清版| 亚洲日韩精品在线播放| 亚洲国产婷婷在线播放| 一级免费精品| 欧美午夜色妇色鬼| 婷色五月| 伊人久久综合影院| 天天视频网站黄| 欧美熟妇精品黑人巨大91| 欧美猛交黑寡妇中文字幕| 国产超碰国产97| 99免费在线视频| 精品毛片久久久精品毛片| 国产日逼视频| 黄色香蕉视频网站一区| 欧美一二三| 亚洲中文丝袜美腿诱惑字幕| 在线小说视频一区| 超碰98综合网| 麻豆国产第一| 91久久久老司机| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 国产精品视屏| 热热色中文无码| 国产亚热在线久久| 综合性视频99| 久久视频,这里只有精品| 91撸色网 玖玖网 欧美| 欧美精品第四五页中文字幕在线观看| 精品国产嫩穴视频| 欧美日韩国产中文超碰| 五月激情综合网| 国产精品午夜高潮呻吟久久av| 欧美日韩国产高清在线一二三区| 操逼日批| 曰韩操B| 国产操逼视频在线观看| 精品成人无码| 日本成人A片网站| 日韩黄片影院| 在线观看高清AV| 欧美成人A√在线一区二区| 亚洲精品国产精品成人| 日韩欧美成人性爱在线| 制度丝袜99| 精品成人动漫一区二区| 午夜啪啪片| 午夜影美女日鸡鸡天天视频国产| 国产精品一区二区三区,亚洲综合| 精品成人无码| 亚洲最大AV网| 国产一级片| 密桃99999| 91neishe| 欧美亚洲美少妇一区二区| 国产美女口爆吞精| 不卡六六在线91| 小电影欧美91| 日韩av在线精品观看| 亚洲另类欧美精品| 美女午夜福利免费视频| 久久99亚洲精品久久99果| 在线播放中文字幕| 日本裸体久久色噜噜| 超碰97玖玖爱| 锕锕好爽 死我在线观看| 久久蜜桃一区二区| 97色97干| 欧美成人四级在线播放| 丁香五月性| 粉嫩国产精品久久粉嫩| a人欧美综合天堂麻豆| 青青三级视频| 亚洲高清91| 日韩三级在线观看网站| 国产精品欧美日韩久久| 天天舔天天 | 91亚洲黄色网| 成人免费性爱视视| 丰满人妻av一区二区三区| 狠狠狠狠狠狠| 美女91在线观看| 精品久久久一本一道| 久久这里只有精品9| 国产9 9在线 | 亚洲| 免费操逼视频下载| 久操B网| 1024午夜激情男人的天堂| 亚州,欧美在线| 秋霞Av理论一级在线| 亚州操逼图| 天美av在线观看| 久久精品国产精品| 岛国免费视频在线| 婷婷综合五月| 天天躁狠狠躁av| 成人久久久| 激情小说成人日本无码一| 蜜臀久久久久久999| 在线黄色污污网站| 九热中文字幕| 国产女性无套 免费观看| 97干色天堂| 国产综合久| 1级黄色夫妻对换性交免费看| 综合久久中文字幕综合日韩精品| 超碰夫妻97| 不卡日本一区二区| 国产福利精品最新在线| 国产精品视频在线播放| 亚洲无码com| 乱色视频中文字幕| 999九九精品| 91丝袜在线观看| 1769精品一区二区三区| 九草在线大香蕉| 亚洲综合20p| 中文字幕日韩人妻视频一区二区三区 | 亚州欧美综合| 强奸国产精品视频| 亚洲人精品久久久喷水| 夜夜夜爽www精品视频| 亚洲av影音先锋| 欧美精品双插| 26uuu最新| 五月婷婷六月色| 骚日日av| 欧美日韩性爱操大逼| 色大香蕉97N| 欧美十八禁视频| 欧美熟妇视频| 成·人免费午夜在线观看| 再深点灬舒服灬太大了好硬好爽| 色情婷婷久久五月天| 偷拍三区| 亚洲情色图片区| 在线视频亚洲无码| 97天天爽| 女沟厕偷窥piss小便| 懂色AV一区二区三区| 日韩天天综合| 超碰人人在线| 爱爱动态60秒| 91超碰人人| 亚洲国产综合图区中文字幕| 9久超碰| 搡老女人老熟女91老熟女综合网| 激情五月天婷婷| 久久久亚洲精品中文字幕人妻| 26uuu国产免费观看| 无码精品啪啪啪一区二区三区三州| 777AV电影| 亚洲视频二区 | www黄片免费看com| 好湿好紧视频| 欧美色婷婷| 九久9精品| 97九色人妻| 在线日韩精品一区二区三区| 日日干日日操五月天伦理视频| 熟妇综合一区二区三区| 日韩传媒在线| 欧美性巨大╳╳╳╳╳高跟鞋| 人妻少妇久久中文| 久热九九| 久久精品人妻一区| 成人热久久精品| 小视频玖玖| 后入式五六区| 激情五月综合网| 性综合网| 欧洲精品欧洲精品| 五月天综合在线| 91色色网站| 国产亚洲深夜激情| 牛牛久久国产精品视频一二三 | 五月天婷婷影院| 精品91日日夜夜超清资源| 精品国产网站| 欧美少妇性爱网站| 97中文字幕九区| 中文一区二区婷婷视频| 亚洲系列第一页| 东北女人性交| 中文字幕亚洲欧美在线不卡| 丝袜美腿制服人妻二区中文字幕| 人妻丝袜一区二区三区在线| 成人天天看站长推荐| 乱伦3P视频| 婷婷五月天激情四射| 九草在线大香蕉| 综合色图区| 婷婷操视频| 亚洲色图伊人网| 日韩精品99999| 国产强奸乱伦xd| 后入人妻无码| 亚洲自拍一区夜夜操| 色综合网1| 欧洲在线性爱视频| 啊啊啊啊,啊啊好多水| 富二代亚洲精品99| 欧美做爰无码A片视频| 日本操逼无码| 中文字幕免费看| 后入内射蜜桃臀| 国产AV久久久蜜爱影集| 亚洲在线网站| 九九操久久国产免费视频| 久久亚洲熟妇在线视频| 大香交伊人网| 成人乱码一区二区三少妇| 欧美色网| 中国少妇啪啪视频| 美女丝袜激情小说| 75大香蕉| 亚洲91少妇| 国产懂色精品国产av| 亚洲视频中文一区| 久久久偷拍| 97av,com| 色色色色色色色色综合| 素人美腿视频网站| 天天日天天爽| 色官网在线| 啪啪AV导航| 欧美成人性爱视频在线播放 | 黄色片大香蕉| 超碰成人公开| 激情天天视频| 欧美v日韩v亚洲v最新在线| 国产又粗又长的视频| 久久同城AV| 狠狠操一区二区| 亚洲国产精品久久久久婷婷青年| 玖玖在线视频| a在线观看| 秋霞欧美性爰视频| 亚洲 国产 精品一区| 国产无码高清操逼视频| 偷拍 欧美 日韩| 久久九色| 日本一级特级毛片视频| 69精品| 熟妇人妻精品一区二区| 成人青青草原伊人| 中韩中文字幕在线观看| 久9爱精品| 少妇高潮喷水无套久久久久久| 最新av在线| 亚洲第一二区另类图| 在线天堂999| 日韩伦理久 久久 清纯| 精品91摸| 中文字幕少妇色| 91色五月俺来也| 男人的天堂2018.| 免费农村成人少妇人妻Aa一区二区视频 | 粉嫩AV一区夜夜嗨| 欧美韩日精品资源| 午夜无码熟妇丰满人妻| 97久久天天综合色天天综合色电影| 天天舔天天日天天射| 亚州欧美一区| 伊人少妇久久久| 另类欧美| 欧美日韩制服| 亚洲九九九| 尤物av网站免费在线播放| 另类图片综合| 熟女激情综合网| 人人妻人人爽 97人人看碰人免费公开视频 | 久草福利在线资源站| 欧美精品久久久久久久久88| 激情九月婷婷| 亚洲不卡AV在线| 色精品极品| 18岁禁 茉莉成人久久| 欧美中文狠| 啊啊啊啊好大好硬啊啊啊啊啊| 精品无码产区一区二| 日本不卡免费二区| 啊啊啊想要| 韩三级a视频在线观看| 一级片在线观看高清无码| 久操视频资源站公开| 激情色色| 伊人久久国产免费观看视频| 嗯嗯嗯啊啊啊干死我吧| 亚洲天天自拍| 国产精品福利资源在线尤物| 干干干天天| 操操碰| 麻豆国产av网| 97视频在线视频| 易易A毛视频| 国产无码精品久久久久久| 国产精品无码久久久久2025| 乱伦系列一区二区| 久操高青| 亚洲熟妇综合久久久久久| 少妇天堂| 国产宅男宅女在线观看| 97色色色| 欧美亚洲厕所精品偷拍91| 新怡红院| 免费观看性欧美一级| 深田咏美亚洲精品福利社| 美女黄页| 在线 欧美 亚洲| av黄图片在线观看| 国内精品伊人久久久久影院会| 97超碰jingpin| 亚洲日韩XXX| 少妇久久久久| 热99这里只有精品| 国产a级精品| 中日韩久久久免费看| 襙一襙| 综合网色| 国产精品电影推荐| 亲子敌伦对白在线播放| 国产精品自在自拍视频| 国产精品乱码久久久久久久久久久久| 亚洲欧美激情小说| 岛国色情视频在线观看| 国内精品999| 五十路成人在线视频二区三区| 亚洲中文字幕精品一区| 综合色色婷婷| 美女91色黄18| 亚洲高清无毛一区二区| 91一区二区| 中文精品少妇天堂| 亚洲精品尤物yw在线影院| 日本91白丝| 欧美人妻一区二区| 人人操人人搞人人草| 人妻天天爽夜夜爽精品2| 中文字幕乱妇免费视频| 国产精品久久成人免费| 韩日巨乳美女免费视频在线观看| 日本色色色网站免费看不卡| 天天日天天舔天天喷天天射| 久久噜噜噜精品国产亚洲综合| 天天日天天屌天天操| 2017亚洲天堂| 欧美国产日韩清纯唯美| 1204人成网站色www| 艹精品| 日本不卡二三区| 日本成a人v网站在线观看| 大香蕉伊人久久| 黄站在线免费观看| 国产第25页在线观看| 亚洲欧洲色情高清| 国产v片在线免费观看| Av色五月| 男人的天堂 在线一区| 一区二区三区四区色图| 亚洲性高潮| 久9热| 久久日韩肥臀| www.久久| 欧美色图91| 人妻少妇久久久| 国产精品久久泡妞网站| 色色色网站| 婷婷激情四射| 一二三区在线| 97久久网| 日韩内射视频| 国产9 9在线 | 亚洲| 黑人天8A∨高清网站| av爱爱爱| 秋霞一区二区三区四区五区六区七区| 无码一区二区精品视频久久久春药| yazhousetuoumei| 人人做,人人操,人人摸| 亚洲第一二区另类图| 日韩中文字幕精品一区在线| 日本五十路在线| 顶级丝袜熟女一区二区三区 | 日韩乱码Av| 狠狠操狠狠操操| 欧美综合第一| 亚洲人妻在线一区| 99福利社| 五月丁香啪啪| 欧美亚洲高清| 啊啊啊啊二区好大| 亚洲少妇综合在线播放| 超碰吊日色| 亚洲 欧美 中文 日韩超碰| 精品国产一区探花在线观看| 欧美操逼视频二区| 日本一区二区成人在线| 国产精品97视频| 久草综合京东| 色官网色综合| 日韩精品午夜操呦呦不卡影院| 国产精品久久久亚洲一区| 五月丁香六月综合缴清无码 | 九九综合久久| 久 久无码人妻AV| 躁躁日曰躁2020| 精品在线观看视频在线| 俞拍久久国应视频| 超碰在线人妻不卡| 青青操狠狠撩| 欧美性爱第1 页| 啊啊啊啊啊啊啊啊啊啊在线观看| 操比国产| 国产在线视频午夜精华在| 夜夜操中文字幕| 能看的AV| 秋霞一级A片黄色视频| 亚洲美女黄色| 国产精品情侣啪啪| 日韩探花精品在线视频| 五月天伊人网| 青青草色插素人| 色优久久| 中文日本免费高清| 综合 亚洲 欧美| 狠狠亚洲| 69精品少妇一区二区三区蜜桃| 无遮挡一级毛片视频免费的| 亚洲综合色图欧美| 欧美日韩精品国产91| 五月天婷婷色色| 人妻一二三区| 女生久久网| 91操人| 欧美狠狠弄| 丁香婷婷久久| 免费αⅴ在线观看| 91老熟妇| 97久久综合网| 91麻豆一二三区| 好淫网一二三视区| 亚洲av强奸乱伦| 伊人精品久久网站| 91天天综合| 好色美女九七第一页| 久久久婷| 99re这里只有精品中心播放| 色一色综合网| 亚州免费啪啪视频| 9久在线视频只有精品| 婷婷精品久久av影视| 久草在| 天天日日本| 男人兔费天堂| 大香蕉综合| 26uuu国产成人综合| 亚洲电影中字一区二区| 97超碰9| 在线观看啊啊啊啊啊| 99色骚| caopeng97人妻| 国产少妇与亚洲av| 色欲天天综合网| 欧美性爱一级操| 欧美成人四级在线播放| 岛国A V在线免费看| 超碰色综合| 久久国产乱子伦精品免费女,网站| 日韩欧美蜜桃精品久久中文字幕久久| 欧美日韩婷婷中文| 蜜臀AV成人精品蜜臀AV久久| 91大胆欧美| 性爱动态120秒| www.狠狠操| 色婷婷综合视频| 日韩欧美经典在线观看| 国产av美女被艹的乱叫| 成人乱码一区二区三少妇| 性色生活片久久毛片婬片免费放女人一级毛片| 国产一区二区三区高清视频| 青青草国产欧美非洲黑人| 欧美色另类| 极品肉射| 亚洲天堂男人网| 91九九| 大香蕉欧美| 天天日天天干天天操| 蜜臀久久99精品久久久久| 哈哈操电影AV| 亚洲乱色视频一区、二区在线| 澳门人妻久久| 成人日韩中文字幕| 91欧美美女日韩国产婷婷| 久久精品老司| 国产精品视频| 久久久一区二区| 丁香7月婷婷| 欧美另类丝袜熟女| 4虎在线观看| 久久人妻| 色哟哟AⅤ| 黄色激情电影在线观看| 十八岁啪啪视频免费看| 国产激情av女片自拍| 91精品丝袜在线观看| 精品久久99| 日韩三级久久久| 色呦呦、国产精品| 国产熟妇一区二区| 操逼无毒无码免费视频| 久久精品操| 超碰91在线| 久久 国产 无码| 日日操丁香五月天| 国产亚洲综合欧美一区| 香蕉在线一区二区三区| 午夜天堂网| 97干综合网| 日本黄色精品| 日韩一级欧美一级国产一级台湾 | 久热这里| 九九九免费视频| 一级毛片久久久久久久女人18| 日韩乱中文| 五月天综合网| 国产嫩草精品A88AV在线| 色在线69堂| 97亚洲中文| 日本成人A片网站| www.色婷婷色综合| 一二三啪啪专区| 插入粉嫩少妇视频| 亚洲欧美伦综合| www.亚洲黄色| 蜜桃无码AV一区二区| 久jiu久神马影院| 天堂亚洲精品久久老牛| 一本色道久久综合精品婷婷| 国产在线能看的你懂的| 探花一区在线| 人妻日日夜夜精品 | 九九热只有精品| 香港澳门日本三级网站| 五月综合婷婷久久网站| 黄页18禁| 欧美人妻熟女在线| 午夜男女爽爽爽影院视频| ?亚洲伊人伊成久久人综合网| 伊人五月天青青草婷婷| 99啪啪视频| 中文字幕乱码人妻一区二区三区,99精品| 日韩综合97P| 97碰| 色色色色电影网| 18岁禁 茉莉成人久久| 欧美色97| 欧美黑人精品在线播放| 大香蕉中文aV在线| 国产高清1234区| 91亚洲丝袜| 人人么人人操| 亚洲制服欧美另类内射| 粉嫩国产精品久久久| 九九九九热只有精品| 国产二区视频在线观看电影| 欧美日韩国产在线| 蜜桃视频啊啊啊啊| 精品久久久久久AV无码| av中文在线| 青青草久久在线| 国内毛片热久久思思热| 开心激情站| 欧美综合狠| 九九热久久99精品re| 天美麻豆精品视频99| 人妻精品一区一区三区蜜桃91| a片偷拍视频| 久久黄色网址| 久久三区四区| 俺去俺来也在线www| 狠狠亚洲| 亚洲色图尤物视频| 日韩美女久久一区二区三区| 国产精品97视频| 国产综合网站在线播放 | 岛国黄色大片网站| 97色涩| 日韩性爱一级片| 亚洲色图久久成人| 91久久婷婷| 麻豆国产免费影片| 啊啊啊啊啊舒服| 欧美日韩 强奸乱伦| 亚洲视频小说| 国产色综合亚洲色综合吹潮| 欧美亚洲激情小说| 久久91| 色嘟嘟人妻天堂网| 久久区| 91亚洲人电影| 69一区二区三区 | 99av| 人妻啊啊人妻啊啊| 国产三级片在线观看| 色一情一乱一乱一区91Av| 久久成人东京热人妻| 欧美亚洲中文字幕| 蜜桃AV天堂| 黄网在线播放| 久久超碰com| 久久香蕉国产传媒一区剧情天美| 97免费视频在线| A级在线视频| 91女神在线视频| 国产主播福利| 有码色中文字幕在线观看| 无码区蜜乳| 久久女同性恋一二区| 一区二区三区黄片免费观看| 99只有精品| Blackedraw视频一区二区| 四虎免费视频| 婷婷丁香成人| 亚州男人天堂| 夜夜嗨AV蜜臀av| 亚洲无码国产精品久久| 色欧洲97| 亚洲综合婷婷| 久久加勒比| 久九九九九九九热| 成人一道本免费视频| 东京热熟女亚洲视频网站| 国产尤物AV尤物在线观看不卡| 欧美色图自拍| 920日本午夜免费| 色综合一本| 97频视在线| 综合久久中文字幕综合日韩精品| 一区二区三区高清| 国产大片精久久久久久| 日本东京热加勒比久久| 蜜臀va69| 亚洲天天艹| 樱花蜜乳av| 婷婷五月天色网| 殴美性色a级欧美| 天天操人人操狠狠插| 日韩特一级久久| 91狠| 国产一级高跟丝袜| 97久久超碰亚洲| ss久久| 黑人嘿嘿嘿超爽免费视频| 超碰久超碰久| 大香蕉伊人在线成人AV在线观看| 中国一区二区亚洲人妻| 天天综合欧美| 熟女网站最新| 99精彩视频| 2017人人操,人人摸| 欧美日韩妖精91com| 熟妇人妻一区二区| 人妻乱仑一区二区三区| 精品九九九九九九| 91nbbbbbb| 91视频国品一二三区| 国产中文大片资源中文字幕| 亚洲综合伊人无码久久| 白丝jkav| 99在线观看| 日本成人A片网站| 日本大香蕉综合网红本杳社区| 亚91亚洲网| av资源在线观看少妇| 精品久久无码午夜福利| 午夜噜噜噜| 91爱做| 亚洲国产精品乱码在线观看| 极品尤物女神在线观看| 色在线视频导航| 国产乱码久久久| 久久久久久久久久黄色网| 日日操天天操| 久久亚洲AV无码专区国产精品| 欧美天天弄| 婷婷五月天成人网| 亚洲成人性| 久久久新亚洲AV| 99久久免费看精品国产一区| 亚洲自拍欧美国产首页网曝| 丁香五月影院| 91三级理论片播放器| 国产极品粉嫩馒头一线天av| 91爱剪切久久| 色五月AV在线| 91在线丝袜视频| 久久久999日本大片| 蜜乳av首页| 97精品熟女少妇一区| 亚洲麻豆av一区二区| 国产人妻久久精品一区二区三区| 亚洲综合性网址| 91人妻丝袜无码| 艹我哪美一区无码| 人、人、摸,人、人、草| 久久受www免费人成| 国产 日韩 欧美一区| 亚洲性天堂| 99超碰网| 少妇特黄一区二区三区| 日韩精品操少妇| 欧美日韩资源在线| 97香焦色区| 一区二区 韩日AV| 婷婷综合网| 欧美疯狂做爰xxxx| 青娱乐国产精品| 正在播放国产精品一区| 亚洲国产一级黄色视频| 天天综合网91| 久夜视频| 超碰九7免费| 久久久偷拍| 78m啪啪啪| 超碰久超碰久| 麻豆一区二区三区在线看| 欧美小说区视频区| 亚洲在线A| 91精品婷婷国产综合久久| 欧美熟女逼久久久久久| 一级黄碟| 99国内熟女露脸视频| 久久少妇人妻| 热热色色综合| 日本性一区| 久久久九九| 亚洲人妻久久久| 老鸭窝在线视频播放| 激情婷婷丁香网| 深爱伊人影院| 超碰97男女| 欧美美女视频| 久久久久99999| 9久精品| 性色AV蜜色av色欲av| 91性高朝久久久久久久久| 欧美爱三级日韩久久| 亚洲国产欧美一区二区潘金莲| 91av一区二区在线观看| 国产亚洲精品农村妇女| 国产一级作爱毛片| 国模吧 一区二区三区| 亚洲激情综合| 欧美日韩性感| 亚洲天堂另类小说男人| 精品97精品97| 九九九九九九视频| 亚欧操逼片在线观看 | 日本熟妇人妻中出视频| 中文字幕性感少妇av| 色噜噜狠狠色综合日日| 天综合中文| 射欧美综合| 91色色综合| 色网亚洲人| 91伊人| 狠狠爱夜夜干| 日本不卡中文| 曰韩人妻中文字幕在线| 一级人妻性爱视频| 色综合av男人天堂| www.久久爱| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 2025年A片视频精品| 夜夜操青青草| 欧美顶级黄片AAAAA在线免费看| 成人在线日韩| 亚洲男人天堂网久久| 天堂涩涩| 干B网| 亚洲av国产av综合av卡| 欧美成人黄网色网站| 亚洲日本加勒比在线| 蜜臀AV成人精品蜜臀| 精品免费成人久久| 思思久热在线精品66| 欧美日韩国产高清在线一二三区 | 亚州综合AⅤ| 蜜臀AV一区二区三区| 日本成熟少妇A∨网站| 91三级理论片播放器| 亚洲情色91| 日本一久是| 特色a在线上| 中文字幕精品日韩中文字幕| 国产精品色色| 欧美日韩婷婷中文| 9 1果冻精品视频| 免费久久一级毛片大黄| 免费一级视频特黄色大片| 男女91| 欧美激情在线观看视频| 无码一区二区精品视频久久久春药 | 尤物网站91| 中文字幕精品资源在线| 亚洲综合另类欧美久久久| 国产超碰欧美| 91视频伊人| 五月婷婷色色| 天天色怡春院| 啊啊啊在线观看| 操逼网免费无码视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚欧无码在线| 蜜桃精品一区二区三区ww| 超碰在线1234区| 亚洲AV无码乱码| 亚洲综合小说另类图欧美视频激情小说色五月天 | 日韩欧美亚洲自拍偷拍| 国产成人无码网站在线视频| 极品内射| 天天做天天爱| 国产女人成人精品视频| 欧美白嫩女HD| 日韩欧美日韩| 亚洲激情AV| 国产AV人人夜夜澡人人爽麻豆| 国产午夜精品理论片一二三区区| 97色婷| 久久9999| 一起草日韩| 97国产亚洲中文在线| 熟女人妻一区二区三区| 国产大学生高潮在线播放| 亚洲精品美女操逼| 91精品无码久久久久久久| 欧美色图天堂在线| 五月天社区| 人妻激情视频| 青娱乐久久艹| 人妻丝袜肏逼| 无码外流操逼视频| 一区久久久二区| 国产精品香蕉| 色香欲综合| WWW美腿丝袜香蕉中文| 欧美在线永久天堂| 欧美性爱97超碰| 国产精品一区二区三区四区五区| 国产福利av精彩对白| 色眯眯av| 国产女人和拘做爰视频 | 久久9精品| 美女自卫慰黄网站免费| 破处bbq| 操逼逼中文字幕| yy少妇精品久久| 亚洲一级性爱视频免费看| 五十路熟女工口 | 国产无码成人无码|