亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(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一堆文件夾點進configs發(fā)現(xiàn)每份配置文件長得像一棵樹尤其model字段嵌套七八層里面全是dict。我當年第一次看 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 檢測器不是一個黑盒而是一條流水線目標檢測和圖像分類最大的區(qū)別在于它要同時回答兩個問題物體在哪里定位和物體是什么分類。分類任務(wù)可以干脆利落地拿一個網(wǎng)絡(luò)把圖像映射成類別概率但檢測任務(wù)不行——你既要提取特征又要在特征上做密集的候選框預(yù)測還要對候選框做精修這么多事不可能靠一個單一的“黑盒網(wǎng)絡(luò)”完成。mmDetection 的做法是把這條鏈路拆成幾個職責(zé)清晰的模塊典型結(jié)構(gòu)是Backbone主干網(wǎng)絡(luò)負責(zé)從原始圖像中提取多層次特征。Neck頸部模塊在 backbone 輸出的多尺度特征上做融合或增強最典型的就是 FPN。Head檢測頭在融合后的特征上做最終的分類和回歸預(yù)測。雙階段檢測器還會拆成 RPN Head 和 RoI Head。Detector檢測器外殼把上面這些模塊拼裝起來同時負責(zé)訓(xùn)練和推理流程的編排。這個設(shè)計思路很像工廠里的流水線原料圖像先進第一道工序backbone粗加工再進第二道工序neck做精細處理最后由檢測頭head完成質(zhì)檢和打包。生產(chǎn)線上的每個環(huán)節(jié)都可以獨立替換這也是 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ū)域做精細分類和回歸。這個“粗篩 精修”的思路是雙階段方法在精度上長期優(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 默認 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)練。默認值是 1也就是 stage1 之前的 stem 和 stage1 整個被凍住。這么做的原因是主干網(wǎng)絡(luò)通常使用在 ImageNet 上預(yù)訓(xùn)練的權(quán)重淺層特征邊緣、紋理比較通用不需要在目標任務(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會強制所有 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)重的方式通常保持默認的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 做嚴格匹配的如果你換了一個結(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)生很大問題保持默認配置反而會拖慢收斂。適合初學(xué)者的建議是先保持默認配置跑通確認架構(gòu)沒問題再去調(diào)這些“精細化”參數(shù)。3. 特征金字塔 Neck讓不同尺度的目標都被看見3.1 FPN 的配置與機制FPNFeature Pyramid Network是當前檢測框架里最常見、也最重要的 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 額外加了一條自頂向下的路徑從分辨率最低但語義最強的 stage4 特征開始通過 1x1 卷積統(tǒng)一通道數(shù)然后逐級上采樣與自底向上的特征做逐元素相加。這樣做的效果是高層特征獲得了高分辨率的細節(jié)信息低層特征獲得了豐富的語義信息每一層都同時擁有“是什么”和“在哪里”兩種能力。目標檢測中尺度變化很常見——一張圖里大象可能占半個畫面遠處的貓只有 20 個像素。沒有 FPN 之前老方法要么只在單一特征圖上檢測對不同尺度很不友好要么在多個尺度上分別跑一遍網(wǎng)絡(luò)計算量爆炸。FPN 用很小的額外計算量就拿到了多尺度的能力這也是它成為標配的原因。3.2 配置中的幾個隱蔽細節(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 對檢測超大目標有幫助但如果你處理的任務(wù)里目標普遍偏小反而沒必要保留這一層——小目標天然在高分辨率特征層上更容易被檢測到。我曾經(jīng)在一個小目標數(shù)據(jù)集上測試過把num_outs從 5 改成 4精度反而略有提升因為 P6 層貢獻的全是誤檢。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ǔ)上再加一條自底向上的增強路徑讓底層細節(jié)信息也能向上傳遞對小目標更友好。配置上的差別是把typeFPN換成typePAFPN同時多了num_outs之外的一些下采樣配置。YOLO 系列檢測器里常用的就是這種結(jié)構(gòu)。經(jīng)驗之談如果項目里目標尺寸跨度很大優(yōu)先考慮保留完整的 5 層 FPN如果目標普遍偏小可以試試去掉最深層或者在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 默認生成3 (scales) x 3 (ratios) 9個 anchor這些 anchor 覆蓋了不同尺度、不同形狀的目標候選。bbox_coder負責(zé)的是“框的表示方式”。檢測器一般不會直接回歸框的四個坐標絕對值而是回歸“相對 anchor 的偏移量”因為直接回歸絕對值太難學(xué)。DeltaXYWHBBoxCoder把真實框轉(zhuǎn)換成相對于 anchor 的(dx, dy, dw, dh)訓(xùn)練時讓網(wǎng)絡(luò)去預(yù)測這四個值。target_stds是歸一化用的標準差RPN 里通常是[1.0, 1.0, 1.0, 1.0]RCNN 精修頭里通常是[0.1, 0.1, 0.2, 0.2]因為精修階段框的偏移量更小用更小的標準差可以讓回歸目標放大一些訓(xùn)練更好收斂。這里要提醒一個非常容易踩的坑num_classes一定不要隨便寫。它應(yīng)該等于“目標類別數(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 本身并不知道框里是什么類別它只負責(zé)“這里可能有東西”。這個設(shè)計來自人類視覺的一個直覺先快速掃一遍場景鎖定可疑區(qū)域再仔細看清每個區(qū)域里到底是什么。RoI Head 則是真正的“精修專家”。它對 RPN 給出的每個候選框用RoI Align從特征圖上摳出對應(yīng)的區(qū)域特征然后統(tǒng)一縮放到固定尺寸比如 7x7送到全連接層里做分類和精細回歸。RoI Align 是雙階段方法里特別重要的組件。在它之前RoI Pooling 用的是兩次量化取整會引入像素級的偏差對小目標尤其不友好。RoI Align 用雙線性插值避免了量化誤差這也是 Mask R-CNN 之后幾乎所有雙階段方法都默認使用 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, ... ), )這里有個細節(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ò)前向的最后階段定位起來比較費時間。雙階段方法還有一個隱含的好處RPN 已經(jīng)把絕大多數(shù)背景框篩掉了RoI Head 處理的候選框數(shù)量遠少于單階段密集檢測的 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 配置把它當成一張“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ù)測一組邊界框偏移量框修正得更精細但參數(shù)量也更大最后的全連接層輸出維度從 4 變成4 * num_classes。True則表示所有類別共用一組回歸參數(shù)參數(shù)量小、速度更快但精度有輕微損失。實際小數(shù)據(jù)集項目里我一般會保持默認False這也是官方配置的選擇。5.2 從配置到模型的實例化流程配置里的dict最終是怎么變成可執(zhí)行的網(wǎng)絡(luò)模塊的mmDetection 的答案是讀取type字段去對應(yīng)的注冊表里找到這個類的定義把剩下的參數(shù)作為關(guān)鍵字參數(shù)傳進去完成實例化。這條鏈路的起點是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ù)塞進FasterRCNN的構(gòu)造函數(shù)。子模塊的構(gòu)建方式也是一樣的——讀各自的type找注冊表實例化。這套機制的好處是你不需要寫一堆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ò)的可定制性注冊器機制與自定義組件6.1 注冊器機制到底做了什么這一節(jié)可能是 mmDetection 全網(wǎng)架構(gòu)里最“勸退”也最有價值的部分。注冊器Registry本質(zhì)就是一個“類名到類的映射表”但它的巧妙之處在于把“注冊”這件事做成了裝飾器。當你新建一個自定義 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就會被自動寫進BACKBONES這個注冊表。之后你在配置里寫backbonedict( typeMyBackbone, arg1..., arg2...)框架構(gòu)建時就會執(zhí)行BACKBONES.get(MyBackbone)找到這個類然后用arg1和arg2作為參數(shù)實例化。我強烈建議你搞清楚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()這個機制是 mmDetection 支持復(fù)用的核心。也正是因為注冊器的存在你會發(fā)現(xiàn)很多模塊的內(nèi)部實現(xiàn)可能不一樣但只要它們注冊到同一個表里、接口一致就能無縫替換。這就是“配置驅(qū)動”的真正含義。6.2 自定義組件時最常見的三個坑我見過太多人卡在自定義這一步基本都是三類問題。第一類配置里寫了typeMyModule運行時報KeyError: MyModule is not in the ... registry。原因幾乎總是你雖然寫好了類和裝飾器但這個文件沒有被導(dǎo)入。mmDetection 默認只會導(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 不一致或者__init__的參數(shù)沒有給默認值導(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)的嚴格加載關(guān)掉或者在代碼里調(diào)用load_state_dict時設(shè)置strictFalse。不過要注意strictFalse是一個有風(fēng)險的操作它會靜默忽略缺失的層有時候反而掩蓋了真正的維度錯誤。我的建議是加載報錯后先明確搞清楚哪些層不匹配確認是預(yù)期的結(jié)構(gòu)差異再關(guān)掉嚴格模式。7. 自主修改網(wǎng)絡(luò)架構(gòu)的實操經(jīng)驗7.1 一次“換主干加檢測頭”的完整過程假設(shè)你想把默認的 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 的前向確認輸出維度和預(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模塊沒有注冊確認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è)置不當降低學(xué)習(xí)率檢查norm_cfg設(shè)置排查數(shù)據(jù)是否存在異常值改了num_classes但評估結(jié)果異常類別數(shù)不匹配確認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避免合并時悄悄丟了其他字段。我在早期因為這個機制吃過虧只寫了modeldict(roi_headdict(bbox_headdict(num_classes2)))結(jié)果整個roi_head被替換成了只有bbox_head的 dict跑起來一堆配置缺失。搞清楚配置繼承規(guī)則能幫你少折騰很多個晚上。最后聊幾句我在實際使用這個框架的過程中體會到mmDetection 的網(wǎng)絡(luò)架構(gòu)設(shè)計最值得學(xué)習(xí)的反而不是某個檢測算法本身而是它這套模塊拆分 注冊機制 配置驅(qū)動的組裝理念。剛開始學(xué)的時候別急著追求理解每個算法的數(shù)學(xué)細節(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ù)。這個階段跑得快迭代才會快。祝你的實驗早日跑通指標早日漂亮起來。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产精品片| 爱欲AV| 人人操人人插 - 百度 - 百度| 欧美色图私拍91| 国产精品第二页| 国产av色网| 久久女女| 91香蕉国产尤物视频| 丰满美女一级毛片在线播放| 激情综合网五月婷婷五月天| 日本三级大片| 精品视频97| 蜜臀久久99'精品久久久| 啊啊啊啊无码| 26uuu欧美日韩| 久久无码电影| 性交一区二区在线播放| 欧美亚洲色图另类国产| 日日日日做夜夜夜夜做无码97| 视频不卡中文字幕| 性爱av在线免费观看| 六六久久日韩不卡| 中文欧丝袜诱惑| 超碰色综合| 国产成人无码a| 夜夜操av亚洲一区二区| 亚洲97精品| AV天堂国产| 婷婷在线播放| 中文字幕免费在线观看| 成人性爱av| 天天爽人人综合免费7799| 欧美天堂日韩三级国产传媒| 一级做a爰片久久毛片图片| 91处女视频在线观看| 欧美精品黑人猛交高潮| 欧美麻豆成人同性GⅤ在线| 久久久18禁| 男人午夜天堂| 亚洲成人妻日韩在线| 久久久久久9| 中文字幕黑人大片| 天天夜躁日日躁狠狠2002| 国产超碰在线一区| 亚洲人妻中文在线视频| 操逼999| 精品三级在线专区| 按摩中文字幕| 欧美色偷偷| 亚洲不卡不卡中文字幕不卡| 无套后入双马尾| 操逼1区| 在线观看视频91| 亚洲日韩精品在线播放| 精品国产乱码久久久A| 五月婷婷六月色| 国偷自 一区二区| 人妻偷拍一区二区三区| 伊人国产视频| 97色婷婷| 极品极品色影院| 91久久青青草原精品| 久久国模av| 涩综合导航| 99超碰网| 97精品久久久久久久| 国产AV精久久| 亚洲丰满很很操| 十八禁成人网站在线观看| 十八禁黄色| 国产白丝在线| 97操97色| 国产精品视频一区二区三区八戒| 色99久草| 香蕉免费一区二区三区不读 | 色97干| 亚洲一本色码中文字幕| 在线天堂999| 国产亚洲精品自在线亚洲情侣| 日韩中文字墓| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 欧州激情视频在线一区二区| 99爱在线视频| 强奸a片网| 极品综合| 老司机福利青青草| 欧美天天综合在线| 97视频播放| 2026国产精品视频| 330dv亚洲成年视频网| 99操视频| 日韩婷婷| 国产男女无套视频免费观看| 欧美三级中文字幕hd| 亚洲玖玖爱| 欧美在线l亚洲| 欧美专利1区2区3区4区5区免费| 日本一级一级一级一级| 果冻国产精品麻豆成人av| 国产在线激情视频| 黄片免费久久久久久久| 中文字幕一区二区三区高清| 中文字幕精品免费一区二区| 午夜舔阴达高潮视频免费看| 日韩大香蕉AV影片| 校园春色 亚洲| 日本有码影片下载| 97超碰69| 99日精品欧美国产| 亚洲精品亚洲人成人网| 91日本在线观看| 日本午夜久久电影| 强奸乱伦大香蕉| 国产成人精品网站| 欧美 亚洲精品首页| 天天色怡春院| 无毛精品| 嗯嗯嗯啊啊在线观看| 日本免费二区三区| 国产精品人妻无码久久久老鸭窝| 亚洲综合97| 97在线看| 无码区蜜乳| 肏逼视频日本| 国产一区二区精品久久99| 草莓精品视频在线免费观看| 国产黄片在线免费观看| 日韩精品 视频一区二区| 一级日本牲交大片好爽在线看| 手机在线免费看的av| 亚洲乱色熟女一区| 深田咏美亚洲精品福利社| 久久激情综合| 亚洲精品一区二区三区新线路| 另类图片五月天| 国产日本熟女顶级一区二区三区视频| 国产精品 午夜福利| 天操老女人| 免看60秒涩涩视频| 色综合加勒比| 26uuu性物| 中文字幕在线日亚洲9| 日韩精品 资源| 久久精品视频久久久| 久久九九网| 国产强奸乱伦第1页| 91青视频| 伊人影院在线理论播放 | 影音先锋每日最新资源在线观看 | 欧美在线啊啊| 久久精品国产97欧美精品亚洲| 亚洲男人天堂网站| A级毛片在线看免费| 亚洲美女自拍偷拍视频| 91色五月俺来也| 操老熟女AV| 亚洲AV无码乱码| 隔壁邻居波多野结衣中文字幕 | 福利五区| 自慰白浆在线观看| 激情第四色| 国产青视频| 91M一社| 国产二区三区免费视频| 欧美大香蕉久| 91久热这里只有精品| 白丝在线一区| 国产午夜福利电影免费在线观看| 婷婷伊人| 欧美狠狠狠| 精品人妻1区| 少妇免费视频| 26UUU欧美日本| 玖玖婷婷五月天| 日韩78m视频| 97欧美视频| 伊人久操| WWW.加勒比人妻一区不卡.com| 91网站18禁| 亚洲各类熟们中文字幕| 久久爱超碰网| 久久超碰国产一区二区三区| 日韩在线76| 91亚洲青青草原精品1区| 国产99999久久精品| 九九九九热| WWW黄片COM| 亚洲淫色网中文| 人人弄人人摸| 少妇同性| 人妻一二三区| 中文字幕欧洲有码| 精品国产无码中文| 影音综合网| 黑人综合网| 91在线|亚| 人妻熟女一区二区在线视频| 热99这里只有精品| 欧美青青草视频| 亚洲导航深夜福利| 粉嫩久久久久| 性久久| 91五月天| 操逼逼无码| 91欧洲入口| 日韩黄色一区二区三区| 中文字幕国产| 91精品电影18| 大香蕉视频一二三区| 99爱久久视频频| 国产 日韩,欧美 自拍| 色一射色一射| 国产黄色 A 片免费看| 九九九九免费高| 影视综合无码少妇| 久操视频在线| 欧美熟妇视频| 国产av强奸美女| 亚洲偷91色| av凤凰久久久| 国产日本一区二区三区蜜臀在线观看| 熟女人妻av在线资源,黄色的资源| 啊啊啊好疼| 国产激情av女片自拍| 欧美日韩国产色五月综合在线| 综合影视国产无码| 久操电影网| 人妻天堂综合网| 欧美成熟性爱精品| 91N综合网在线| 激情接吻视频久久久久久| 天天影视综合色| 激情小说五月天| 亚洲无码国产探花在线观看| 国产精品3| 亚洲欧美大香蕉| 婷婷av在线中文字幕| 超碰 另类 欧美| 秋霞久久亚洲精品成人| 78超碰| 亚州色图狠狠干| 亚洲日韩美女中文字幕乱| 亚洲高清色综合| 九月AV| 色一色综合网| 日本国产亚洲一区在线观看| 五月天人妻综合| 亚洲天天艹| 精品亚洲黄色片 国产精品导航一区二区 | 丁香婷婷九月| 少妇熟女1区2区3区| 97久久久久久久久久| 男人兔费天堂| 玖玖玖玖精品国产剧情| 激情小说图片亚洲首页| 老熟女天天操| 不卡一区视频| 怡红院怡春院| 中文字幕啊啊啊在线观看视频| 女同女同恋久久级三级| 麻豆久久一区二区三区| 91国产伊人大香蕉| 天天综合网入口~91| 99re9在线| 久久久久亚洲Aⅴ无码| 亚洲天天操| 麻豆区久久久久亚| 性老妇一区二区三区| 二色av| 91爱啪| 高清不卡 中文 人妻| 91九九九馒头| 国产成人网| 久久性爱网站| 亚洲最大成人a毛毛片| 日韩欧美性吧婷婷乱伦大香蕉 | 久日91在线| 91天天日| 青青草原人妻| 日日狠狠久久偷偷色综合免费| 夜夜骑夜夜操| 久久黄人人爽视频| 大逼色网站| 四虎影视永久在线观看精品免费网站| 嗯嗯,好大,好爽,好骚| 男人的天堂在线有码| 日本免费亚洲欧美| 91黑人无码激情在线| 2019久久久久久久久福利| 立川理惠被中出无码| 97超碰欧美中文字幕| 成人精品一区二区三区| 久久中出在线| 欧美成人色| 国产亚洲色婷婷99精品91| 97亚洲一区| 欧美色偷拍| 国产欧美日韩在线观看麻豆传媒公司 | 91 偷| 97在线播放 | 一区二区 日韩 欧美 国产 传媒| 自拍丝袜美腿人妻| 啊啊啊啊啊啊啊好爽不要| 在线观看十八禁| 亚洲人妻一区二区三区| 亚洲老熟妇xxx| 久超碰在| 欲射影视| 超碰97极品9| 亚洲少妇视频| 97久久超碰| 91精品国产91久久青草| 思思热er精品视频| 九九在线视频| 精品一区96| 97日视频| 美女网站黄页| 超碰97丝袜| 九九九精品成人免费视频小说| 一本色道无码DVD中文字幕| 日韩成人精品| 欧美系列在线一区二区| 激情五月综合网| 女人天堂AV五区在线| 操我啊啊啊啊啊| 妇人噜噜| 亚洲中文字幕av| 欧美97超碰| 日韩极品无码B| 久久av成人无码免费| 无码免费精品高清| 丁香五月影院| 久久曰曰| 亚洲精品欧洲色| 国产真乱mangent| 91精品国产日韩欧美综合| 入口操逼网站| 精品无码一区二区| 天天日骚逼熟女| 99热在线观看| 99爱精品| 狠狠爱AV| 日韩一级欧美一级国产一级台湾| 男女激情黄色网址| 97网址www| 长久操视频| 亚洲日韩精品一区二区| 温婉少妇玩3p| 男人的天堂激情| AV在线播放网址| 天天看精品动漫视频一区| 操婷婷逼| 国产精品视频在线播放| 探花视频免费观看国产专区| 国产 日韩 另类 视频一区爱| 九九无码久久精品视频| 久久久精选| 亚一综合久久久久久久久久| 快点操死我| 国产精品伦理| 久久久久亚洲Aⅴ无码| 天无日色综合| 婷婷20月天青娱乐| 亚洲精品官网在线观看| 精品97久久综合| 天天综合青苹果| 欧美强奸乱| 黄色小说亚洲| 又大又大又大又粗爽高潮观看| 亚洲无码?第一页| 99热精品国产| 亚洲无码国产探花在线观看| 亚洲色吧网| 欧美色九九| 777奇米影视777四色| 欧洲精品久久| 香蕉热人人精品| 超碰97资源大奶| 国产精品操| 深爱五月天| 久久久亚洲熟妇资源| 国产理论视频在线播放| 青青草日本中文字幕| 九九九九国产| 91九久| 国产精品乱码久久久久| 能看的av| 999999精品| 激情小说五月天| 91情色在线| www.91久久| 色九九九九九九| 在线无码操| 天天热精品| 久久久国产亚洲精品系列| 欧美 亚洲 另类 综合| 狠狠操官网| 啊啊啊啊啊好大好舒服想要| 免费在线黄片视频| 福利天天都操| 久久五月天婷婷| 人人妻人人爽一区二区三区| 国产精品小视频一区二区三区| 欧美日韩在线小说| 日本青青草在线| 色综合V| 久日91在线| 韩日性爱av| 男女香蕉一区二区| 丁香五月av| 中文字幕99999| 爱干爱射网啊啊啊| 日日操丁香五月天| 欧美色图校园春色| 免费看污网站| 男女性感激情网站| 欧美中日韩XXXX| 暖暖精品二区三区观看| 亚洲自拍天堂| 伊香蕉综合久久久久久久噜噜噜| 有码免费观看| 国产欧美岛国精品一区| 91精品网站| 肉丝网站91| 国产欧美岛国精品一区| 日韩有码专区| 校园春色中文字幕AV| 国产大学生高潮在线播放| 九久精品| 色综合20p| 99re在线观看| 爱射综合| 精品成人动漫一区二区| 午夜九九九九九九| 中文字幕女同在线| 久草成人福利导航| 丝袜美腿制服人妻二区中文字幕 | 秋霞午夜视频一区二区| 丁香五月偷拍| 精品无码不卡视频| 国内外内射高清视频| 夜夜操中文字幕| 啊啊啊好爽快点啊啊啊嗯嗯| 亚洲免费在线探花| 又大又大又大又粗爽高潮观看| 91欧美另类| 久久女人一区二区三区| 综合影视国产无码| 免费观看性欧美一级| 欧美,日韩,中文,另类| 国产熟女一区二区丰满| 91狠狠综合久久久| 亚洲一区二区中文字幕| 精品国产三级av韩国在线| 伊人嫩草| 香蕉免费一区二区三区不读| 91美女在线精品视频| 国产高清无码一区二区三区四区皇冠| 国产午夜福利电影免费在线观看| 亚洲动态色图| 欧美91网| 大香蕉2017| 999 久久久| 熟妇一区二区三区| 日韩乱码av| 日韩av乱伦| 国产欧美岛国精品一区| 久久综合国产精品国产| 日韩成人精品| 亚洲国产成人精品久久久国产成人一区二区 | 欧美最婬乱婬爆婬性视频 | 精品美女在线视频| 欧美狠狠操| 91在线美女| 人妻激情另类| 射 色综合| 涩五月婷婷| 欧美色综合影院| 日韩欧美国产高清视频| 久久精品国产亚洲AV高级北京| 国产乱伦性爱区| 精品国产三级av韩国在线| 狠狠操狠狠操操| 天天噜| 国产精品自拍视频| 人人操欧美风骚| 又粗又长又大国产不卡| 青青在线视频日韩欧美| 亚洲欧美小说| 中文字幕日韩专区精品系列| 成人av福利在线观看| 欧美日韩大香蕉| 丰满美女一级毛片在线播放| 东京热视频网| 久草国产在线视频| 久久综合激情| 亚洲夜色在线| 国产久久日韩网站导航| 丰满精品人妻少妇久久字幕| 天天插天天操天天摸天天射天天看| 国产成人无码高清| 亚洲中文字幕网| 五月丁香六月| 亚洲综合影片| 亚洲中亚日激情视频| 夜夜嗨免费视频| 久久婷婷苹果| 久久精品| 逼逼逼逼操操操操操操操操操午夜剧场 | 日韩天天本| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 中文字幕精品免费一区二区| 性色生活片久久毛片婬片免费放女人一级毛片| 93人人操人人| 五月丁香狠狠爱| 中文字幕 一区二区 亚洲无码| 久久久久久久久九九久孕交| 久久久一区二区| 国产免费内射视频| 亚洲 中文字幕 精品| 欧美日韩一区二区三区四区蜜桃| 色区久久| 伊人精品视频| 一二三区精品视频| 在线观看高清AV| 色牛牛AV| 日韩一级二级在线| 91精品国| 天天看天天干| 99久视频| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 大香蕉综合| 91熟女.com| 亚洲美女av无码| 色久桃花影院在线观看| 狠狠欧美| 丰满熟女人妻一区二区三五十一路| 亚洲丝袜诱惑| 黄片无码在线制服| 老熟女区| 中文字幕三四五区| 蜜臀操逼黄色视频操的好爽| 老熟女熟妇| 亚洲春色欧美| 激情无码日韩| 草伊人高潮喷水超碰| 91制服丝袜| 亚洲AV无码AV吞精久久久久| 嗯嗯啊啊啊好舒服| 亚洲色图A| 中日韩久久久| 91视频成人福利网站在线一区| 99久久99九九99九九九| 18禁的网站在线| 嗯嗯啊啊亚欧精品| 激情小说亚洲| 天天爽天天| 久久风骚城市| 国产精品一区午夜福利| 亚洲综合有玛| 干超碰碰熟女| 亚洲男人天堂Av| 99在线精品观看视频中文| 看大黄色大片原件| 91红杏| 偷拍综合网| 亚洲日产专区| 美女诱惑久久| 日日狠狠久久偷偷色综合免费| 精品白丝一区| 69精品久久久久中文字幕| 超碰98综合网| 亚洲欧洲综合av在线| 国产黄色动态精品| 澳门黄片一香蕉视频| 99.色网| 亚洲男人天堂网| 97人妻色| 超碰97人妻在线| 又黄又爽在线观看视频| 欧美国产婷婷久久| 青青草日韩无码| 这里只有精品97| 九九热精品在线| 手机在线大香蕉| 激情综合网激情五月天| 婷婷激情四射| 久都青青视频| 黄色免费网| 乱码熟妇人妻久久久| 性久久久| 国产诱惑| 夜夜操狠狠操| 高清国产精品福利网站| 97爱爱影院| 草草影院最新网址| 久草成人影片| 伊人网av| 欧美性生活男人的天堂| 久久久99999久网站| 日本人人操人人操| 一本色道熟妇| 女一区二区| 日本肉体xxxx裸交| 青青草好吊色| 国产女同视频在线播放| 日韩精品 资源| 91青青在线视频| 91成人久久| 国际精品久久久| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 日韩精品高清资源在线| 一本一道波多野毛片中文在线| 男人天堂无码| 狼人综合婷婷激情四射| 二男一女成人A片| 午夜视频久久久| 久久国产精品91| 欧美黑人精品在线播放| 综合五月天| 伊人成人情色综合| 熟妇操花| 中英熟女操女| 91视频综合在线| 青青操青娱乐| 看一级特黄a大一片| 啊v在线观看视频| 九X超碰| 日本在线不卡一二区| 偷拍 欧美 日韩| 婷婷探花久久精品一区| 国产精品九9| 国产一级做a爰大片免费久久| 97色碰| 欧美色图小说综合| 狠插 制服 自拍| 99精品久久| 金莲网址| 免费人成毛片乱码| 97亚洲色图| 97超视频在线观看| 久久久久久久久久久久久久久性生活视频| 色成人Www精品永久观看| 欧美999| 久久风骚城市人| 欧美国产一区二区三区麻豆传媒 | 久操操AV电影| 亚洲日韩天堂| 后入综合久久| 偷拍色图| 久久曰曰| 欧美色图片91| 夜夜肏2021| 久操大香蕉| 日本色色色视频| 免费观看网黄| 97超碰欧美| 日韩99999| www.acm成人黄色毛片| 少妇三P| 日韩影片中文字幕一区二区三区| 久久久久久国产精品| 成人免费在线网站| 约操熟妇| 蜜桃视频成a人v在线| 国产精品分类在线观看| 午夜性生活av免费在线看| 97碰碰色| 日韩一卡二卡三卡| 国产区在线| 大逼色网站| 男人的天堂com| 天天综合~91| 久热网| 婷婷人妻激情| 嗯嗯啊啊啊好爽| 亚洲天堂另类| 亚洲综合伊人无码久久| 天天欲望网| 91精品人妻一区二区三区蜜桃| 亚洲骚逼少妇| 男人天堂资源| 丁香九月婷婷| 亚洲av性爱电影| 中文字幕一区二区视频在线观看 | 久久久999国产| 色与欲影视天天看综合网| 国产91丝袜 在线播放| 久久成人东京热人妻| 亚洲一区二区中文字幕| 欧美偷拍| 精品视频在线观看精品| 日韩免费福利在线观看| A 在线网址| 黄色一区二区秘书性感| 亚洲AV无线| 色青青久久影视| 久久五月天婷婷| 欧美淫穴| 四虎免费看黄| 欧美日韩美女精品久草一区二区三区| 麻豆区久久久久亚| 国产AV中文| 国产无码成人无码| 岛国激情视频软件| 精品v日韩欧美国产| 丁香九月激情啪| 欧美久久九九| 久久免费精品96| 丝袜视频网国产90| 91天天看| 久久九九视频九九视频| 色婷婷成人| 人妻插插人妻人| 天天综合麻豆视频| 亚州综合在线| 三级特黄60分钟播放| 一级久久久久久久久久久| 色婷五月天| 久久天天躁日日躁狠狠躁| 亚洲高清在线se| 蜜桃久久一区二区| 免费无码国产精品v片在线观看| 97任你吞精| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 97综合网| 精品v日韩欧美国产| 亚洲一区深夜| 亚洲性感丝袜诱惑在线观看| 国产精品视屏| 欧美激情中文字幕另类小说| 人妻日日夜夜精品| 97欧美色| 中字幕人妻一区二区三区| 色综合网1| 久久一区,青青青青草视频在线播放| 999九九精品| 日本精品五区| 国产 三级自拍| 亚洲日韩青青草色月| 亚洲性刺激| 日日夜夜精品| 少妇国产不卡| 97亚洲综合在线| 九月丁香婷婷色| 婷婷色一区| 久久精品女同亚洲女同13| 26uuu成人影片| 丁香五月激情五月| 亚洲在钱| 伊人精品久久网站| 宅男91视频在线播放| 亚洲色婷婷综合久久久久中文| 日本 色 导航| 99999精品成人| 五十路熟女人妻一区二区在线观看 | 91痴汉| 日韩人妻播放| 黄色不卡视频| 国产乱伦搜索结果91P| 97人人干| 一卡二卡三卡| 精品国产肉丝袜在线拍国语 | 小少妇| 蜜桃天美传媒AV一区二区三区| 思思热国产在线视频| 老熟女熟妇| 亚洲啪啪综合?v一区综合精品区| 激情小说五月天| 亚洲区小说| 激情看片网站| 校园春色美腿丝袜| 欧美做爰无码A片视频| 蜜臀av中文字幕| 在线综合色| 91女优在线观看| 黑丝自慰喷水网站| 日韩 欧美 国产 麻豆| 国产欧美精选自拍一区| 精品然女一区二区| 久久69精品久久久久久久| 欧美日韩电影一区二区| 少妇熟女1区2区3区| 天天日日日射| www.99色| 夜草欧美| 三级网色| 欧美色图亚洲色,麻豆| 亚洲码专区| 天天影视91看看| 91操操| 综合网 欧美| 91在线综合网| 国产91av在线播放| 日韩少妇无吗| 色婷婷九月天天综合| 日韩无码服务区| 激情五月婷| 日韩一级二级三级在线不卡观看完整| 成人精品电影| 一级性爱啪啪视频| 日韩中文9| 欧美操人| 少妇熟女1区2区3区| 中文幕97| 色婷网| 校园春色亚洲| 国产丰满少妇久久久精品影院| 亚洲暴力强奸AV| 黑人精品欧美一区二区蜜桃| 亚洲精品视频二区| 最新av网站在线观看| 欧美激情亚洲情色| 色五月av| 欧美一区二区福利在线| 人妻少妇久久| 白嫩嫩一区| 国产亚洲性生活视频播放| 蜜桃狠狠色伊人亚洲综合| 天天天天操| 啪啪啪精品| 亚洲精品97久久中文字幕| 久久久蜜桃一区二区三区| 无码操逼视频一下| 哑洲在线| 美女高潮视频91| 欧美网站免费| 日本人妻最新在线中| 精品美女人人干| 国产蜜臀精品一区免费尤物| 成人亚欧免费视频| 97干在线| 人人爽夜夜玩视频| 宅男午夜在线视频| 日本福利二区视频| 性爱综合一区二区| 992视频一区| 涩涩久久精品| 日夜啪电影| 国产懂色精品国产av| 日韩性爱一级片| 91麻豆天美国产欧美高潮| 嗯嗯啊啊操死我| 亚洲超碰在线| 99精品视频在线观看免费| 97在线免费观看视频| 97亚洲国产| 青青操在线亚洲视频观看欧美在线 | 国产AAAAAABBBBB| 欧洲人妻视频| 久操影视| 激情终合网| 高凊专区人人操| 日本午夜久久电影| 亚洲精品国产熟女| 欧美色网| 本道综合精品| 亚洲在钱| 天天干人妻| 黄总AV色图| 麻豆久久久一区二区| 国模少妇一区二区三区| 日本三级一区二区 在线| 大JI巴好深好爽又大又粗视频| 亚洲国产97在线精品一区| 啊啊啊啊好大好硬啊啊啊啊啊| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 韩国三级一线观看久| 色色九区| 日日骚网站| 日韩欧美三级| 极品出轨视频网站| 不卡六六在线91| 国产99999久久精品| 美日韩在线不卡人妻| 一区二区三区四区姦女| 91 丝袜在线| 97青青操视频| 高潮内射在线| 久久一二区四| 97综合国产精品高潮久久| 欧美少妇高潮| 97操97干| 九九九成人| 夜夜久久久| 婷婷性网| 干B网| 国产91 丝袜在线播放00-百度| 91女日逼| 美女高潮国产高清| 91 丝袜在线播放| 日韩大香蕉| 久久亚洲AV无码白度| 色欧美综合| 高清国产精品福利网站| 粉嫩av平台| 人人干黄色| 噜噜噜在线视频| 黑人无码一区二区| 欧美国产日韩高清在线| 99热日本| 欧美色棕合| 夜夜狼人妻| 日日A∨| 亚州Av天美传媒| 97超碰公开| 啊啊啊啊啊啊啊啊在线观看| 无码精品久久久久久亚洲| se吧提供国产乱老熟视频胖女人 | 色原狠狠天天天| 九九九九九精品视频| 神马久久久久久| а√天堂资源官网在线资源| 乱伦a片视频| 欧美一级A片在线看视频性色| www.色婷婷.com| 久久人人爽爽爽人久久久| 欧美一区二区成人一卡| 日本国产二线女色| 好吊色青靑草| 亚洲国产一区二区日韩专区| aaaa少妇高潮大片| 色哟哟的毛片| 撸撸成人在线视频| 午夜亚洲| 翔田千里无码一区| 日韩去日本高清在| 91色碰| 久久超碰av在线| 亚洲欧美黄| 国产精品网址| 久久怡红院| 日日夜夜草草草| 超碰天天去日穴| 98人妻精品一区二区色欲| 日本一区二区三区四区免费观看| 色五月婷婷在线| 大香蕉男人的天堂| 亚洲高清综合网| 亚洲第一免费视频| 亚洲 欧美 天天| 日本高清加勒比| 精品91日日夜夜超清资源| 国产精品干干干| 激情综合97| 999熟女精品| 国产无码精品久久久久久| 日本人人操人人操| 女人妻一区| 日本道人妻久久久在线不卡色视频| 国产午夜精品理论片a大结局| 免费在线观看国内色片网站网址| 男人天堂.AB| 日韩电影中文字幕| 久久成人午夜精品影院 | 亚洲 一区二区 自拍| 国产超碰国产97| 亚洲天堂少妇| 曰韩操B| 精品国产网站| 亚洲欧美洲综合| 91成人在线免费视频| 欧亚第一综合网| 我想要 啊 啊 啊| 美国日韩黄色片| 97干天天| 久久AV无码AV| 性吧在线视频| 99久在线精品99re8| 7777奇米影视久久| 骚乳在线| 78久久| 精品久热| 国产丁香精品露脸视频| 操逼视频亚洲| 黑人与人妻| 懂色中文一区二区三区| 操穴国产| 国产女人视频三四五区| 伊人激情| 天天综合~91| 亚洲熟女中文字幕在线| 美女网站黄页| 色哟哟511老熟女| 亚洲色悠悠久久88| 欧美性爱第一区| 亚洲色香| 免费人成在线观看网站品爱网| 欧美 青青草| 亚洲欧美色图小说| 女同性恋一区二区三区精品视频| 女色综合| 高清不卡视频| 人妻精品视频一区二区三区| 国产欧美第五页| 亚洲se91| 日本久久久久久久久| 欧美懂色综合网| 黑操B| 曰韩人妻中文字幕在线 | 亚洲天堂 视频你懂的| 五月婷婷青青草娱乐伊人| 亚洲精品第一| 夜夜做夜夜爽精品视频| 亚洲av淫乱| 3级毛片一二| 色婷婷久久| 亚洲色阁| 91视频观看网站| 91东京热男人的天堂| 亚洲自拍一区夜夜操| 日逼逼免费看| 91男人天堂网| 国产无套粉嫩白浆在| 老熟女综合网 | 懂色AV蜜臀无码精品APP| 超碰97导航| 丁香六月综合激情| 女性91网站| 麻豆精品A片免费观看| 370p日韩欧美亚洲精品| 亚洲综合射| 女人高潮大叫一级毛片| 97资源久久| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 色综合美国| 亚洲AV成人无码一二三久久| 午夜综合在线| 色婷婷久久| 丁香婷婷五月| 五月天加勒比啪| 中文字幕 码精品视频网站| 久久超碰97| 欧美伦乱爱| 免费黄色片子| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 久久日韩肥臀| 天天摸夜夜摸| 国产精品免费美女视频| 91爱啪| 麻豆一区二区三区精品| 动漫爆乳3D奶水一区在线观看| 久久久久久久久999| 牛牛久久国产精品视频一二三| 久久久久久AV无码免费网站| 七月丁香婷婷| 99re在线视频| 国产少妇与亚洲av| 国产精品视频一区二区三区八戒| 欧美大的香蕉有线电视视频| 亚洲综合影片| 99操碰| 狠狠色噜噜狠狠狠狠2018| 国产精品午夜精品| 超碰在线974| 久热91| 免费一级精品啪啪视频| 日韩一级二级三级| 九一综合网| 午夜天天碰综合视频| 色久桃花影院在线观看| 九九九九精品| 91热色| 久插综合| 日韩精品99999| 粉嫩不卡一区二区性爱| 日韩欧美亚洲自拍偷拍| 91痴汉| 精品九九九九九九九九九| 玖色AV| 日本福利二区视频| se01国产在线视频| 亚洲福利影院一区久久| 色网亚洲人| 超碰97久久国| 天天碰操中国年青熟妇| 国产精品麻豆成人AV艾秋| 懂色AV蜜臀无码精品APP | 网友自拍第一页| 变态另类专区| 午夜精品人妻二区三区| 欧美 传媒 麻豆 日韩 偷拍| 伊人AAA| 黄色av一区二区在线| 国产日产精品久久快鸭的功能介绍| 九九九网站| 操一对老熟妇爽上天视频| 久久一区二区加油站| 四虎视频在线观看| 综合国产97| 日夜啪电影| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久超碰免费的| 国产精品肉丝自拍| 色妹子A V| 大香蕉亚洲中文| 天天做天天爱天天爽| 色婷婷导航| 久草视频分类在线| 无码 有码 国产18p| 亚洲无码?第一页| 夜夜天天噜狠狠爱2021| 亚洲天天做日日做天天谢日日| 26uuu久久| а√天堂资源官网在线资源| 日本操逼视频免费| 天天澡天天爽日日AV| 国产400孕妇孕交群| 欧美啪啪色吧在线| 激情欧美97| 中欧人妻丝袜中文字幕| 91在线欧美| 97色网| 13小男生GAY自慰脱裤子| 国产乱伦视频污| 国产精品久久久久久久无码AV| 日韩电影在线观看网址| 日语五十路和六十路亚洲国产精品| 精品人妻一区二区三区四区不卡在| 日韩熟女精一区二区三区不卡| 国产路线专区| 91九九| 欧美熟妇成人一区二区| 6080YYY午夜理论片在线观看| 日本三级一区二区 在线| 国模不卡| 亚洲中文字母在线播放| 秋霞视频一区二区| 天天综合精品| 九九毛片这里只有精品| 伊人国产av| 操逼999| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 天天操天天射青青草| 97青娱乐超碰久久| 秋霞鲁丝午夜无码一区二区三| av草草在线电影| 男人的天堂1024| 久久久久亚洲Av无码专区老牛影视| 日韩熟女操逼| 郑州宾馆老熟女露脸啪啪| 午夜天堂啪啪| 亚洲欧洲视频小说在线观看| 屌妞视频久久久久久久久久久久| 久久超碰98| 91无码人妻精品一区二区三区蜜桃| 天天日夜干| 国产精品人人爽人人做可爱福利 | 人妻精品视频一区二区三区| 性爱视频啪啪啪啪| 国产乱伦性爱AV| 久久久久久久久久久久久久久性生活视频| 日韩少妇丰满亚洲| 中文字幕日韩情色| 天堂无码| 黄页视频网站野外| 中文字幕啊啊啊在线观看视频| 日日黄色三级网站| 亚洲人妻色图| 性爱网站一区二区|