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

ARTICLE DETAIL

資訊詳情

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

mmDetection網(wǎng)絡(luò)架構(gòu)配置詳解:從Backbone、Neck到Head的組裝邏輯

mmDetection網(wǎng)絡(luò)架構(gòu)配置詳解:從Backbone、Neck到Head的組裝邏輯 很多同學(xué)第一次打開 mmDetection 的倉庫都有一種“從入門到放棄”的沖動mmdet/models目錄下躺著backbones、necks、dense_heads、roi_heads一堆文件夾點進(jìn)configs發(fā)現(xiàn)每份配置文件長得像一棵樹尤其model字段嵌套七八層里面全是dict。我當(dāng)年第一次看 Faster R-CNN 的配置時腦子里只有一個念頭這玩意兒到底是怎么變成一個能跑的網(wǎng)絡(luò)的這篇筆記想解決的就是這個問題。我會沿著 mmDetection 的網(wǎng)絡(luò)架構(gòu)這條線把model配置里的每個字段掰開揉碎告訴你 backbone、neck、head 各自扮演什么角色它們怎么組合成一個完整的檢測器以及如果你想把某一層換掉、加一個模塊應(yīng)該改哪里、怎么改。適合誰看剛接觸 mmDetection、跑通了官方 demo 但對配置一臉懵的科研小白以及在框架里做過小改動、卻始終沒弄清“為什么這樣寫”的開發(fā)者。1. 先建立整體印象mmDetection 的網(wǎng)絡(luò)分層思想1.1 檢測器不是一個黑盒而是一條流水線目標(biāo)檢測和圖像分類最大的區(qū)別在于它要同時回答兩個問題物體在哪里定位和物體是什么分類。分類任務(wù)可以干脆利落地拿一個網(wǎng)絡(luò)把圖像映射成類別概率但檢測任務(wù)不行——你既要提取特征又要在特征上做密集的候選框預(yù)測還要對候選框做精修這么多事不可能靠一個單一的“黑盒網(wǎng)絡(luò)”完成。mmDetection 的做法是把這條鏈路拆成幾個職責(zé)清晰的模塊典型結(jié)構(gòu)是Backbone主干網(wǎng)絡(luò)負(fù)責(zé)從原始圖像中提取多層次特征。Neck頸部模塊在 backbone 輸出的多尺度特征上做融合或增強(qiáng)最典型的就是 FPN。Head檢測頭在融合后的特征上做最終的分類和回歸預(yù)測。雙階段檢測器還會拆成 RPN Head 和 RoI Head。Detector檢測器外殼把上面這些模塊拼裝起來同時負(fù)責(zé)訓(xùn)練和推理流程的編排。這個設(shè)計思路很像工廠里的流水線原料圖像先進(jìn)第一道工序backbone粗加工再進(jìn)第二道工序neck做精細(xì)處理最后由檢測頭head完成質(zhì)檢和打包。生產(chǎn)線上的每個環(huán)節(jié)都可以獨(dú)立替換這也是 mmDetection 能支持幾十種檢測器的根本原因。1.2 你一定會見到的幾個“角色”字段翻看任意一份 mmDetection 配置model字段下常見的關(guān)鍵字就那么幾個model dict( typeFasterRCNN, backbonedict(...), neckdict(...), rpn_headdict(...), roi_headdict(...), )單階段檢測器比如 RetinaNet、YOLO 系列通常只有backbone、neck、bbox_head沒有rpn_head和roi_head因為單階段不需要“先提候選框再精修”這兩步直接在特征圖上做密集預(yù)測。多階段檢測器Faster R-CNN、Mask R-CNN、Cascade R-CNN則多出rpn_head和roi_headRPN 先快速篩出一批可能包含物體的候選框RoI Head 再對這些候選框?qū)?yīng)的特征區(qū)域做精細(xì)分類和回歸。這個“粗篩 精修”的思路是雙階段方法在精度上長期優(yōu)于單階段方法的關(guān)鍵原因之一。看到這里你就明白了mmDetection 的model配置不是一個“模型的形狀描述”而是一份組件清單。每個組件都是一個dict里面寫著“我要用什么模塊、參數(shù)是多少”。搞清楚每個組件的參數(shù)含義是理解這份清單的前提。2. 主干網(wǎng)絡(luò) Backbone特征的底層來源2.1 ResNet 配置字段逐項解讀幾乎九成以上的 mmDetection 模型都基于 ResNet。打開一份 Faster R-CNN 配置backbone常常長這樣backbonedict( typeResNet, depth50, num_stages4, out_indices(0, 1, 2, 3), frozen_stages1, norm_cfgdict(typeBN, requires_gradTrue), norm_evalTrue, stylepytorch),這些字段看著簡單但每一個都可能影響你的實驗成敗。depth很好理解50 代表 ResNet-50。很多人會隨手改成 101然后發(fā)現(xiàn)訓(xùn)練速度慢了一大截、顯存爆掉這很正常畢竟更深的主干意味著更大的計算量。改depth之前先掂量一下自己的 GPU。num_stages是 ResNet 的 stage 數(shù)量。ResNet 默認(rèn) 4 個 stage每個 stage 對應(yīng)一個下采樣倍率stage1 輸出 1/4 分辨率特征stage2 是 1/8stage3 是 1/16stage4 是 1/32。這也是out_indices的可選范圍為什么是 0 到 3。out_indices決定 backbone 向外輸出哪些 stage 的特征。(0, 1, 2, 3)表示把四個 stage 的特征全部輸出。如果你是做語義分割或者輕量檢測可能只需要(2, 3)甚至(3,)這樣可以省掉前面階段的輸出計算但對檢測來說多尺度特征很重要一般會全部輸出或者至少輸出后三個。frozen_stages是很多人容易忽略的字段。它表示凍結(jié)前幾個 stage 的參數(shù)不參與訓(xùn)練。默認(rèn)值是 1也就是 stage1 之前的 stem 和 stage1 整個被凍住。這么做的原因是主干網(wǎng)絡(luò)通常使用在 ImageNet 上預(yù)訓(xùn)練的權(quán)重淺層特征邊緣、紋理比較通用不需要在目標(biāo)任務(wù)上重新學(xué)凍結(jié)它們可以省顯存、加快收斂。如果你在任務(wù)上與 ImageNet 差異很大或者數(shù)據(jù)量很少也可以把frozen_stages設(shè)為 0 讓全部參數(shù)都參與訓(xùn)練但這會顯著增加顯存占用和訓(xùn)練時間需要自己權(quán)衡。norm_cfg和norm_eval是一對需要一起理解的概念。norm_cfgdict(typeBN, requires_gradTrue)表示使用 BatchNorm且 BN 層的weight和bias是允許梯度更新的。但注意norm_evalTrue會強(qiáng)制所有 BN 層在訓(xùn)練時也切換到 eval 模式意思是 BN 的均值/方差不更新只更新縮放和平移參數(shù)。這個組合在遷移學(xué)習(xí)里非常常見預(yù)訓(xùn)練 BN 的統(tǒng)計量已經(jīng)足夠好微調(diào)時不更新它們可以有效避免小 batch size 帶來的統(tǒng)計量抖動。如果你自己改網(wǎng)絡(luò)時把 BN 換成了 GroupNorm 之類的記得相應(yīng)調(diào)整這套配置。stylepytorch和stylecaffe的區(qū)別在于 stem 結(jié)構(gòu)。PyTorch 官方實現(xiàn)里 ResNet 的 stem 是一個 7x7 卷積加一個 3x3 的 max poolingCaffe 版本則沒有 pooling或者在第一層卷積上直接 stride2。這個字段影響了 backbone 實際搭出來的結(jié)構(gòu)也決定了加載預(yù)訓(xùn)練權(quán)重的方式通常保持默認(rèn)的pytorch不需要管。2.2 更換主干網(wǎng)絡(luò)時的三個注意點我在實際項目里換過不少 backbone踩過的坑基本集中在三個地方。第一注意out_indices與后面 neck 的in_channels要對齊。比如 ResNet-50 四個 stage 的輸出通道數(shù)是[256, 512, 1024, 2048]如果你換了一個輸出通道數(shù)不同的主干比如某些輕量網(wǎng)絡(luò)輸出[24, 56, 120, 248]那 FPN 的in_channels必須同步修改否則 1x1 卷積的輸入維度直接 mismatch跑起來就是 TypeError。第二預(yù)訓(xùn)練權(quán)重的鍵名匹配問題。mmDetection 加載預(yù)訓(xùn)練權(quán)重時是拿 state dict 的 key 做嚴(yán)格匹配的如果你換了一個結(jié)構(gòu)稍微不同的 backbone比如 ResNet 的 stem 換了那么預(yù)訓(xùn)練權(quán)重里對應(yīng)層的 key 就對不上。這時候你需要在訓(xùn)練腳本里加--cfg-options model.backbone.pretrained...或者用load_from配合strictFalse來忽略不匹配的層。有一次我改了 stem 的結(jié)構(gòu)忘了處理權(quán)重加載結(jié)果訓(xùn)練了 20 個 epoch 后 mAP 一直在 0 附近排查了半天才意識到是預(yù)訓(xùn)練權(quán)重根本沒加載上。這個問題很隱蔽因為訓(xùn)練不會報錯只是精度起不來。第三frozen_stages和norm_eval需要根據(jù)你的 backbone 類型調(diào)整。如果你換了一個沒有 BN 層的 backbone或者用的 BN 在微調(diào)時會產(chǎn)生很大問題保持默認(rèn)配置反而會拖慢收斂。適合初學(xué)者的建議是先保持默認(rèn)配置跑通確認(rèn)架構(gòu)沒問題再去調(diào)這些“精細(xì)化”參數(shù)。3. 特征金字塔 Neck讓不同尺度的目標(biāo)都被看見3.1 FPN 的配置與機(jī)制FPNFeature Pyramid Network是當(dāng)前檢測框架里最常見、也最重要的 neck。它在配置里長這樣neckdict( typeFPN, in_channels[256, 512, 1024, 2048], out_channels256, num_outs5),這份配置的意思是FPN 接收來自 backbone 的四個不同尺度的特征通道數(shù)分別是 256、512、1024、2048經(jīng)過處理后統(tǒng)一輸出 256 通道的特征圖最終向外輸出 5 個尺度的特征。FPN 的核心操作分兩條路徑。自底向上的路徑就是 backbone 本身——分辨率越來越低但語義越來越豐富。FPN 額外加了一條自頂向下的路徑從分辨率最低但語義最強(qiáng)的 stage4 特征開始通過 1x1 卷積統(tǒng)一通道數(shù)然后逐級上采樣與自底向上的特征做逐元素相加。這樣做的效果是高層特征獲得了高分辨率的細(xì)節(jié)信息低層特征獲得了豐富的語義信息每一層都同時擁有“是什么”和“在哪里”兩種能力。目標(biāo)檢測中尺度變化很常見——一張圖里大象可能占半個畫面遠(yuǎn)處的貓只有 20 個像素。沒有 FPN 之前老方法要么只在單一特征圖上檢測對不同尺度很不友好要么在多個尺度上分別跑一遍網(wǎng)絡(luò)計算量爆炸。FPN 用很小的額外計算量就拿到了多尺度的能力這也是它成為標(biāo)配的原因。3.2 配置中的幾個隱蔽細(xì)節(jié)num_outs表示 FPN 輸出的特征金字塔層數(shù)。它通常比in_channels的列表長度多 1比如這里in_channels有 4 個num_outs5意味著除了 backbone 的 4 層特征FPN 還會在最高層1/32 分辨率之上再做一次 stride2 的下采樣額外產(chǎn)生一個 1/64 分辨率的特征層通常叫 P6。P6 對檢測超大目標(biāo)有幫助但如果你處理的任務(wù)里目標(biāo)普遍偏小反而沒必要保留這一層——小目標(biāo)天然在高分辨率特征層上更容易被檢測到。我曾經(jīng)在一個小目標(biāo)數(shù)據(jù)集上測試過把num_outs從 5 改成 4精度反而略有提升因為 P6 層貢獻(xiàn)的全是誤檢。out_channels是 FPN 所有輸出層的統(tǒng)一通道數(shù)。它在后續(xù) head 的in_channels里必須保持一致。很多人改網(wǎng)絡(luò)時只調(diào)了 backbone 的深度忘了 FPN 的out_channels也要匹配 head 的輸入通道結(jié)果又是一堆維度報錯。如果你用的是PAFPNPath Aggregation FPN它會在 FPN 的基礎(chǔ)上再加一條自底向上的增強(qiáng)路徑讓底層細(xì)節(jié)信息也能向上傳遞對小目標(biāo)更友好。配置上的差別是把typeFPN換成typePAFPN同時多了num_outs之外的一些下采樣配置。YOLO 系列檢測器里常用的就是這種結(jié)構(gòu)。經(jīng)驗之談如果項目里目標(biāo)尺寸跨度很大優(yōu)先考慮保留完整的 5 層 FPN如果目標(biāo)普遍偏小可以試試去掉最深層或者在neck后面接一個尺寸較大的特征層做檢測。這類小改動往往比更換 backbone 收益來得更快。4. 檢測頭 Head分類和回歸真正發(fā)生的地方4.1 單階段 dense head 的配置邏輯單階段檢測器的 head 直接在 neck 輸出的特征圖上做密集預(yù)測。以 RetinaNet 為例bbox_head大概是bbox_headdict( typeRetinaHead, num_classes80, in_channels256, stacked_convs4, feat_channels256, anchor_generatordict( typeAnchorGenerator, octave_base_scale4, scales_per_octave3, ratios[0.5, 1.0, 2.0], strides[8, 8, 16, 32, 64]), bbox_coderdict( typeDeltaXYWHBBoxCoder, target_means[0.0, 0.0, 0.0, 0.0], target_stds[1.0, 1.0, 1.0, 1.0]), loss_clsdict( typeFocalLoss, use_sigmoidTrue, loss_weight1.0), loss_bboxdict(typeL1Loss, loss_weight1.0)),核心概念有兩個anchor 的生成和bbox 的編解碼。anchor_generator里的strides指的是特征圖下采樣倍數(shù)也就是該層特征圖上每個像素對應(yīng)原圖上的步長。特征圖的每個像素都會鋪上若干 anchor。octave_base_scale4表示基礎(chǔ)尺寸為 4 像素scales_per_octave3表示在每個“倍頻程”內(nèi)取 3 種尺度ratios[0.5, 1.0, 2.0]表示 3 種長寬比。所以每個像素上RetinaNet 默認(rèn)生成3 (scales) x 3 (ratios) 9個 anchor這些 anchor 覆蓋了不同尺度、不同形狀的目標(biāo)候選。bbox_coder負(fù)責(zé)的是“框的表示方式”。檢測器一般不會直接回歸框的四個坐標(biāo)絕對值而是回歸“相對 anchor 的偏移量”因為直接回歸絕對值太難學(xué)。DeltaXYWHBBoxCoder把真實框轉(zhuǎn)換成相對于 anchor 的(dx, dy, dw, dh)訓(xùn)練時讓網(wǎng)絡(luò)去預(yù)測這四個值。target_stds是歸一化用的標(biāo)準(zhǔn)差RPN 里通常是[1.0, 1.0, 1.0, 1.0]RCNN 精修頭里通常是[0.1, 0.1, 0.2, 0.2]因為精修階段框的偏移量更小用更小的標(biāo)準(zhǔn)差可以讓回歸目標(biāo)放大一些訓(xùn)練更好收斂。這里要提醒一個非常容易踩的坑num_classes一定不要隨便寫。它應(yīng)該等于“目標(biāo)類別數(shù)“不含背景類別。比如你的數(shù)據(jù)集有 10 類物體num_classes就是 10。如果你從別人那里復(fù)制了一份 COCO 的配置里面是 80忘了改訓(xùn)練時 loss 計算、精度評估都會錯得離譜而且往往表現(xiàn)出一種“l(fā)oss 降了但 mAP 極低”的詭異狀態(tài)。4.2 雙階段 RPN Head RoI Head 的配合雙階段檢測器把檢測頭分成兩個階段這是它在精度上更“講究”的地方。RPNRegion Proposal Network的作用是快速生成候選框。它在每個特征層上做一次二分類有沒有物體和一次粗回歸挑出幾千個候選框再通過 NMS 篩到幾百個。RPN 本身并不知道框里是什么類別它只負(fù)責(zé)“這里可能有東西”。這個設(shè)計來自人類視覺的一個直覺先快速掃一遍場景鎖定可疑區(qū)域再仔細(xì)看清每個區(qū)域里到底是什么。RoI Head 則是真正的“精修專家”。它對 RPN 給出的每個候選框用RoI Align從特征圖上摳出對應(yīng)的區(qū)域特征然后統(tǒng)一縮放到固定尺寸比如 7x7送到全連接層里做分類和精細(xì)回歸。RoI Align 是雙階段方法里特別重要的組件。在它之前RoI Pooling 用的是兩次量化取整會引入像素級的偏差對小目標(biāo)尤其不友好。RoI Align 用雙線性插值避免了量化誤差這也是 Mask R-CNN 之后幾乎所有雙階段方法都默認(rèn)使用 RoI Align 的原因。配置里對應(yīng)的字段是roi_headdict( typeStandardRoIHead, bbox_roi_extractordict( typeSingleRoIExtractor, roi_layerdict(typeRoIAlign, output_size7, sampling_ratio0), out_channels256, featmap_strides[4, 8, 16, 32]), bbox_headdict( typeShared2FCBBoxHead, in_channels256, fc_out_channels1024, roi_feat_size7, num_classes80, ... ), )這里有個細(xì)節(jié)roi_layer里的output_size7和bbox_head里的roi_feat_size7必須一致。output_size決定 RoI Align 輸出特征圖的高寬roi_feat_size決定后面全連接層的輸入尺寸。如果你把output_size改成了 14roi_feat_size還留著 7那全連接的輸入維度就會對不上。這種錯誤在改網(wǎng)絡(luò)時特別容易出現(xiàn)因為報錯信息往往發(fā)生在網(wǎng)絡(luò)前向的最后階段定位起來比較費(fèi)時間。雙階段方法還有一個隱含的好處RPN 已經(jīng)把絕大多數(shù)背景框篩掉了RoI Head 處理的候選框數(shù)量遠(yuǎn)少于單階段密集檢測的 anchor 數(shù)量所以分類器學(xué)起來更容易精度自然更高。代價就是推理速度慢不少畢竟多跑了一輪網(wǎng)絡(luò)。到這一步你應(yīng)該也理解了為什么單階段與雙階段的配置結(jié)構(gòu)有那么大差異——本質(zhì)上就是“一次到位”和“由粗到精”兩種思路的區(qū)別。5. 一個最小但完整的檢測器配置逐行拆解5.1 用 Faster R-CNN 走一遍完整配置我不會讓你去對著論文看結(jié)構(gòu)直接拆一份實際的 Faster R-CNN 配置把它當(dāng)成一張“JSON 地圖”逐段翻譯。完整的model配置長這樣model dict( typeFasterRCNN, backbonedict( typeResNet, depth50, num_stages4, out_indices(0, 1, 2, 3), frozen_stages1, norm_cfgdict(typeBN, requires_gradTrue), norm_evalTrue, stylepytorch), neckdict( typeFPN, in_channels[256, 512, 1024, 2048], out_channels256, num_outs5), rpn_headdict( typeRPNHead, in_channels256, feat_channels256, anchor_generatordict( typeAnchorGenerator, scales[8], ratios[0.5, 1.0, 2.0], strides[4, 8, 16, 32, 64]), bbox_coderdict( typeDeltaXYWHBBoxCoder, target_means[0.0, 0.0, 0.0, 0.0], target_stds[1.0, 1.0, 1.0, 1.0]), loss_clsdict( typeCrossEntropyLoss, use_sigmoidTrue, loss_weight1.0), loss_bboxdict(typeL1Loss, loss_weight1.0)), roi_headdict( typeStandardRoIHead, bbox_roi_extractordict( typeSingleRoIExtractor, roi_layerdict(typeRoIAlign, output_size7, sampling_ratio0), out_channels256, featmap_strides[4, 8, 16, 32]), bbox_headdict( typeShared2FCBBoxHead, in_channels256, fc_out_channels1024, roi_feat_size7, num_classes80, bbox_coderdict( typeDeltaXYWHBBoxCoder, target_means[0.0, 0.0, 0.0, 0.0], target_stds[0.1, 0.1, 0.2, 0.2]), reg_class_agnosticFalse, loss_clsdict( typeCrossEntropyLoss, use_sigmoidFalse, loss_weight1.0), loss_bboxdict(typeL1Loss, loss_weight1.0))) )我們來一步一步地看。typeFasterRCNN是檢測器外殼的類型它決定了訓(xùn)練流程怎么編排、前向推理走哪條路。backbone是 ResNet-50輸出四層特征neck是 FPN把四層特征統(tǒng)一成 256 通道的 5 層金字塔rpn_head在每層特征上生成scales[8]和 3 種寬高比組合出的 3 個 anchor實際 RPN 一般是 3 個因為scales只有 1 個值、ratios有 3 個roi_head用 RoI Align 提取候選框特征然后通過兩層全連接做分類和邊界框精回歸。一個需要注意的對應(yīng)關(guān)系rpn_head的anchor_generator.strides[4, 8, 16, 32, 64]有 5 個值和neck的num_outs5一一對應(yīng)。如果 FPN 輸出層的數(shù)量或者這些層對應(yīng)的 stride 變了這里必須同步修改。這個對應(yīng)關(guān)系在改num_outs時很容易漏掉出錯的表現(xiàn)是 RPN 在某個特征層上找不到匹配的 anchor 配置直接報錯。bbox_head里的reg_class_agnosticFalse是一個值得理解的字段。False意味著回歸分支為每個類別各預(yù)測一組邊界框偏移量框修正得更精細(xì)但參數(shù)量也更大最后的全連接層輸出維度從 4 變成4 * num_classes。True則表示所有類別共用一組回歸參數(shù)參數(shù)量小、速度更快但精度有輕微損失。實際小數(shù)據(jù)集項目里我一般會保持默認(rèn)False這也是官方配置的選擇。5.2 從配置到模型的實例化流程配置里的dict最終是怎么變成可執(zhí)行的網(wǎng)絡(luò)模塊的mmDetection 的答案是讀取type字段去對應(yīng)的注冊表里找到這個類的定義把剩下的參數(shù)作為關(guān)鍵字參數(shù)傳進(jìn)去完成實例化。這條鏈路的起點是from mmdet.models import build_detector model build_detector(cfg.model, test_cfgcfg.get(test_cfg))build_detector展開之后實際就是調(diào)用了build_from_cfg先根據(jù)model.type拿到FasterRCNN這個類然后創(chuàng)建backbone、neck、rpn_head、roi_head這些子模塊再全部作為參數(shù)塞進(jìn)FasterRCNN的構(gòu)造函數(shù)。子模塊的構(gòu)建方式也是一樣的——讀各自的type找注冊表實例化。這套機(jī)制的好處是你不需要寫一堆if backbone resnet50: return ResNet()之類的分支代碼。所有模塊都把自己注冊到一個全局字典里配置里寫什么type框架就找什么類。這也是為什么你需要看mmdet/models/backbones/resnet.py源碼時在文件末尾總會看到一句BACKBONES.register_module() class ResNet(nn.Module): ...如果你調(diào)試網(wǎng)絡(luò)結(jié)構(gòu)時想知道某個中間結(jié)果的 shape最簡單的辦法是在對應(yīng)模塊的forward里打印x.shape。因為模塊都是直接通過配置構(gòu)建的打斷點也好、加打印也好都和你自己寫的一個普通 PyTorch 模型沒有區(qū)別這也是 mmDetection 對新手比較友好的地方。6. 網(wǎng)絡(luò)的可定制性注冊器機(jī)制與自定義組件6.1 注冊器機(jī)制到底做了什么這一節(jié)可能是 mmDetection 全網(wǎng)架構(gòu)里最“勸退”也最有價值的部分。注冊器Registry本質(zhì)就是一個“類名到類的映射表”但它的巧妙之處在于把“注冊”這件事做成了裝飾器。當(dāng)你新建一個自定義 backbone代碼大概是這樣的from mmdet.models.builder import BACKBONES BACKBONES.register_module() class MyBackbone(nn.Module): def __init__(self, arg1, arg2): super().__init__() self.arg1 arg1 self.arg2 arg2 ... def forward(self, x): ... return outs只要這個文件被 import 過MyBackbone就會被自動寫進(jìn)BACKBONES這個注冊表。之后你在配置里寫backbonedict( typeMyBackbone, arg1..., arg2...)框架構(gòu)建時就會執(zhí)行BACKBONES.get(MyBackbone)找到這個類然后用arg1和arg2作為參數(shù)實例化。我強(qiáng)烈建議你搞清楚mmdet/models/builder.py里那幾十行代碼里面定義了BACKBONES、NECKS、ROI_EXTRACTORS、HEADS、DETECTORS等注冊表。搞清楚這些注冊表的名字你就知道自己的模塊應(yīng)該注冊到哪里新主干網(wǎng)絡(luò) →BACKBONES.register_module()新特征融合模塊 →NECKS.register_module()新檢測頭 →HEADS.register_module()新檢測器外殼 →DETECTORS.register_module()這個機(jī)制是 mmDetection 支持復(fù)用的核心。也正是因為注冊器的存在你會發(fā)現(xiàn)很多模塊的內(nèi)部實現(xiàn)可能不一樣但只要它們注冊到同一個表里、接口一致就能無縫替換。這就是“配置驅(qū)動”的真正含義。6.2 自定義組件時最常見的三個坑我見過太多人卡在自定義這一步基本都是三類問題。第一類配置里寫了typeMyModule運(yùn)行時報KeyError: MyModule is not in the ... registry。原因幾乎總是你雖然寫好了類和裝飾器但這個文件沒有被導(dǎo)入。mmDetection 默認(rèn)只會導(dǎo)入mmdet/models/__init__.py里的東西你自己新建的.py文件如果不被任何__init__.pyimport注冊表里就沒有它。解決辦法是在對應(yīng)的__init__.py里加一行from .my_module import MyBackbone。這行代碼不直接做事但它觸發(fā)文件執(zhí)行裝飾器才算生效。第二類build_from_cfg報類型不匹配。這通常是因為你的模塊__init__里聲明的參數(shù)名和配置 dict 里的 key 不一致或者_(dá)_init__的參數(shù)沒有給默認(rèn)值導(dǎo)致cfg里的參數(shù)匹配不上。調(diào)試方法很簡單在模塊的__init__里打一個斷點看實際收到的 kwargs 是什么。第三類改了網(wǎng)絡(luò)結(jié)構(gòu)后加載預(yù)訓(xùn)練權(quán)重報錯。這與注冊器沒關(guān)系但最容易讓人心態(tài)爆炸。報錯信息一般是size mismatch for ...。原因很簡單預(yù)訓(xùn)練權(quán)重的層和你的新網(wǎng)絡(luò)層不完全對應(yīng)。規(guī)范做法是在配置的load_from里指定預(yù)訓(xùn)練權(quán)重然后訓(xùn)練腳本里用--cfg-options把model.train_cfg相關(guān)的嚴(yán)格加載關(guān)掉或者在代碼里調(diào)用load_state_dict時設(shè)置strictFalse。不過要注意strictFalse是一個有風(fēng)險的操作它會靜默忽略缺失的層有時候反而掩蓋了真正的維度錯誤。我的建議是加載報錯后先明確搞清楚哪些層不匹配確認(rèn)是預(yù)期的結(jié)構(gòu)差異再關(guān)掉嚴(yán)格模式。7. 自主修改網(wǎng)絡(luò)架構(gòu)的實操經(jīng)驗7.1 一次“換主干加檢測頭”的完整過程假設(shè)你想把默認(rèn)的 ResNet-50 backbone 換成一個新的輕量網(wǎng)絡(luò)再在 FPN 后面加一個小模塊具體可以怎么做我會分步驟介紹這套流程我自己反復(fù)用過很多次是通用的。第一步新建一個文件mmdet/models/backbones/my_backbone.py或者放在你自己的插件目錄里實現(xiàn)網(wǎng)絡(luò)結(jié)構(gòu)。不需要從頭寫卷積層復(fù)用torchvision或timm里的現(xiàn)成模型也行只要保證forward返回一個 tuple 或者 list里面是不同 stage 的特征圖。然后在文件末尾加上BACKBONES.register_module()。第二步注冊。在mmdet/models/backbones/__init__.py里導(dǎo)入這個文件。注意__init__.py的順序不影響執(zhí)行結(jié)果只要有 import 語句就夠了。第三步改配置。把backbone里的type改成你的類名并根據(jù)你的網(wǎng)絡(luò)實際輸出通道數(shù)調(diào)整out_indices和后面neck.in_channels。一個常見做法是先在骨干網(wǎng)絡(luò)內(nèi)部做一次print(outs.shape)跑一次單 batch 的前向確認(rèn)輸出維度和預(yù)期一致再改配置。這一步能幫你省大量排查時間。第四步改neck和head的通道數(shù)使其與 backbone 輸出對齊。如果你只是換了depth而沒有換結(jié)構(gòu)這一步甚至可以不動如果你換了完全不同的網(wǎng)絡(luò)那么in_channels必須改。同時檢查一下rpn_head的strides和roi_head里featmap_strides是否和你的 FPN 輸出層級 match。第五步處理預(yù)訓(xùn)練權(quán)重。如果新 backbone 有預(yù)訓(xùn)練權(quán)重用load_from指定如果結(jié)構(gòu)差異很大用轉(zhuǎn)換腳本先對齊狀態(tài)字典里的 key實在對齊不了的才考慮strictFalse。整個過程聽起來繁瑣但這就是科研里最常見的“改配置迭代”流程。跑通一次之后你會覺得靈活度很高所有組件的替換邏輯其實都是一樣的。7.2 常見問題排查速查表我把實際項目里高頻出現(xiàn)的報錯和解決辦法整理如下現(xiàn)象原因解決辦法KeyError: xxx is not in the ... registry模塊沒有注冊確認(rèn)xxx.register_module()存在且文件被 import前向時報size mismatch某個模塊的輸入輸出通道數(shù)不一致檢查 backbone 輸出通道、neckin_channels、headin_channelsRoI Align相關(guān) shape 錯誤roi_layer.output_size和roi_feat_size不一致保持兩個值一致并檢查 head 里 fc 層的輸入維度加載權(quán)重時報size mismatch新網(wǎng)絡(luò)和預(yù)訓(xùn)練權(quán)重結(jié)構(gòu)不同調(diào)整 key 對齊必要時設(shè)置strictFalse訓(xùn)練 loss 為 NaN學(xué)習(xí)率太大或正則化設(shè)置不當(dāng)降低學(xué)習(xí)率檢查norm_cfg設(shè)置排查數(shù)據(jù)是否存在異常值改了num_classes但評估結(jié)果異常類別數(shù)不匹配確認(rèn)num_classes等于數(shù)據(jù)集的類別數(shù)量不含背景類顯存溢出batch size 過大或 backbone 過深減小 batch size降低輸入分辨率考慮使用更淺的 backbone還有一個容易被忽略的問題很多人會直接修改官方配置里的model字段但配置繼承時沒有處理好。如果一份配置用了_base_繼承另一個配置你在子配置里寫了新的model那么整體 model dict 會替換掉 base 里的 model而不是做深層的逐 key 合并。如果你只是想覆蓋某一項比如只改num_classes正確的寫法是寫一個modeldict里面只放需要覆蓋的字段嗎不對——mmDetection 的配置繼承只做頂層 dict 的合并所以你要改model.roi_head.bbox_head.num_classes最安全的做法是把整條鏈路都寫全modeldict(roi_headdict(bbox_headdict(num_classes10)))。從頂層開始每一級都給出 dict避免合并時悄悄丟了其他字段。我在早期因為這個機(jī)制吃過虧只寫了modeldict(roi_headdict(bbox_headdict(num_classes2)))結(jié)果整個roi_head被替換成了只有bbox_head的 dict跑起來一堆配置缺失。搞清楚配置繼承規(guī)則能幫你少折騰很多個晚上。最后聊幾句我在實際使用這個框架的過程中體會到mmDetection 的網(wǎng)絡(luò)架構(gòu)設(shè)計最值得學(xué)習(xí)的反而不是某個檢測算法本身而是它這套模塊拆分 注冊機(jī)制 配置驅(qū)動的組裝理念。剛開始學(xué)的時候別急著追求理解每個算法的數(shù)學(xué)細(xì)節(jié)先學(xué)會“看配置猜結(jié)構(gòu)”拿到一份配置在腦子里過一遍 backbone 的輸出是什么形狀、neck 怎么融合、head 在哪一層做分類和回歸基本上網(wǎng)絡(luò)就活了。等你改過幾次 backbone、加過幾次自定義模塊之后再回頭看那些論文里的檢測器會發(fā)現(xiàn)它們之間的距離其實沒有想象中那么大。最后再分享一個小技巧如果你想快速驗證某個 backbone 改動到底效果如何不需要把整個訓(xùn)練流程跑完。先拿一個很小的數(shù)據(jù)集、只訓(xùn)練幾個 epoch觀察 loss 的下降趨勢和大致精度心里有數(shù)了再上全量數(shù)據(jù)。這個階段跑得快迭代才會快。祝你的實驗早日跑通指標(biāo)早日漂亮起來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人妻射精AV| 九九色综合网| 六月丁香啪啪| 99热97美女| 婷婷五月天色综合翘| 在线另类| 黄网在线免费观| 丁香五月开心婷婷| 精品一二三区久久AAA片| 久久久久8888| 国产精品99久久久久久久女警| 在线视频色五月| 久久99精品久久久久久噜噜| 亚州操人在线视频| 欧美日韩国产伦精品日韩人妻一| 91综合色| 五月丁香六月激情欧美综合| 看久久性爱99视频| 婷婷视频在线| 婷婷六月丁香在线| 99热在线中文字幕| www久热com| 久久久婷婷婷| 婷婷丁香六月五月天| 中文字幕,综合,91| 久久精品99国产精品日本| 99碰| 丁香六月天AV| 国自产拍偷拍精品啪啪一区二区| 色播丁香五月婷婷操:屄| 懂色AⅤ| 亚洲成人网在线观看| 久草婷婷网 | 99热在线观看| 丁香五月成人社区| 丁香五月Av| 天天综合.com| 五月社区婷婷激情| 五月激情丁香五月宗合| 狠狠操天天操综合| 丁香伊人激情| 伊人久久婷婷五月天激情四射| 伊人久久大香蕉网| 久久 婷婷 五月天| 超热久碰.com| 国产精品汇聚精彩第二页 - 高清完整版在线 - 青蛙AV | 五月丁香网站| 欧美精品999| 大天天伊人| 99色最新在线视频网站| 日本色色色| 人人天堂操| wwW天天干| 区区久久妻| 色综合久久综合中文综合网| 日韩人妻无码专区| 欧美狠狠一在草| 免费AV播放| 日韩99视频| 婷婷综合另类| 日本欧美999久久久三级片| 超喷97免费在线视频| 色99视频| 牛牛澡牛牛爽| 激情淫乱男女| 激情综合网址| 色色综合日韩| 99久久久国产精品免费蜜乳tv| 甈吧vv| 六月丁丁香| 欧美99| 久热黄色| 激情网五月天| 九九爱激情| 亚洲性爱AV在线| 碰97 久| 日本在线观看99| 激情五月天久久| 欧美色必爱| 六月丁香婷婷爱| 婷婷五月丁香人妻无码高清| 丁香激情网| 成人网站在线观看视频| 狠狠五月丁香色婷| 婷婷开心激情| 26uuu| 日日干夜夜干| 91 久热| www.一起草av| 丁香六月色婷婷欧美| 亚洲色色图片| 免费不卡狠操美女视频网| 婷婷成人五月天成人文学| 99re8在这里只有精品| 狠狠狠色激情综合适合| 久久性爱视频| 在线看av| 亚洲性图一区二区三区| 亚洲中文乱字字幕在线永久| 成人精品在线| 黄页免费一级视频懂色| 激情五月,色五月| 五月丁香在线国产| 91综合色| 婷婷丁香五月欧美人| 五月开心婷婷| AV在线观看网站| 操操啪| www久久久久久久97| 五月天偷拍| 日韩成人精品中文字幕电影| 色天堂A| 99精品久久久久久久婷婷| 美女天天艹人人爽| 99A片| 五月丁香激情四射| 日韩小视频在线99| 第2色五月婷| 这里只有久久精99| 欧美叉叉叉BBB网站| 成人一区在线观看| 99精品国产在热久久| 天天爽天天透天天爱| 亚洲综合五月天| 五月色婷婷综合| 色色婷婷综合| 天天想夜夜爽天天爽| 永久AⅤ1| 风流少妇A片一区二区蜜桃 | 99色视频| a在线观看| 五月深爱网| 丁香九月婷| 久久大大香| 97碰碰在线看视频免费| 激情丁香五月天| 久久久久9| 77777亚洲午夜久久| 六月亚洲婷婷6月中文字幕| 天天做天天爱天天要| 婷婷伊人网| AVV黄| 精品婷婷五月视| 丁香五月天成人网站| 激情综合五月天| 99热网精品| 99色网站| 五月婷婷六月丁香| 91操在线| 深爱激情婷| 99热这里| 丁香五月第九色| 五月天综合久久| 婷久久高清| 综合激情五月综合激情五月激情1| 97色天堂| 激情色色| 任你爽视频| 色综合久久44| 丁香五月影院| 天天插轮理| 欧美99| 国产操肏网站| 丁香五月婷婷亚洲色图| 在线观看免费狠狠色丁香香综合| 婷婷六月丁香五月| 色欧美日| 丁香激情五月| 久久婷婷网| 激情五月丁香亭亭| 丁香婷婷综合激情五月色| 天天舔天天摸天天射| 激情五月天婷婷| 婷婷五月开心六月AV| 深爱五月亚洲| 碰人人97| 美国十月色婷婷在线观看| 4399精品一区二区| 色婷婷久久综合中文久久一本| 亚洲六月综合激情久久下卡| 婷婷五月丁香网| 丰满少妇乱A片无码| 免費亭亭成人| 婷婷狠狠综合网入口| 天天草天天舔| 色六月 婷婷| 99热在线中文字幕| 久久一伦| 91九色在线视频| 九九综合网色全集| www.婷婷五月天| 影音先锋色婷婷| 超碰色色综合| 99色综合| 国产99久久久国产精品免费看| 思思热思在线精品视频| 超碰天堂网| 色婷婷六月天在线| 激情久久月| 日日爽日日| 狠狠综合色网| 婷婷五月天激情网| 婷婷五月久久| 国产精品色婷婷99久久精品| 激情婷婷五月天| 人人干AV| 五月天综合激情网| 97人碰人操| 五月婷婷在线视频观看| 99久久黄色顶级视频| 激情小说色五月| 日日操夜夜爽| 天天摸天天爽| 97干视频在线| 婷婷五月天97干| 中文字幕 中文字幕明步| 99啪啪| 五月婷婷香蕉| 五月天国产| 亚洲综合婷婷| 99日韩| 国产SUV精品一区二区6| 久操激情| 丁香婷婷十月| 色八月婷婷| 亚洲精级| 婷婷精品| 亚洲综合视频网| 丁香五月亚洲无码| AV九九| 婷婷五月天天| 婷婷五月天AV| 日本三级韩三级99久久| 亚洲欧美999| 玖玖综合网| 五月成人丁香av91| 丁香六月婷婷久久综合| 五月丁香久久网| 六月丁香婷婷网| 97色色综合| 国产欧美熟妇另类久久久 | 亚洲av成人在线| 五月色欧洲| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 天天干天天日天天操| www,26uuu,c0m,色情| 丁香五月香蕉在线| yirenjiqingshiping| 久久香蕉网| 人人摸人人| 色欲丁香久久| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 久久黄色片| 婷婷五月综合色中文字幕| 久热久re| 婷婷五月天大香蕉在线视频观看| 久久久久久久11111111111| 成片免费观看视频大全| 麻豆精品| 色综合久久久无码中文字幕999| 五月丁香六月成人| 超碰在线中文字幕| 婷婷丁香五月激情| 天天玩夜夜操| 强伦轩人妻一区二区电影| 丁香五月丁香伊人| 天天干天天干天天干天天干天天干天天干天天 | 丁香婷婷啪啪啪| 天天肏屄夜夜爽| 亚洲操精品| 激情熟女网| 波多婷婷久久| 丁香五月桃花在线激情综合| 婷婷丁香五月社区亚洲| 婷婷丁香五月视频| 精品自拍99| 久久久亚洲精品一区二区三区浴池 | 亚洲av成人一区二区电影在线| 五月开心播播网| 久久五月天婷婷| 97久久草草超级碰碰碰| 操一区| www.91在线观看| 性综合网| 婷婷99视频精品| 婷婷综合网| 天天操夜夜爽歪歪| 99视频在线| 五月天婷婷在线观看| 婷婷夜夜操| 亚洲第一视频 久久| 五月天婷婷开心| 五月天欧美 另类小说| ,99视频久久| 影音先锋女人av鲁色资源网小说免费| xxxx五月| 日本九九热| 丁香五月综合在线| 中文字幕婷婷五月天在线观看| 99爱最新免费视频在线观看| 五月天综合图片| 久久这里有精品视频| 五月丁香欧美在线| 狠狠干在线| 国产精品色| 狠狠狠狠狠狠色| 色久女| 五月婷丁香| 五月婷婷综合在线| 色色五月天 亚洲| 久久五月天精品视频| 欧美人人草草| 色婷婷成人网| ss五月天激情| 丁香激情综合| 91丨九色丨43老版熟女| 嫩BBB搡BBBB榛BBBB| 熟女人妻视频| 五月天婷婷AV| 六月色日韩| 欧美综合五月丁香六月婷| 婷婷综合色五月天| 五月婷亚洲精品AV天堂| 久久AV无码精品人妻系列试探| 色欲五月丁香| 97在线综合| 婷婷国产综合| 激情欧美五月丁香| 99热在线播放| 婷婷婷久久| 99人妻碰碰碰久久久久| 开心深爱五月天| 婷婷五月激情在线| 九九精品99| 五月丁香六月| 色播五月丁香综合| www..com色爱| 色婷婷888| www.婷婷| 久婷久婷| 天天摸天天高潮天天爽| 色五月综合激情| 少妇性BBB搡BBB爽爽爽视頻| 999精品乱码77777| 婷婷激情网五月天| 五月婷婷啪啪| 欧美,日韩成人在线| 婷婷色在线视频| 亚州欧美国产久精国产99综合视频| 日日爽天天| 亚洲综合久| 久久人人做人人妻人人玩精品va| 激情99| 丁香五月在线观看综合| 91超碰人人操| 丁香熟女乱| 久久精品爱爱| 操操国产| 991自拍视频| 婷婷五月天成人网| 久久丁香五月天| 成人AV在线电影| 久久久久久久五月| 婷婷丁香五月欧美人| 丁香婷婷啪啪| 九伊人网| 五月天基地| 天天操夜夜操| 欧美婷婷丁香五月社区| 蜘蛛女侠2003满天星免费观看| 大香蕉综合| 欧美、日韩、中文、制服、人妻| 成人丁香婷婷五月天| 亚洲操逼网| 久久中国毛毛片爱久久| 丁香综合网| 无码少妇高潮喷水A片免费| 丁香五月婷婷婷桃花影院| 狠狠另类视频| 精品婷婷| 天天爽在线视频| 免费视频无码| 五月婷婷丁香网| 九九免费在线视频| 97精品人人A片免费看| 玖玖无码中文| 99福利导航| 东京热人妻一区二区三区在线| 天天做天天爰天天爽天天无遮挡| 婷婷色中文字幕| 超碰色综合| 激情五月天电影| www.lchjjc.com| 99国产小视频免费观看| 天天舔天天爽| xxxx五月激情| 99久久这里只有精品| 婷婷99中文字幕| 狠狠狠狠狠狠| 97久久五月丁香婷婷| 婷婷五月伦理网站| 99操网站| 婷婷激情小说| 色综合偷拍| 欧美97超碰| 天天综合亚洲综合| www.wuyuetian啪啪| 秋霞学生妹一二级| 无码激情AAAAA片-区区| 99热这里有精品24| 99久久综合狠狠综合久久| 五月婷无码| 亚洲视频在线观看| 精品福利911| 中文字幕网伦射乱中文| 六月丁香婷婷尤物| 色综合中文综合网| 99色热| 国产亚洲成AV人片在线| 美国十月色婷婷在线观看| 人妻激情视频| 91操人视频| 色婷婷综合网站| 久久伊人婷婷| 五月激情婷婷图片基地| 日本强伦片中文字幕免费看| 99免费视频网| 中文字幕日韩成人| 日韩九九| 五月婷伊人| 久久久久久久久久久久久9| 三级大香蕉网| 久久的爱大香蕉| 超碰在线中文字幕| 99re99热| 99riAV成人在线视频| 性天天中文网| 91凹凸在线| 日日综合网| 五月婷婷色综图片| 久久久噜噜噜操操操| 99色在线视频| 久久久精品视频79| 91妻人人爽人人看片| 久久免费婷婷视频| 婷婷色九月| www.激情| 婷婷性福五月天| 色欲天天综合| 狠狠婷婷色| 丁香六月情| 五月天开心色情网| 色色色色色色综合网| 五月婷婷免费看| 日本久久性| 五月丁香啪| 婷婷激情五月色综合| 色综合中文| 五月天激情小说| 婷婷五月综合激情免费视频| 丁香五月婷婷激情网| 色婷婷成人做爰A片免费看网站| 热久视频| 成人深爱丁香五月| 久激情| 久久9视频| 五月丁香黄色视频| 久久五月天综合视频网站| 久久综合9| 久操人妻| 亚洲综合色色| 99在线观看免费精品视频| 久久精品日| 99热只有这里有精品| 五月天成人在线播放丁香| 欧美天堂久久| www.99色在线| 99综合| 欧美丁香婷婷五月天| 婷婷六月丁香激情| 色哟哟性爱av| 五月丁香色停停啪啪啪| 老司机伊人| 婷婷五月图片小说网| 狠狠干综合| 日日操夜夜操中国无码| 亚洲精品久久久久AV无码| 高清无码入口| 五月激情网综合| 亚洲国产精品五月天| 五月天丁香综合在线| 婷婷五月丁香五月| 伊人久久婷婷| 丁香五月天电影| 色五月五月丁香| 99综合在线| 9色免费网| 国产人妻777人伦精品HD| 99色在线观看| 超碰99资源站| 天天日天天摸| http://www.sd-xiangsu.com/| 久久这里只精品66| 午夜色婷婷| 玖玖婷婷色| 免费色婷婷| 无码免费人妻A片AAA毛片西瓜| PORNY九色9l自拍视频成人| 色五月亚洲开心网| 色婷婷色五月综合| 六月丁香深深爱| 激情欧美婷婷| 六月色色婷婷| 五月婷婷丁香五月亚洲色| 五月婷婷丁香六月| 大香蕉伊在| 九九99视频精品| 在线播放人妻| 思思久久99热只有频精品66| 中文字幕网伦射乱中文| 91狠狠色丁香婷婷综合久久| www超碰| 丁香五月天色婷婷| 丁香五月偷拍| 成人电影一区| 极品少妇XXXX精品少妇偷拍| 在线只有精品| 亚洲精品又粗又大又爽A片| 五月综合久久| 99色视频| 欧美久久一级内射wwwwww.| 亚洲第一综合| 国产偷人爽久久久久久老妇APP | 99免费热视频在线| 超碰人人超碰| 99欧美| 激情性爱五月天| 亚洲永久免费| 婷婷久久五月| 国产精品久久久久久妇女6080| 亚洲精品又粗又大又爽A片 | 狠狠色五月| 五月天婷婷伊人| 婷婷激情五月综合基地| 丁香五月六月欧美| 激情五月开心五月丁香五月| 九九在线视频| 激情另类综合| 婷婷五月花| 强辱丰满人妻HD中文字幕| 怎么样可以看免费的一级av| 日本A片一区| 亚洲av成人电影在线观看| 久久婷婷操| 亚洲性爱电影| 欧美大香蕉视频| av人人干| 人妻激情视频| 久久综合99| 97碰在线视频| 久久久久久久久月丁| 二区成人视频| 99视频久久| 丁香五月狠狠在线观看| 久色国产| 99热这里都是精品| 97色吧| 熟妇天天综合| 97久久人人| 五月激情另类| 亚洲国产99| 色婷婷亚洲婷婷| 日产精品一线二线三线芒果| 久久38视频| 五月丁香啪啪综合| 色五月天天| 99久久玖玖| 天天久久狠狠色综合| 操操操www.com| 五月丁香婷婷激情影院欧美| 五月天狠狠草| 久久激情天堂| 天天做夜夜爽| 六月色狠狠色| 久久五月天丁香| 六月丁香啪啪啪| 丁香五月综合网| 欧美日韩成人一区二区| 五月的婷婷六月丁香| 丁香六月久久| 狠狠精品干练久久久无码中文字幕 | 2025超碰| 区美毛片子| 亚洲看av的网站| 六月婷婷激情| 怡红院AV亚洲一区二区三区H| 九九久久精品國產| 丁香婷婷少妇| 大香蕉伊人99| 婷婷丁香日韩五月| 天天爽天天爽天天爽天天爽天天爽天天爽天天 | 色五月婷婷五月久久| 天天摸天天做天天爱天天爽| 91操人视频| 极品五月天| 91操人| 4438成人电影| www.99热视频| 六月丁香五月亭亭| 26uuu丁香婷婷五月| 久久九九综合| 色色色婷婷五月天| 思思精品久久艹| 色综合大香蕉| 人操人| 丁香午月AV中文字幕| 五月天激情.com| 色婷婷视频| 色综啪啪啪啪啪啪| 日日噜狠狠色综合久久| 亚洲中文乱字字幕在线永久| 婷婷五月丁香欧洲| 色丁香五月婷婷在线| 99色精品| 五月丁香琪琪| 深爱激情五月网| 天天插操| 色婷婷电影网| 大香蕉伊人久久| 色欲一区二区三区精品A片| 四LLL少妇BBBB槡BBBB| 99久久久免费| 激情综合五| 九九无毛| 亚洲五月天狠狠| 六月丁香射婷婷欧美色图片 | 狠狠色丁香久久综合婷婷亚洲成人福利 | 婷婷六月丁| AV性爱在线| 五月婷婷啪啪啪| 五月婷丁香亚洲| 亚洲色婷婷| 九九色99| 狠狠爱综合网| 中美日韩成人在线| 最新色色五月天| 婷婷丁香综合| 五月精品| 99久久精彩视频| 黄色AAAAA| 五月天婷婷色综合| 天天五月情| 色啦啦视频| 色五月婷婷激情五月| 福利视频在线播放| 五月婷婷丁香五月亚洲色| 亚洲激情在线| 99久久精| 五月丁香激情综合| 色情丁香五月天| 99热在线播放| 五月婷婷中文网| 激情又色又爽又黄的A片| 欧美狠狠草| 五月丁香激情综合网| 高清无码入口| 免费国产视频| 婷婷久久精品| 久久婷婷五月天激情四射| 丁香五月综合在线视频| 蜜臀av无码久久久久久久久 | 六月婷婷网| 狠狠狠狠狠| 婷婷丁香五| 色呦精品| 五月婷婷网站| 成人免费高清在线播放| 久久久五月婷婷| 日本色婷婷| 国产激情在线| www99热| 爱爱色五月天| 欧美五月停| www.99视频| 久久99久久久| 五月婷婷在线视频| 日本ww亚洲| 国内9l视频自拍老熟女九色| 欧美丁香五月夫妻天| 五月天伊人综合| 色五月婷婷老师| 五月丁香久久综合精品| 五月天色站| 日本啪啪网| 婷婷激情四射| 久久人人九九| AV在线免费网站| 中文字幕永久在线| 亚洲精品又粗又大又爽A片| 五月婷婷综合视频| 丁香五月婷婷久久久| 婷婷五月天狠狠搞干| www.五月天婷婷| 五月天婷婷影院| 天天日,夜夜爽| 玖玖热99| 99干日本| 月婷婷亚洲| 亚洲9久久精品| 成人版视频在线观看| 亚洲无码另类| 国内自拍97在线| 久99热在线观看| 五月婷婷视频啪啪美女| 四射综合网| 啪啪综合网| 色婷婷色五月天| 六月色婷婷色| 色综合久久88色综合天天| 五月亭亭直播| 久久黄色片| 精品人妻伦| 91九色在线观看免费| 99热在线播放| 激情五月婷婷丁香| 婷婷色五月婷婷姐妹| 午夜日日| 国产又爽又猛又粗的视频A片| 五月丁香在线| 精品无码人妻一区| 五月丁香婷婷色色| 色婷婷久久9.com| 婷婷六月天天| 成人色五月天婷婷| www。狠狠干。com| 任我肏视频精品| 五月丁香| 99热99久久| 五月婷婷和六月| 婷婷五月天黄色| 九月婷婷综合色干| 日本猛少妇色XXXXX猛叫| 色五月中文网| 91九色 熟| 色色亚洲| 六月婷婷激情| 丁香色婷婷五月天| 操一操插一插| 欧美婷婷六月丁香综合色| 丁香五月AV| 亚洲AV久久久久久久久久久久久久久久| 五月天婷婷无码| 99综合网| 色五月婷婷五月天激情综合| 婷婷五月天影视| 欧美色色色| 偷偷狠狠久久婷婷五月天| 婷婷五月天成人网| 国产免费AV在线| 亚洲成人无码免费| 99热精国产这里只有精品| 99操99| 色v综合网| 一区=区操屄高清大全av| 天天开心婷婷丁香五月| 亚洲av另类在线观看| 色墦五月丁香| 99热都是精品| 中文字幕在线日亚州9| 婷婷五月综合色拍| 色五月涩涩婷婷| 国产精品香蕉| 五月天综合图片| 婷婷五月天天aV| 欧美综合婷婷网| 亚洲天堂AAA| 久月丁香爱婷婷综合| 99这里有精品久久97| 五月丁香婷中文| 久久婷婷五月丁香网| 激情九九六月激情免费视频| 亚洲AV免费国产电影| 国产精品黑丝| 99国产欧美视频| 丁香五月婷婷少妇| 五月丁香亭亭AV女优| 色都都狠狠色都都色综合色| 激情五月天情色| 色播激情| 成年视频免费观看| 色综合久网| 婷婷五月激情的图片| 综合色色综合| 色欲九区| 7777激情基地| 深爱丁香网| 狠狠夜夜五月丁香| 六月丁香五月激情网| 国产精品久久久60086| 狠狠色噜噜狠狠狠888了| 成人国产网| 人人做人人看人人摸| 99久久婷婷国产综合精品电影| 丁香六月激情综合啪啪| 91久久综合亚洲噜噜成人在线| 日本色色网站| 深爱五月月天| 91久久婷婷| 亚洲性爱电影| 亚洲色综合| 成人小说 五月天 婷婷| 五月www| 玖久精品视频9| 色色AV色色色东莞| 婷婷综合亚洲| 婷婷五月天成人| 爱超碰性| 色色色97| 青青.com| 97五月天婷婷| 99免费热视频| 大香蕉婷婷丁香天堂AV| 99热这里| 超碰无码老师| 99久久婷| 夜夜噜夜夜奇| 第四色五月婷婷| 能看的av网站| 99精品丰满| 噜噜操操| 五月婷婷这里都是精品| 欧美va欧美va差| 久热 91| 婷婷激情五月| 五月天婷婷激情在线色图| 人妻少妇色综合| 五月丁香成人| 甈你aaaaa| 丁香五月开心七月| 亚洲最大视频| 俺也高清无码高清视频| 天天干,天天舔| 久久精品熟女亚洲AV麻豆| 99综合在线| 天天操夜夜玩!| 99ri视频在线播放| 黑人糟蹋人妻HD中文字幕| 亚洲五月天色色| 思思热闹这里只有精品| 五月天婷婷影院影院观看| 色婷婷在线播放| 久久五月天激情| 97日本在线播放| 91碰视频| 婷婷丁香五月欧美人| 噜噜干日本| 日本97在线观看| 欧美情月伍月天| 五月婷婷五月天在线 | 丁香五月婷婷综合激情哟哟哟| 91成人电影| 亚洲AV成人无码久久精品老人法拉利| 色色色99| 激情综合网站| 五月丁香六月欧美综合| 超碰人人操人人干| 蒲京久久无码视频| 最新激情五月天| 色丁香五月| 精品国产乱码久久久久夜深人妻 | 大地资源色婷婷视频在线 | 综合啪啪| 久久人妻超碰一区| 99婷婷| 狠狠色婷婷色| 丁香花五月天| 狠狠操狠狠爱| 98永久精品| 99热精品免费| 丁香六月婷婷激情综合| 亚洲无码成人网| 久一网站| 国产精品男人AV不卡| 最近中文字幕2019视频1| 欧美久久婷婷| 亚洲色婷婷| 亚洲色五月| 婷婷五点亚洲| 天天做天天摸| 丁香五月天成人| 亚洲 六月 综合| 五月丁香婷中文字幕| 色婷婷色久综| 丁香伊人激情| 色狠狠综合网| 狠狠操狠狠狠| 婷婷六月色播| 色色网站在线| 丁香五月天论坛| 天天干天天插| 五月婷婷色播| 殴美激情综合网| 97搞在线| 99小视频| 综合久久高清| 五月婷婷xxx| 伊人久久婷| 91热视频色网站| 婷婷五月天高清无码| 天天狠狠综合精区| 五月婷婷丁香六月在线| 少妇搡BBBB搡BBB搡毛茸茸| 五月婷色| 五月成人网站| 五月丁香六月综合情在线观看| 成人日韩欧美| www.色五月| 五月天成人免费视频| 第五婷婷伊人丁香色| 婷婷五月 丁香六月| 丁香六月激| 翔田千里aV中文字幕| 操你av| 婷婷色五月在线视频| 五月丁香六月激情综合| 大香蕉久艹| 国产成人一区二区三区在线观看 | 日韩另类在线观看| 欧美一级色| 裸体做A爰片毛片A片免费| 9999久久久久| 久草婷| 丁香婷婷九月| 久久久色婷婷五月天| 五月综合缴情网| 26uuu亚洲| 激情五月天影院| 99婷婷精品推荐在线视频| 99免费青青蜜臀| 婷婷五月天综合激情| 噜噜噜噜噜日本视频| 婷婷五月另类网站| 亚洲欧美婷婷五月色综合| 亚州美女| 日韩天堂久久| 六月丁香五月婷婷首页| 国产特黄色精品一区二区三区精品无广告| 日韩一本操| 久久九九中文字幕| 婷丁五月| 九九色综合九九色| 婷婷五月天久久久| 97色在线| 久久久人妻人伦| 五月开心播播网| 很很干天天干| 综合AV在线| 俺去也五月| 久久免费婷婷视频| 成人在线不卡| 香蕉AV777XXX色综合一区| 丁香六月亭亭久久综合| 丁香六月婷婷综合欧美| 久久精品这里只有精品免费首页| 激情激情激情网| 色开心五月婷婷丁香HD| 色婷婷网| 99热只有这里才是精品| 在线观看996精品| 日本乱子人伦在线视频| 99热在线精品观看| 婷婷激情综合网| 强辱丰满人妻HD中文字幕| VfJxEwPH| 激情综合网丁香| 99色在线观看| 2050人人操免费工开爱| www 五月天 com| 成人资源在线| 99re这里只有精品首页| 九九99九九99| 九九精品丁香花| 色婷婷五月天天天做| 久久久久久综合88| 97人妻碰碰碰久久久久-最近国语高清| 久re热视频| 欧美精品999| 狠狠撸激情综合丁香五月天俺来啦| 日韩精品成人在线| 婷婷五月欧美综合| 五月激情六月宗合| 丁香五月激情久久麻豆| 伊人婷婷大香蕉| 婷婷播5月| 开心五月婷婷伊人| 婷婷五月激情的图片| 97香蕉久久超级碰碰高清版| 在线99精品| 色情综合网| 韩国不卡AC视频| 五月永久激情| 亚洲亚洲人成综合网络| 色五月亚洲五月天| 五月天激情久久| 婷婷精品视频| WWW.99热| 99九九在线| 综合色99| 超碰免费99| 婷婷永久在线| 香蕉综合在线| 五月婷婷激情综合拍| 久久婷婷五月国产激情综合片| 9 大屁股在线视频精品| 日韩性爱AV| 91操片| 色五月天电影| 五月丁香无码| 99热www.| 久久这里只有国产| 五月天激情黄色网址| 影音先锋91网站在线观看| 天天操综合网| www.henhenl| 色婷婷综合网| 深爱激情网五月天| 婷婷五月天六月综合| 色狠狠狠干| 丁香婷婷五月色成人网站| 免费成人网在线观看| 久久久亚洲成人无码A片| 婷婷久久五月天| 亚洲色视频| 九九婷婷综合| 亚洲天堂大香蕉| 婷婷免费精品视频| 四虎成人精品永久免费AV九九| 婷婷色导航| 婷婷久久女人| 激情图片婷婷| 久久婷婷六月天| 免费看欧美成人A片无码| 色日本网| www,色婷婷| 婷婷涩涩五月天| 欧美日本另类| 99久久激情视频| 天天摸色吧天天摸色吧| 六月丁香成人网| 天天色综合综合| 亚洲激情精品| 丁香五月乱中文字幕| 丁香五月 六月婷婷首页| 丁香五月亚洲无码| 久久婷婷五月草视频在线播放| 久久99最新| 丁香五月天在线直播观看| 日本的α片xxxwww| 欧美婷婷五月激情| 亚洲激情区| 亚洲婷婷乱乱丁香| 婷婷色情六月| 婷婷六月情| 色色色色色综合| 色婷婷色99国产综合精品| 日本五月天激情| 亚洲无码11| 亚洲激情在线| 玖玖热视频| 图片区 小说区 区 亚洲五月 | 99爱视频在线观看这里只有精品| 激情五月天激情综合网| 激情五月少妇| 色五婷婷在线视频| 日韩精品999| 五月婷婷激情网| 亚洲亚洲人成综合网络| 色婷婷网大全在线| 国产探花一片区| 色九月综合网| 久99久在线| 色婷婷欧美在线| 玖操97| 五月婷亚洲精品| 99热精品观看| 色色操| 26uuu| 九九热a| 9999综合99综合人| 中文字幕丰满孑伦无码专区| 99爽视频| 五月丁香六月婷综合成人综合| 99色色爰| 欧美十二区| 五月丁香大香蕉| 玖玖无码中文| 天天插天天草人人玩| 天天撸夜夜爽| 色婷婷综合网| 99操| 色和综合网| 色综合久久88色综合天天看| 婷婷五月天丁香花| 婷婷五月天免费| 色色色在线观看| 六月婷婷色综合| 久9精品视频在线| 九九99九九99| 婷婷综合五月天激情| 99热精品中文字幕| 亚洲色网络| 影音 五月 婷婷 久久| 五月天婷婷綜合院| 伊人成人宗合网| 五月天久久婷婷| 欧美成人精品A片免费一区99| 丁香久久在线| 色色色色色色色色色色色色色97| 丁香六月狠狠| 天天色视频| 欧美婷婷综合| 99综合成人视频在线观看| 久久五月婷婷电影| 五月丁香六月婷婷网站| 日本三级中国三级99人妇网站| 婷婷中文字幕网站| 伊人婷婷大香蕉| 天天射天天射一道本日本社区| 天天干天天干天天操| 天天干 夜夜爽| 丁香五夜激情四射夜夜夜| 午夜丁香综合婷婷| 亚洲热综合网在线观看| 激情婷婷丁香五月天| 99久久久| 天堂久久婷婷| 丁香婷婷婷| 亚洲色综久久五月| 五月天自拍网| 超碰精品在线| 色原狠狠综合| 婷婷六月爽| 91色五月| 操操操91| www.狠狠操.com| 日韩成人av在线| 99久免费视频| 日韩婷婷五月天| 亚洲久热| www.久久婷婷| 99 这里只有精品| 特级西西4444www无码| 99九九中文字幕视频| 97人妻碰碰碰碰碰久久久久久| 色婷婷丁香女女| 日本99婷婷| 丁香五月天亚洲综合| 五月丁香激情啪啪网| 七七婷婷综合| 97碰| www.五月.com| 新激情五月天| 91操色| 亚洲综合视频在线| 婷婷色情五月| 婷婷丁香五月高清| 天天肏视奸| 国产熟妇的荡欲午夜视频| 99热最新精品| 天天操天天爱天天玩| 免费AV播放| 婷婷五月天成人网| 成人版视频在线观看| 日本天堂网站99| 26UUU在线观看| 婷婷五月花| 九九色热| 五月丁香综合激情| 九月av| 欧美人妻一区二区| 99热爆在线| 五月丁香激情婷婷综合| 日本精品人妻无码77777| 九九色播五月丁香| 色九九综合| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 婷婷五月花西瓜| www.婷婷亚洲基地| 日日鲁鲁鲁夜夜爽爽狠狠视频97| www.99.色| 九九色影视| 亚洲久久婷婷| 欧美va视频| 无码少妇高潮喷水A片免费 | av婷婷丁香 六月| 九九爱激情| 可以免费观看的av| 极品嫩草| 色呦呦免费观看| 激情九九这里只有精品| 91精品久久久久久久| 江苏少妇性BBB搡BBB爽爽爽| 欧美天堂久久| 丁香五月天av| 日日夜夜干| 成人精品一区日本无码网| 国产午夜精品一区二区| 婷婷激情综合网| 日本婷久久| 色亭亭九月| 99热 在线观看| 99婷婷国产最新视频| 97 天堂| 婷婷色婷婷| 狠狠干,狠狠操| 亚洲欧洲中文日韩久久AV乱码| 国产成人在线不卡AV| 国产另类综合| 婷婷亚洲天堂| 婷五月天| 九九九九九九九热| www.天天干| 伊人婷婷五月天av| 99久久久国产精品免费蜜乳tv| 国产毛片精品一区二区色欲黄A片| 久久日韩婷婷五月| 欧美天天干五月丁香| 99ri国产| 伊人五月综合网| 九九热视频精品2| 日韩av在线电影| 婷婷丁香91| 天天爽天天摸人妻综合网| 这里只有精品视频在线| 激情五婷网| 色婷婷五月天在线观看| 99A片| 九九综合九色欧美狠狠| 九九大香视频| 深爱 五月天| 狠狠爱深色婷婷综合| 久久九九色| 啪啪综合网| 中文字幕中文有码在线| 五月激情婷婷在线| 婷婷天堂综合| 久久综合久色欧美综合狠狠| 婷婷基地爱| 色综合久久综合中文综合网| 亚洲乱码日产精品BD| 五月丁香性| 女人露出p毛视频www网站| 97久久人人人干| 狠狠色噜噜狠狠| 久久国产性爱A V| 成人五月丁香花| 天天日天天色| 99'无码| 激情五月天色色色| 97超碰综合| 丁香婷婷色五月合集| www.91.com黄| 久久色大香蕉| 人妻久热| 五月情涩综合婷婷| 亚洲色综合|