日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

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

從零手寫(xiě)YOLO檢測(cè)頭:網(wǎng)格預(yù)測(cè)、標(biāo)簽分配與損失收斂實(shí)戰(zhàn) 1. 為什么我選擇從零手寫(xiě)一遍YOLO檢測(cè)頭先說(shuō)結(jié)論如果你已經(jīng)能熟練調(diào)用現(xiàn)成的檢測(cè)框架跑通推理卻說(shuō)不清一張 640×640 的圖進(jìn)去之后為什么輸出是 8400 個(gè)候選框、為什么正樣本只有寥寥幾個(gè)、為什么 loss 里有一項(xiàng)幾乎不下降——那這篇內(nèi)容就是寫(xiě)給你的。我打算把一次完整的實(shí)驗(yàn)過(guò)程攤開(kāi)講用 PyTorch 把一個(gè) YOLO 風(fēng)格的單階段目標(biāo)檢測(cè)模型從數(shù)據(jù)管道、骨干網(wǎng)絡(luò)、檢測(cè)頭、標(biāo)簽分配、損失函數(shù)一路搭到訓(xùn)練收斂和推理可視化。這里說(shuō)的“YOLO”不是指某個(gè)具體版本的官方實(shí)現(xiàn)而是指單階段、Anchor-based、輸出為網(wǎng)格化預(yù)測(cè)張量這一整類檢測(cè)范式的核心骨架。選它做實(shí)驗(yàn)的理由很實(shí)在相比兩階段方法它沒(méi)有區(qū)域建議網(wǎng)絡(luò)那一層整條鏈路是端到端可微的任何一個(gè)環(huán)節(jié)寫(xiě)錯(cuò)都會(huì)立刻體現(xiàn)在 loss 曲線上調(diào)試反饋非常直接相比純分類任務(wù)它又多出了坐標(biāo)回歸、正負(fù)樣本分配、NMS 后處理這幾塊真正的“工程難點(diǎn)”正好是檢驗(yàn)自己是否真的理解檢測(cè)模型的分水嶺。適合誰(shuí)看有 PyTorch 基礎(chǔ)、寫(xiě)過(guò) Dataset 和訓(xùn)練循環(huán)、能看懂卷積和矩陣運(yùn)算但對(duì)“檢測(cè)模型到底怎么訓(xùn)起來(lái)”還停留在調(diào)包階段的同學(xué)。全文的代碼都是可運(yùn)行的片段級(jí)實(shí)現(xiàn)我刻意避開(kāi)了過(guò)度封裝參數(shù)含義全部寫(xiě)進(jìn)注釋你可以直接抄進(jìn)自己的實(shí)驗(yàn)倉(cāng)庫(kù)。至于我為什么堅(jiān)持手寫(xiě)而不是直接改開(kāi)源倉(cāng)庫(kù)——因?yàn)楦膭e人的代碼時(shí)你永遠(yuǎn)在猜作者為什么這么寫(xiě)自己寫(xiě)一遍錯(cuò)一次就永遠(yuǎn)記住了。2. 先想清楚輸入輸出約定再動(dòng)手寫(xiě)第一行代碼動(dòng)手搭網(wǎng)絡(luò)之前我強(qiáng)制自己先在紙上寫(xiě)清楚三件事輸入張量的形狀、輸出張量的形狀、以及兩者之間的語(yǔ)義映射。這一步偷懶后面 80% 的 bug 都源于此。很多人一上來(lái)就抄 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è)尺度拼起來(lái)看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ǔ)充說(shuō)明一個(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í)慣是把它寫(xiě)成常量并只在一處引用# 每個(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 常量看起來(lái)啰嗦但我在排查一次“類別分?jǐn)?shù)全部趨同”的問(wèn)題時(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)定得多。解碼公式我固定成下面這樣寫(xiě)在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ù)必須顯式寫(xiě)成ij否則在較新版本的 PyTorch 里會(huì)產(chǎn)生警告而且在寬高不相等的特征圖上會(huì)靜默給出轉(zhuǎn)置后的網(wǎng)格坐標(biāo)全錯(cuò)卻不會(huì)報(bào)錯(cuò)。我因?yàn)檫@個(gè)排查過(guò)一整晚。寬高用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)寫(xiě)錯(cuò)了頂多 shape 報(bào)錯(cuò)數(shù)據(jù)寫(xiě)錯(cuò)了是“能跑、loss 也降、但 mAP 上不去”最難定位。所以這一節(jié)我把數(shù)據(jù)管道拆得細(xì)一些。3.1 圖像與框的同步增強(qiáng)最容易寫(xiě)錯(cuò)的是翻轉(zhuǎn)后的 x 坐標(biāo)檢測(cè)的增強(qiáng)和分類最大的區(qū)別所有幾何變換必須同時(shí)作用于圖像和標(biāo)注框而且框的表示形式在變換前后要來(lái)回轉(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ī)裁剪之后那些面積被裁掉大半的框必須過(guò)濾。我用的閾值是保留可見(jiàn)面積占原面積 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里批量做理由是編碼過(guò)程依賴 anchor 配置而這些配置是全局的放在 batch 級(jí)別做可以順便完成 padding 對(duì)齊。collate 階段的處理順序我固定為取 batch 內(nèi)最大寬高做 letterbox 填充保持長(zhǎng)寬比灰色 114 填充記錄每張圖的縮放比和填充偏移然后按三個(gè)尺度分別計(jì)算每個(gè) GT 落在哪個(gè)網(wǎng)格、與哪幾個(gè) anchor 的 IoU 超過(guò)閾值。這里的 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)過(guò)兩輪供參考輸出尺度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 倍。直接用公開(kāi)數(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è)需要大感受野來(lái)定位大目標(biāo)也需要高分辨率特征圖來(lái)定位小目標(biāo)這兩者靠單一尺度無(wú)法同時(shí)滿足所以多尺度輸出是必需項(xiàng)不是可選優(yōu)化。4.1 從 Darknet 風(fēng)格殘差塊講起的最小可用骨干我不建議一開(kāi)始就上很復(fù)雜的結(jié)構(gòu)。實(shí)驗(yàn)初期我的骨干只用了“卷積 殘差塊堆疊”的最小組合每個(gè) stage 由一個(gè) stride2 的下采樣卷積開(kāi)頭后接 N 個(gè)殘差單元通道數(shù)按 32→64→128→256→512 遞增。這套結(jié)構(gòu)的好處是每一層的形狀都能手算出來(lái)出問(wèn)題一眼能定位。殘差塊內(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)中觀察到過(guò)換成 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打開(kāi)輸入尺寸固定的話能白撿一成左右的速度但如果你的 dataloader 會(huì)輸出不同尺寸的圖比如沒(méi)做統(tǒng)一 letterbox這個(gè)開(kāi)關(guān)反而會(huì)導(dǎo)致反復(fù)重選算法速度更慢。4.2 頸部融合上采樣加拼接而不是直接相加三個(gè)尺度的特征要互相“看見(jiàn)”彼此的信息否則小尺度分支缺語(yǔ)義、大尺度分支缺細(xì)節(jié)。我采用的路徑是自頂向下從 stride 32 的特征圖開(kāi)始1×1 卷積把通道壓到統(tǒng)一值我設(shè) 256然后雙線性上采樣 2 倍與 stride 16 的同通道特征沿通道維拼接再過(guò)一組 3×3 卷積融合重復(fù)一次到 stride 8。用拼接而不是相加是因?yàn)槠唇颖A袅瞬煌瑏?lái)源特征的獨(dú)立性讓后續(xù) 1×1 卷積自己去學(xué)如何加權(quán)相加則強(qiáng)制假設(shè)兩路特征語(yǔ)義對(duì)齊這個(gè)假設(shè)在淺層往往不成立。代價(jià)是通道數(shù)翻倍帶來(lái)的顯存開(kāi)銷所以我在拼接后緊跟一個(gè) 1×1 卷積把通道壓回去實(shí)測(cè)能省下約 15% 的顯存而不掉精度。提示上采樣我用F.interpolate(..., modenearest)而不是轉(zhuǎn)置卷積。轉(zhuǎn)置卷積容易在特征圖上產(chǎn)生棋盤格偽影對(duì)小目標(biāo)的定位有肉眼可見(jiàn)的負(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)中做過(guò)對(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配合前面說(shuō)的 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)格”來(lái)分配正樣本一個(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 超過(guò)正閾值的都作為正樣本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í)慣。我的過(guò)濾條件是中心距離落在 GT 寬高的一半范圍內(nèi)。這個(gè)約束加上之后訓(xùn)練初期 loss 的抖動(dòng)明顯減小。分配過(guò)程我用一個(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)): # 展開(kāi)該尺度所有預(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)過(guò)濾網(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í)犯過(guò)一個(gè)經(jīng)典錯(cuò)誤直接用x1 cx - w/2這種形式計(jì)算但沒(méi)有對(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)定下來(lái)的一組起點(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ì)淹沒(méi)正樣本類別權(quán)重壓到 0.5 是因?yàn)樵谡龢颖疽呀?jīng)很少的情況下類別分支的梯度容易過(guò)大。另外必須處理正負(fù)樣本比例。實(shí)測(cè)下一個(gè) batch 里正樣本可能只有幾十個(gè)而負(fù)樣本上萬(wàn)。我用的策略是只對(duì)負(fù)樣本中 objectness 預(yù)測(cè)值最高的前 K 個(gè)計(jì)算 lossK 取正樣本數(shù)的 3 倍其余負(fù)樣本直接忽略。這一步聽(tīng)起來(lái)粗暴但它比直接給負(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)簽編碼有問(wèn)題三是正樣本數(shù)量均值應(yīng)該穩(wěn)定在一個(gè)區(qū)間內(nèi)如果隨 epoch 劇烈波動(dòng)說(shuō)明標(biāo)簽分配的中心先驗(yàn)在邊界目標(biāo)上失效了。我曾遇到 objectness loss 每 5 個(gè) epoch 準(zhǔn)時(shí)跳一次的問(wèn)題最后定位到是 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é)的每一條都是我在有限顯存條件下被逼出來(lái)的直接照做能省很多試錯(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)期卡在高位不下來(lái)?;旌暇任矣胻orch.cuda.amp但loss 計(jì)算部分強(qiáng)制在 float32 下進(jìn)行。原因是 objectness 的 BCE 在 fp16 下容易溢出尤其是當(dāng)某個(gè) batch 里出現(xiàn)極端難負(fù)樣本時(shí)。寫(xiě)法上我用 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è)下來(lái)只有當(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 過(guò)濾閾值 0.05 起步寧低勿高因?yàn)楹罄m(xù) NMS 還會(huì)再篩再依次做按類別的 NMS。我的 NMS 實(shí)現(xiàn)里最容易寫(xiě)錯(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)證集畫(huà)一張“置信度閾值-召回率”曲線找召回率曲線開(kāi)始陡降前的拐點(diǎn)通常落在 0.25~0.35 之間而 NMS 的 IoU 閾值則固定 0.45兩者不要混在一起調(diào)否則你無(wú)法判斷性能變化歸因于哪一個(gè)。6.3 調(diào)試檢測(cè)模型時(shí)我常用的三個(gè)可視化手段第一是把標(biāo)簽畫(huà)回原圖。訓(xùn)練前必須做這一步我見(jiàn)過(guò)太多因?yàn)闅w一化坐標(biāo)和像素坐標(biāo)混用導(dǎo)致框全部擠在左上角的案例而 loss 依然在降因?yàn)槟P痛_實(shí)在學(xué)習(xí)這個(gè)錯(cuò)誤分布。第二是把預(yù)測(cè)框在訓(xùn)練中期畫(huà)出來(lái)哪怕框很亂只要它開(kāi)始聚集在目標(biāo)附近就說(shuō)明坐標(biāo)分支方向?qū)α恕5谌前闯叨确謩e統(tǒng)計(jì)正樣本數(shù)如果某個(gè)尺度長(zhǎng)期是 0說(shuō)明 anchor 尺寸和你的數(shù)據(jù)分布完全錯(cuò)配那個(gè)尺度的檢測(cè)頭永遠(yuǎn)學(xué)不會(huì)。有一次我把這三個(gè)手段串起來(lái)排查了一個(gè)典型問(wèn)題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ù)值看出來(lái)只能靠可視化。7. 幾個(gè)必須提前知道的邊界與經(jīng)驗(yàn)最后分享幾條我認(rèn)為比代碼本身更值錢的經(jīng)驗(yàn)。第一不要在小數(shù)據(jù)集上追求多尺度。我最初在只有 1200 張圖的數(shù)據(jù)集上直接開(kāi)三個(gè)尺度訓(xùn)練結(jié)果最小尺度分支一直是零正樣本白白多算了 40% 的前向開(kāi)銷。數(shù)據(jù)量小的時(shí)候先用單尺度stride 16把整條鏈路驗(yàn)證通再逐步加尺度效率高得多。第二objectness 的分支比類別分支更容易出問(wèn)題優(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í)泛化能力。常見(jiàn)癥狀大概率根因快速驗(yàn)證方式loss 完全不降標(biāo)簽編碼與輸出通道順序不一致單 batch 過(guò)擬合測(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í)率未退火或正樣本過(guò)擬合打印每輪正樣本數(shù)與 lr我還想強(qiáng)調(diào)一個(gè)調(diào)試習(xí)慣用 4 張圖做單 batch 過(guò)擬合測(cè)試。把這個(gè)小實(shí)驗(yàn)跑通loss 降到接近 0預(yù)測(cè)框和 GT 幾乎重合就等于證明了數(shù)據(jù)管道、編碼、損失、解碼這整條鏈路自洽。凡是鏈路級(jí)別的 bug都會(huì)讓這個(gè)測(cè)試失敗而鏈路一旦自洽剩下的問(wèn)題都只是超參和容量問(wèn)題排查范圍小得多。這個(gè)習(xí)慣幫我省掉的調(diào)試時(shí)間比我讀過(guò)的所有文檔加起來(lái)都多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
26uuu偷拍亚洲欧洲综合| 九九九九精| 91色图片| 天天躁日日躁AAA片李宗瑞| 国产黄色剧情影片麻豆免费播放| 人妻激情视频| 爱丝福利| 97伦综合| 五月天婷婷社区| 99热精品在线观看| 日韩丝袜高跟制服在线观看| 欧美 日韩 国产传媒| 大香蕉 222| 久久久久国产亚洲一区欧美色图日韩 | 超碰免费人人| 夜夜草网站| 九九香蕉网| 婷婷性爱| 久久熟女人| 大香蕉五月天婷婷| 久久9亚洲| 91白嫩| 亚洲 日本 国产 综合| 91殴美大片| 久久精品熟妇丰满人妻99| 九九九网页| 蜜桃狠狠色伊人亚洲综合 | 久久黄片国产一区二区| 精品视频久久久久九九九九9999| 欧美日韩亚洲少妇寂寞影院正在播放 | 嫩草伊人久久精品| WWW4虎| 殴美牲| 天天干天天做| 中文字幕一区 二区三四五 区日 日骚 | 精品国产肉丝袜在线拍国语| 欧美经典一区二区三区 | 啊啊啊好想要| 亚洲学生妹高清av| 性饥渴少妇av无码毛片| 日韩免费在线视频观看| 操逼免费视频无码国产| 激情综合网五月婷婷五月天| 国产精品久久久久久久久AV大片| 91精品久久久久五月天精品| 欧美1区二区三区公司| 色婷婷激情| 免费超碰97久久| 蜜臀久久99精品久久久| 91美女小视频| 国产精品久久天天干| 白丝AV| 国内精品嫩模A∨私拍小视频| 久久久精品中文字幕爱豆| 亚洲中亚日激情视频| 国产精品午夜福利视频| 97超碰超欧美。| oumeisetupian| 宅男91视频在线播放| 97WW精品| 五月丁香社区婷婷日韩欧美精品影院 | 97超碰色屌| 国产噜噜噜噜噜久久久久久久久| 国产传媒av天美传媒在线| 99久久久久久久久| 日本999精品| 99热这里只有精品18| 中文字幕一区av| 老熟妇一区二区三区啪啪| 亚洲骚逼少妇| 国岛片视频| 综合欧美日本三级| 综合网91| 国产精品久久久九九九| 熟女性视频| 亚洲,日韩,欧美,成人播放| 曰韩香蕉97| 久久99网站| 香港日本韩国人妇99www.wccm20| 校园春色五月天| 久草色悠悠在线视频| hd成人一区二区在线| 免费国产视频| 夜夜无码| 神马久久69| 亚洲综合五月天婷婷丁香| 日本高清免费一本视频在线观看| 狠久久| 超碰天天久久79| 丁香五月婷婷基地| 性交一区二区在线播放| 欧美在线官网| a级理论午夜日本| 午夜一级免费毛片| 97视频在线播放| 日夜久久久九九九久| 情色五月天网| 亚洲大色鬼| 永久免费观看的毛片的网站| 天天香香欲综合| 久久六六| 日韩国产成人自拍视频| 日本韩欧美在线播放a| 亚洲精品第一| 成人免费在线网站| 亚洲欧美九九九| 免费97视频| a片在线播放| 超碰人人色| 亚洲中文字幕在线视频一区二区| 欧美伊人久久综合网| 久久精品区| 天堂精品| 青青草影视蜜久久| 大香蕉99re| 少妇人妻激情四射| 97频视在线| yazhousetuoumei| 日韩亚洲美女一区久久| 日本高清电影欧美色图| 欧美99| 国产精品久久久久久片| 欧美一级国产一级| 又粗又长又爽在线观看| 一区二区三区黄色片a| 美女天天干| 人妻天堂三区| 日本不卡一区二区三区| 精品大全99999| 91无摭挡| 久久精品成人| 狠狠爱夜夜| 国产精品嫩草影院免费| 国产东北女人在线视频| 风流老熟女一区二区三区l| 无码人妻一区二区三区色欲aⅴ | 99色在线| 欧美激情 亚洲色图| 色99久草| 日本久久久久久久久久| 大香蕉综合网| 精品视频在线观看精品| 久久亚州精品成人Av无| 婷婷丁香九月| 日本一区二区不卡精品| 亚洲黄网在哪免费看| 在线观看中文av字幕| 免费A V在线播放| 国产黄色 A 片免费看| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 狠狠爱夜夜| 丝袜AV一区二区三区| 天天干18禁| 日韩精品人妻| 国产精品午夜福利亚洲综合网| Sekablack无码一区| 国产一区二区精品久久99| 日韩无码黄色片| 日本网色| 色盈盈影院| 久久亚洲熟妇在线视频| 色香欲天天天天综合色| 96麻豆精品一区二区三区| 热99这里有精品综合久久 | 又粗又长又爽在线观看| 夜夜影视四色| 人妻熟女午夜精品在线| 97在线欧洲| 97超碰精品成| 久久九色| 久久精品国产亚洲AV嘿嘿| 亚洲色图殴美色图激情乱伦| 狠狠狠一区二区三区| 国产黄色动态精品| 啊v在线观看视频| 天天亚洲| 一级特黄aaa大片在线观看成人一级片在线观看 | 欧美在线官网| 亚洲日韩欧美一区二区| 色五月av| 欧美顶级黄色大片免费| 大香蕉五月天婷婷| 午夜天堂网| 热热色AV| 久久午夜鲁丝片| 人人艹亚洲| 丁香五月天啪啪| 日本一区99| 91高清欧美| 无码免费在线观看黄色片| 少妇滛荡视频| 色五月天AV| 人妻丰满熟妇av无码区蜜桃| 激情天天视频| 99精品视频在线观看| 97人肏| 亭亭在线资源| 人人人人插| 91亚洲黑人| 国产精品一区二区后入| 精品一区二区三区国产| 99在线精品观看99| 北条麻妃性愛视频| 一起草高清无码| 人、人、摸,人、人、草| 97精彩视频网站| 精品制服美女中文一区二区三区| 91被操| 色色99| 中文字幕文字幕无码一区二区三区电影99| 国产精品操| 欧美网站免费| 91欧美性| 老司机深夜18禁污污网站| 欧美色五月| 九九人妻| 成年女人黄网站| 九九九九88| 亚洲成人ab| 国产精品久久久久久久黄无码| 九九毛片这里只有精品| 国内外激情在线| 三级特黄60分钟播放| 中文伊人大香蕉视频| 久久久9 9 9精品| 久久伊人亚洲AV无码网站 | 黄页18禁| 亚洲A曰本VA欧美VA视频| 国产67194| 天天爱综合网| 日韩丝袜二区| 东北操逼| 伊人久久大香线蕉无码| 强上我不卡卡| 操www| 淫色网综合| 日日夜夜精品视频| 看看小穴| 精品一区二区三区国产| 日韩精品99999| 97操碰| 立川理惠加勒比无码| 亚洲欧美91√| 综合激情婷婷| 欧美激情久操网| 欧美日韩国产传媒在线精品| 麻豆久久一区二区三区| 美女露胸露屁股| 国产在线观看一区二区三区| 欧美性区| 久久美女国产| 亚洲午夜蜜臀| 婷婷五月天成人| 人妻少妇精品久久久久久| 波多野结衣AV无码一区| 久久99精品九九久久久婷婷| 免费伦费视频在线观看| 熟人人妻少妇精品久久| 蜜桃臀av在线观看| 国产97亚洲| 综精品久久久aaaa| 岛国黄色短视频| 精品少妇一区二区三区| 久久久久成人蜜桃精品| 国产黄色视频久久| 校园春色宗合网| 欧美综合娱乐久久| 亚洲熟女人妻中文字幕一区二区| 人人污日韩一区二区| 黄片免费日韩| 久久久九精品| 九九九九久久久| 国产三级资源在线观看| 色综九九九一区| 亚洲日本韩国极品一区二区| 欧美精品一区二区少妇免费A片 | 色就色综合| 麻豆天美AV传媒第一页| 九色 人妻 大香蕉| 国语精品内射在线观看| 爱逼综合| 伊人色综合欧美| 欧苏综合色综合| 亚洲精品一区二区精品| 一区二区三区四区理论片| a人欧美综合天堂麻豆| 久久九九网| 欧美18 在线观看| 无码粉嫩白虎一线天b区| 欧美有码亚洲中文字幕一区二区三区四区| 日本亚洲熟女视频| 亚洲另类欧美精品| 欧美成人精品欧美一级乱黄一区二…| 中文久久96| 青青国产精品在线| 日本日逼视频网| 在线中文字幕| 精品九九| 久久超碰com| 97一区二区三区视频| 猛交交| 日韩去日本高清在| 91人妻最真实刺激绿帽| 东京热双插| 91日日夜夜| 天天天肏屄欧美| 五月天社区| 国产三级中文有码在线视频| 国产亚洲精品一区二区三区| 一起草在线视频| 中精品一区二区三区| 性欧美体内射精| 欧美婷婷| 亚洲精品人妻吞精av| 一本色道久久天天射天天干| 一起草高清无码| 九九热精品视频六| 97超碰国产亚洲精品| 亚洲色图国产另类| 午夜成人福利影视| 久久加勒比| 久久综合女优| 99热精品在线| 国产在线精品偷| 伊人久操| 久草免费在线一区二区| 韩日性爱av| 日韩欧美大力操| 亚洲中文字幕精品一区| 九九九久久久| 97国产精品视频| 极品肉射| 1769成人国产精品视频| 亚洲av性爱电影| 欧美天天弄| 亚洲欧洲自拍| 亚洲国产精品无码AV久久| 成人国产二区三区在线,男女精品。| 日本高清视频在线观看黄已三辽| 久艹99| 4虎在线视频| 亚洲资源网| 亚洲999综合| 欧美91久久久久| 国产精品午夜福利视频| 亚洲少妇激情一区二区三区| 999久久芭蕾| 免费国产| 有码专区最新中文字幕有码| 亚洲综合20p| 欧美性天天| 久久人妻| 免费久久一级毛片大黄| 日韩中文字幕人妻视频| 亚洲美女自拍偷拍视频| av资源在线播放天堂| 狠狠色综合网| 亚洲精品丝袜| 69久久久久久久久久久久久| 成年在线视频日本亚洲在线视频区精品江靖宇公司| 亚洲欧美清纯| 成人小说另类在线| 久操网视频| 日韩精品视频在线观看一卡二卡| 九月婷婷综合| 情色av电影| 丁香婷婷激情五月天无毒不卡| 动漫区日韩区欧美区| 欧美影音在线| 麻豆一区二区三区在线看| 亚洲在线91| 色欲天天综合久久久无码网中文| 懂色av色欲av蜜臀av| 亚洲 国产 精品一区| 99自拍视频在线观看| 色老汉玖玖爱| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲精品国产AV天美传媒| 97精品97| 少妇淫妇久久久久久久| 69少妇一区二区| 久久精品国产亚洲AV成人直播| 激情丁香五月婷婷| 99re这里只有精品3| 欧美色图在线视频少妇| 婷婷五月天激情四射| 一级片在线观看高清无码| 日韩不卡av一二三| 中美日韩毛片| 九九九九精品在线| 国产一区二区在线播放量| 自拍大香蕉乱插| 人妻天堂综合网| 国产成自自拍在线观看| 日日97| 成人五级久久| 91碰碰碰| 中字一区| 日韩 国产 欧美自拍| 殴美大黄片| 欧美激情亚洲色图| 欧美亚洲中文字幕| 激情无码日韩| 大鸡吧尹人在线| 亚洲欧美内射| 日韩无码操逼片| 国产毛片精品一区二区色欲黄A片| 亚洲免费日韩在线一区二区| 欧美色网络| 欧美日韩国产高清在线一二三区| 九九九九九九亚洲| 欧洲亚洲少妇| 在线观看黄色电话| 色情乱伦AV| 大香蕉懂9| 天天天操天天天爱| 亚洲综合在线高清| 欧美日韩99精品麻豆传媒| 九一国产精品| 国产11页| 男人的天堂2010| 国产刺激视频| 99国产精品免费| 极品AV网站在线观看| 亚洲精品国产拍免费91在线| 日韩操呦呦影院在线观看| 日韩9区| 干婷婷综合网| 97超级色碰碰| 台湾成人无码AV| 青青草日逼视频| 久久久久女教师免费一区| 综合 欧美 亚洲 日本| 蜜桃中文字日产乱幕4区| 色九久| 日本精品第一视频在'| 久久亚洲人妻| 高潮毛片无遮挡高清免费| 亚洲乱色视频一区、二区在线| 97超碰欧美精品| 国产原创剧情在线丝袜 | 黑人与人妻| a片 xxxx受爽视频| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲激情综合| 97国产|免费| av一区二区三区 中文| 超碰在线1234区| 日韩丰满熟妇| 人妻 欧美亚洲| 小情侣高清国产在线视频| 91女优在线观看| 看一级特黄a大一片| 亚洲性猛交| 老熟女乱子伦中文字幕一区二区| 中文字幕第23区| 首页中文字幕中文字幕免费| 国产自偷| 99热这里只有精品8| 97超碰超| 亚洲日韩青青草色月| 无码精品久久| 夜草欧美| 国产在线视视频有精品| 日韩99999| 国产后入精品| 国产福利电影| 欧美少妇色综合| 在线无码操| 男人的天堂Va| 欧美亚男人的天堂| 制度丝袜99| 国内一区二区三区| 92福利社视频| 国产二区三区免费视频| 日韩欧美资源| 大香蕉久久| 尤物av网站免费在线播放| 一区二区三区蜜桃成人撸久久东京热| 亚洲色色探花| 夜夜久久久| 800zy一区二区| 26UUU欧美激情一区二区| 91劲爆| 久久久无码国精品无码三区三区| 精品免费视频国产一区| 大香蕉92| 国产人妻精品久久久一区二区三区 | 性爱av在线免费观看| 久久人| 九九九九九九成人| 日本99久久| 国产无码精品成人| 欧美黑人168页欧美黑人167| 久久这里都是精品| 亚洲暴力强奸AV| 男人的天堂免费| 四虎视频在线观看| 日本99久久| 欧美在线永久天堂| 天天舔日美女视频| 大香蕉欧美日韩| 99综合| 久久久久久一日韩字幕无码| 亚洲熟女综合一区二区| 无码人妻系列少妇| 一区=区三区视频| 久久精品国产亚洲AV无码电影| 97天天摸天天爽| 亚洲天天影视色综合| 久久乐| 亚洲成人久久一区二区| 国产精品久久久吖| 狠狠躁伊人中文字幕| 久久99草| 蜜臀亚洲中文| 丁香五月婷婷五月| av午夜影院在线播放| 免费成人自拍视频在线| 高清无码91| 亚洲色丰满少妇高潮| 日韩亚洲美女一区久久| av凤凰久久久| 日韩欧美tv一区二区在线观看| 91综合网| www.91视频网| 91亚洲黄色网| 91老熟女91老女人| 久日91在线| 日本伦理一区二区| 精品久久久九九九孕妇| 久久九九综合| 蜜乳av首页| 日韩欧美中文| 国产乱伦亚洲| 亚洲图片日本AⅤ欧美在线| 蜜臀久久99精品久久久久久-DVD| 午夜福利合集| 国产日韩中文字幕欧美| 欧美性天天影院| 少妇69中文| 欧美少妇大量自拍视频在线观看| 五月综合色| 乱老女人一区二区视频| 人妻熟女av国产网站| 亚洲成人无码影院| 精品偷拍13p欧美dodk视频| 九九精品无码专区免费| 免费中文综合精品| 精品亚洲成人免费在线| 成人性爱免费播放| 国产亚洲福利第一页丝袜| 操国产高清| 久热一区二区| 国产精品懂色tv影视免费观看 | www.色99| 99精品在线观看| 狠狠色丁香| 99色色网| 天天综合,91综合永久| 日产狠狠干| 五月天婷婷欧美三区| h在线看免费版在线看| 丁香六月啪啪| 好吊色在线观看| 97久精品| 三上制服丝AV| 97AV在线免费观看| 久久精品视| 精品制服美女中文一区二区三区| 青青久久久| 国产suv一区二区三区6| 亚洲久久久| 色欲天天综合久久久无码网中文| 一区二区三区免费视频入口| 色综合久久av| 激情啪啪拍91| 日韩精品国产精品五码一区二区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 青青青操| 骚熟女吞| 精品人妻一区二区三区蜜桃视频| 亚洲交性| 人妻精品视频一区二区三区| 国产三级资源在线观看| 国模无码一区二区三区在线| 九九黄色网| 99久久无色码| 久久啊啊啊视频| 久久9免费视频| 97精品在线视频| 人人操人人干xxx| 日本丝袜人妻内射| 久久九九综合| 亚洲欧美性生活| 试看60秒| 97视频免费播放| 蜜臀AV秘一区翔田千里| 久草免费在线一区二区| 粉嫩国产精品久久粉嫩| 啊啊啊好大好湿| 后入合集| 人人做天天爱| 五月综合视频| 亚洲限制级| 久九九九九九九九热| 国产精品人妻无码久久久老鸭窝| 日韩性爱免费视频在线网站| 丝袜美腿欧美| 内射黑丝袜| 中文字幕99999| 特级毛片特黄久久免费看| 精品一区二区三区蜜桃臀赵总 | 欧美人人天天网| 色噜噜国产精品视频一区二区| 一级日本牲交大片好爽在线看| 无码国产精品午夜不卡(| 天天摸夜夜摸| 五月天婷婷社区| 国产日逼视频| 神马精品视频| 色综合1991| 岛国免费视频在线| 99精品热| 屁股久久久久久久久| 国产精品女aA片爽爽视频| 亚洲强奸乱伦影视网| 中文字幕视频2区| 97久久久网站| 最新中文字幕精品在线| 肉丝网站91| 少妇的嫩逼图片| 天天综合网日韩7799| 国内精品不卡无毒99999| 九九久精品| 伊人久久综合影院| 婷婷三区| 91美女小视频| 亚洲精品三| 亚洲日韩乱码中文无码蜜桃臀网站| 亚洲性网| 日韩精品99999| 亚洲91射| 免费看A片毛毛片在线播| 精品人妻一区二区免费蜜桃| 婷婷综合伊人一区| 亚洲人人操| 日夜尻逼网| 亚洲成人一区二区精品| 91在线丝袜视频| 国产综合色精品在线观看| 色噜噜狠狠色综无码久久合欧美| 亚洲脚交| 欧亚性爱视频免费看| 小骚逼被操的爽不爽| 无码人妻一区二区三区色欲aⅴ| 日本人体九九九九九九| 亚洲熟女诱惑| 天天爱天天操| 蜜臀久久99精品久久久久久成人小说| 久久亚洲精品成人av| 不卡一区视频| 岛国在线一区二区三区| 亚洲综合性网址| 天天色黄色影院天天操| 青青草色情网站视频| 日韩免费av片高清无码| 99999精品成人| 夜夜草天天| 玖玖综合色| 亚洲av无码国产精品字幕| 久久25| 欧美真人抽搐一进一出gif| 91人妻丝袜无码| 视频一区二区免费在线| 日韩AV中文字幕电影| 亚洲无码精品AV久久久| 久久嫩草国产成人一区| 青青青国产手线观看视频2| 中文字幕在在线观看网站| 国产精品国产亚洲区艳妇糸列| 亚洲欧美天堂在线| 91搞逼视频| 小草av不卡亚洲二区 | 香蕉一区二区三区在线视频| 乱性AV| 天天影视射综合网| 嫩草一区二区在线观看| 亚洲好色人妻| 天天爽天天爽| 午夜成人爽爽爽爽A片李冰冰| 蜜臀精品1区2区| 亚洲成人在线高清| 国产乱码久久久久久| 久久男女激情视频网站| 超碰九区| 久久少妇视频| 婷婷影院入口| 亚洲毛片久久| 人人澡人人爽人人精品| 国产一级特黄大片处女| 成人精品水蜜桃久久久久久久| 日韩婷婷| 日韩性爱啪啪视频| 97一本大道亚洲一区| 成人日本视频人妻在线| 国产99热| 午夜福利在线视频1000| 亚洲中文字母在线播放| 91亚洲高清| 欧美熟女妇同| 亚洲夜夜欢无码一区二区 | 久久97| 蜜乳中文字幕a在线| 色老牛| 激情开心五月天| a片久久久久久久久久久久 | 五十路熟女工口| 中国一区二区亚洲人妻| 超碰人妻97| 你草精品在线视频| 天天天天天干夜夜夜夜夜操| 偷拍 欧美 日韩| 加勒比久久av| 婷婷综合在线观看| 99热只有这里有精品| 中文久久| 骚货 中文字幕 av| 性欧美天天| 久久久国产三级黄色片| 欧美成熟性爱精品| 91少妇高潮| 色大师网站www永久网站视频| 操逼日韩无码| 国产强奸乱伦xd| 中文字幕激情小说| 亚洲青色欧美| 午夜精品久久久久久久男人的天堂| av天堂精品久久| 久夜视频| 久久精品日韩专区免费观看| 夜夜高潮夜夜爽| 精品久久99| 无码人妻精品一区二区中文| 久久区| 激情文学亚洲| 欧美大片天天看| 久无码| 亚洲精品久久久久久久蜜桃臀| 无码人妻精品一区二区中文| 黄骗免费网站| 亚洲成人在线乱码色午夜| 97精品视频网站| 欧美日韩国产中文精品字幕自在自线,| 婷婷视频在线免费观看| 国产三级在线现体验区| 综合色好色| 视频在线97| 亚洲日产专区婷婷| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 亚洲综合射| 少妇同性| 99热免费| 嗯嗯啊中文字幕| 欧美刺激色黄片免费看| 中日韩久久久| 国产精品 久久久精品一牛| 成人毛片免费| 少妇高潮九九九九| 人妻熟女一区二区三区视频| 精品二区三四区五电影| 亚洲综合图片在线| 日日黄色三级网站| 欧美一二三区四五区| 午夜久久一区二区无码中出| 中文字幕人妻丝袜| 日日狠狠久久偷偷色综合免费| 岛国成人av在线播放网址| 岛国在线一区二区三区| 国产精品无套内谢| 神马久久久久久伦理片| 国产美女裸体秘 永久无遮挡| 四虎午夜影院| 无码久久亚洲高清,| 人妻一区二区三区四区视频| 中文字幕国产在线天堂| 人人操,人人液| 国产品精品自在在线午夜免费| 91亚洲高清| 中文字幕熟女人妻丝袜| 久久精品国产亚洲AV先锋| 91精品人| 一级AV性爱| 8x福利精品第一福利视频导航| 亚瑟国产精品久久无码| 一级性爱啪啪视频| 久久黄色性爱视频| 精品人妻一区| 亚洲av淫乱| 综合啪啪| 日本高清电影欧美色图| 天天干一区二区| 97在线欧洲| 欧美国产有色电影| 亚洲清纯唯美| 夜夜久久久| 亚州色综合| 丰满人妻被猛烈进入中| 樱花蜜乳av| 欧美性爱三区二区| 大香蕉久| 在线女人91| 北京美女一区二区| 一区二区三区在线日韩影院观看| 午夜视频久久久| 丝袜足交视频| 日本高清免费一本视频在线观看| 亚洲国产一区二区入口| 国产男女无套视频免费观看| 91粉芽高清在线一区二区| 日韩欧亚太美不卡| 日韩精品9区| 亚洲午夜精品久久久中文影院| 亚洲精品久久久久久久蜜桃臀| 一本色道综合久久欧美| 亚洲AV无码黄色强奸| 久久98| 综合激情97| 操死我了啊啊啊| 久久久日本电影| 无码高清操逼网址| 欧亚在线视频| 日韩AV中文字幕电影| 中文久久96| 性色综合网| 亚洲天堂中文字| 九九成人视频| 美国久久一二三四| 日本三级精品| 99这里只有精品国产| 久久色情| 国产熟妇一区二区| 嗯嗯啊啊啊好爽| 亚洲无线码欧洲精品区别| 精品少妇一区二区三区在线视频| 夜夜高潮夜夜爽高清视频一| 极品一区二区三区免费| 探花视频免费观看国产专区| 亚洲制服欧美另类内射| 人人妻人人操人人乐| 91国产丝袜美女| 欧美巨大性舒爽顶到了| 免费视频a级毛片免费视频| 97色97好| 蜜臀久久99精品久久久久久酒店 | 日韩激情电影中文字幕| 高清国产av无码| 又摸又舔在线观看网站| 一区二区视频在看| 久草网站免费在线观看| 伊人影院在线理论播放 | 一道本东京热加勒比一区二区三区| 干美女人妻| AV一区观看| 丝袜AV一二三区| 国产精品一二三| 性暴力欧美猛交在线直播| 人人人人人人少妇| 久久精品日韩专区免费观看| 74成人在线| 日夜啪电影| 四虎影视国产精品| 在线国产福利网址导航| 国产精品91一样| 日韩无码人妻中字久久三区四区| 亚州免费啪啪视频| 99.色网| 精品久久久久综合无码| 人妻99p| 亚洲天堂日本| 大香蕉一区二区在线观看.| 久久婷婷一区二| 性欧美999| 新版天堂中文资源8在线| 操逼999| 国产精品盗摄 偷窥盗摄| 91在线欧色| 91人妻人人澡人人爽人人精品| 秋霞一级视频在线观看免费| 伦在线97| 欧美日产国产在线成人第一区| 日本免费一区二| 好属操| 91精品久久久久久综合五月天| 嗯嗯嗯啊啊啊干死我吧| 免费黄色片。| 1区2区3区中文字幕日韩| 亚洲欧美国产中文视频| 欧美AB在线观看| 婷婷精品国产欧美精品亚洲人人爽| 性爱Av免费| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91爆操视频| 中文字幕在线2| av在线观看不卡网站| 日韩精品人妻中文字幕久久久| 秘书高跟黑色丝袜国产91在线| 91成人精品在线播放| 欧美日韩人妻婷婷一区| 国产精品无码av嫩草| 中文字幕神马久久| 人人妻人人爽 97人人看碰人免费公开视频 | 久久精品成人一区二区三区蜜臀 | 国语av最新自产拍在线观看| 欧美日本不卡| 欧美日韩岛国大片在线观看| 亚洲AV色图一区| 欧美成人性爱视频大全| 丝袜视频网国产90| 超碰99热| 97超碰香蕉| 亚洲人成色9999精品久久| 综合网亚洲| 久久精品视频久久久| 五月丁香黄色网| 激情亚洲天堂| xxx0国产在线播放| 亚洲国产中文字幕| 亚洲一区中文字幕一区| 日日摸日日碰夜夜爽视频| 天天综合色电影| 亚洲本色精品一区二区久久| 欧美色九九九| 91影库| 天操天操夜操夜月操月年年操操| aaa一级黄片| 91欧美综合| 爱爱动态120秒| 国产真乱mangent| 天天日美女的B| 国产无马av| 久久婷婷成人综合色怡春院| 色五月婷婷麻豆在| 麻豆国产97在线| 青青伊人加勒比海| 亚洲成av人片色午夜乱码| 日韩99999| 9久久9综合| 在线综合色| 三及片网站| 久久超碰亚洲人| 隔壁邻居波多野结衣中文字幕| 热久久无毒不卡| 920日本午夜免费| 日本三级A片网站com| 96精品久久久| 天天综合91在线| 国产一区在线观看无码AV| 亚洲日本大香蕉1| 国产视频三区四区| 日韩丰满熟妇| 91色插| 97AV在线免费观看| 色婷婷综合网| 嫩呦国产一区二区三区AV| 欧美瑟综合| 国产专区路线| 日韩午夜精品一区二区三区电影| 国产精品网址| 色香伊人| 欧美美女自慰一区二区三区| 国产精品极品美女视频| 超碰碰97资源站| 性爱AV天堂| 婷婷五月天补不补| 免费作爱一级视频| 超碰在线人人射| 骚人妻少妇视频| 天天操av懂色| 日韩黄色成人性爱| 人人操,人人插| 欧美日韩亚洲少妇寂寞影院正在播放 | 少妇综合| 999久久芭蕾| 曰韩精品九九无码 | 亚洲熟女中文字幕在线| 91国产操逼视频| 天天舔日美女视频| 国产熟女二区| 人妻啊啊人妻啊| 亚洲欧美国产其他二区| 91色人妻| 综合欧美亚洲| 干美女人妻| 97色论| 日韩精品一区二区三区四虎影视| 日韩精品黄片免费观看| 亚洲 小说 欧美 激情 另类| 少妇无码999| 狠操91,com| 国产精品成人无码av| 先锋影音av先锋一区| 啊啊啊啊好疼| 天天综合网亚洲综合网| 欧美色日本| 日欧美色| 亚洲精品819| a在线观看| Blackedraw视频一区二区| 一级二级三级黑人无码| 懂色Av| 中文乱码字幕观看视频| 国语国产操逼伊人AV网| 国产一区二区三区导航| 日韩精品 欧美激情| 在线v中文字幕一区二区三区| 欧美日韩国产高清在线一二三区 | 五码视频在线观看| 国产亚洲精品av一区| 综合激情五月丁香| 国产夜夜操| 国产精品九九| 蜜臀久久99精品久久久久久酒店 | 中日韩久久人妻一区二区| daxiangjiao你懂的| 天美av在线| 97青青操视频| 加勒比少妇AV婷婷六月天超碰超碰| 欧美日韩制服| 91被操| 在线观看国产黄色| 亚洲精品男人的天堂| 亚洲视频,小说| 国产97色在线 | 亚洲| 大二网站亚洲| 国产AV超爽| 99无码精品| 最新av在线| 久久久日本电影| 十八禁av无码免费网站APP| 色色五月天婷婷| 国产丰满少妇久久久精品影院| 99国产精品自在自在| 97国产精品| 草莓精品视频| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 色色色色综合网| 美女在线H91| 91日韩网站| 亚洲日本激情| 九九色色| 欧洲亚洲人人爽爽视频| 超碰欧美| 成人乱码一区二区三少妇| 97综合在线观看| 自拍第一页| 免费久久一级毛片大黄| 欧美在线视频99| 伊人精品国产| 狠狠操狠狠操操| 成人av动漫在线观看| 上床不卡网站| 火箭成精品视频884必出精品| 日本性爱网址| n1038 一二三区| 亚洲丝袜在线观看| 一类无码操逼视频| 中文字幕 一区二区 亚洲无码| 91模特在线观看| 久久五月天婷婷丁香中文字幕| 亚洲夜夜欢无码一区二区| 福利天堂| AVE乱伦| 很很干很很操| 国产日产欧产美韩系列麻豆免费| 免费?级毛片无码?∨蜜芽试看| 色丁香五月婷婷| 精品制服美女中文一区二区三区| 黄色人人| 91人妻视频在线| 久9九综合在线| 2020国产精品| 亚洲精品天天影视综合网 | 亚洲国产日韩精品久久久| 欧美性巨大╳╳╳╳╳高跟鞋| 91 国产丝袜在线放观看| 殴美性天天| 日韩中文字幕二区| 亚洲青青草| 久久国产免费激情视频| 亚洲五区熟女| 99久久99九九99九九九| 亚洲AV无码成人精品久久| 校园春色亚洲无码| 色色网91| 日日夜夜国产综合| 看日韩黄片| 国产欧美日韩女同性恋ww喷水精品 | 吻戏激情性巴克| 欧美日本不卡在线| 十八禁视频网站| 97chaopenrihan| 亚洲蜜乳av| 中文字幕综合人妻| 一级日本牲交大片好爽在线看| 综合网~91综合网| 五月丁香黄色网| 亚洲AV免费在线观看| 久操视频免费观看| 久久免费9| 大香蕉啪啪啪| 东京热av影院| 激情综合色| 91女色| 日本女人操逼| 亚洲天在线| 99啪啪视频| 久九九九九九九九热| 97香蕉碰碰人妻国产欧美| av橘色网站| 女人双腿搬开让男人桶| 91精品操美女| 日本韩欧美在线播放a| 国产suv精品一区| 久热91| 春色综合网| 亚码激情| 欧美色图 色综合图| 日本三级中国三级99人妇网站| 亚洲素人综合| 免费超碰97在线观看| 台湾佬中文娱乐自偷自拍| 粉嫩av在线| 厕所偷拍在线| 日本伦乱九九九综合| 精品一区二区三区最新| 神马久久久久久久| 日韩97视频!在线| 国内毛片欧美香蕉精品| 春色校园综合网| 日本在线观看网址| 夜夜嗨一区二区三区三州加勒比| 精品人妻一区二区视频| 四虎在线免费视频| 亚洲少妇喷视频看| 操熟女91| 91天美传媒精品| CCYY草草影院地址入口| 97超碰天天爱天天爱| 五月丁香社区婷婷日韩欧美精品影院| 我中文字幕6区| 国产激情av女片自拍| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 五月婷丁香| 亚洲熟女av中文字幕| 97精品国产97久久久久久户外免费| 国产强奸乱伦欧美| 国产大片精久久久久久| 成人av影院在线观看| 欧美高潮|