-體素特征集抽象:在 mmdetection3d 中復(fù)現(xiàn)與配置 KITTI 3D 目標(biāo)檢測(cè))
人工智能計(jì)算機(jī)視覺深度學(xué)習(xí)自動(dòng)駕駛【免費(fèi)下載鏈接】mmdetection3dOpenMMLabs next-generation platform for general 3D object detection.項(xiàng)目地址https://gitcode.com/gh_mirrors/mm/mmdetection3d點(diǎn)擊查看免費(fèi)下載導(dǎo)讀PV-RCNNPoint-Voxel RCNN是 3D 目標(biāo)檢測(cè)領(lǐng)域的代表性兩階段算法其核心貢獻(xiàn)在于將體素表征的高效計(jì)算與點(diǎn)云表征的精細(xì)感受野統(tǒng)一到同一框架中第一階段用稀疏 3D 卷積在體素空間高效提取多尺度特征并生成 3D 候選框第二階段通過點(diǎn)-體素特征集抽象Point-Voxel Feature Set Abstraction把體素特征反哺到原始點(diǎn)云的關(guān)鍵點(diǎn)上進(jìn)而對(duì)候選框做精細(xì)化分類與回歸。本文以 mmdetection3d 倉(cāng)庫(kù)中 PV-RCNN 的官方實(shí)現(xiàn)為對(duì)象逐層解讀 configs/pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py 這一完整配置從數(shù)據(jù)增強(qiáng)管線、體素化與稀疏編碼器到VoxelSetAbstraction點(diǎn)特征融合、RPN 與 RoI Head 的損失配置再到 KITTI 上的復(fù)現(xiàn)結(jié)果與訓(xùn)練/測(cè)試/推理命令。讀完本文你將能夠從源碼級(jí)理解 PV-RCNN 在 mmdetection3d 中的完整數(shù)據(jù)流并能在自己的 KITTI 數(shù)據(jù)上直接復(fù)現(xiàn)、調(diào)參或改造。一、算法背景為什么需要點(diǎn)-體素融合1.1 問題動(dòng)機(jī)LiDAR 點(diǎn)云是自動(dòng)駕駛與機(jī)器人感知中最主要的 3D 場(chǎng)景信息來源但原始點(diǎn)云具有稀疏、非規(guī)則、分布不均的特點(diǎn)直接在其上做特征學(xué)習(xí)存在兩大矛盾體素化方案的矛盾將點(diǎn)云離散為規(guī)則體素后可以使用高效的 3D 稀疏卷積如 SECOND 的 SparseConv與 BEV 特征圖計(jì)算效率高、適合并行但體素化本身會(huì)造成信息損失且難以感知點(diǎn)級(jí)別的精細(xì)結(jié)構(gòu)純點(diǎn)云方案的矛盾PointNet 這類直接處理原始點(diǎn)的網(wǎng)絡(luò)保留了幾何細(xì)節(jié)但全場(chǎng)景的鄰域搜索與采樣開銷大難以在遠(yuǎn)距離、大場(chǎng)景如自動(dòng)駕駛的 70m 感知范圍中高效工作。PV-RCNN 論文提出的方案是分治 融合先用體素分支高效編碼全場(chǎng)景上下文再把體素特征投影回一組稀疏的關(guān)鍵點(diǎn)上讓后續(xù)的候選框細(xì)化refinement在富含上下文信息的點(diǎn)特征上進(jìn)行。1.2 核心組件Voxel Set AbstractionVSAVSA 是 PV-RCNN 區(qū)別于普通兩階段 3D 檢測(cè)器的核心模塊。它先使用FPS最遠(yuǎn)點(diǎn)采樣從原始點(diǎn)云中采樣固定數(shù)量的關(guān)鍵點(diǎn)本配置為 2048 個(gè)然后讓每個(gè)關(guān)鍵點(diǎn)通過多組Set Abstraction模塊同時(shí)從三類來源聚合特征原始點(diǎn)云關(guān)鍵點(diǎn)鄰域內(nèi)的原始點(diǎn)特征rawpoints_sa_cfgs多尺度體素特征稀疏編碼器中間層的多尺度體素中心特征voxel_sa_cfgs_list對(duì)應(yīng) 4 個(gè)尺度scale_factor分別為 1/2/4/8BEV 特征圖通過雙線性插值從 BEV 特征圖采樣bev_feat_channel256bev_scale_factor8。三類特征拼接后送入一個(gè)1x1卷積融合層壓縮為統(tǒng)一的點(diǎn)特征fused_out_channel128供后續(xù) RoI 細(xì)化使用。該模塊在倉(cāng)庫(kù)中的實(shí)現(xiàn)見 mmdet3d/models/middle_encoders/voxel_set_abstraction.py 的VoxelSetAbstraction類從源碼結(jié)構(gòu)看其forward依次執(zhí)行sample_key_points的 FPS 采樣、interpolate_from_bev_features的 BEV 雙線性插值以及rawpoints_sa_layer與voxel_sa_layers兩組 SA 聚合最終經(jīng)point_feature_fusion_layer融合輸出。二、mmdetection3d 中的整體實(shí)現(xiàn)PointVoxelRCNN在 mmdetection3d 中PV-RCNN 的檢測(cè)器類名為PointVoxelRCNN繼承自TwoStage3DDetector源碼位于 mmdet3d/models/detectors/pv_rcnn.py。與常規(guī)兩階段檢測(cè)器不同它的構(gòu)造參數(shù)額外包含三個(gè)專用模塊構(gòu)造參數(shù)配置中的類型作用voxel_encoderHardSimpleVFE體素內(nèi)點(diǎn)特征編碼簡(jiǎn)單 VFEmiddle_encoderSparseEncoder稀疏 3D 卷積編碼器輸出多尺度特征與 BEV 特征points_encoderVoxelSetAbstraction點(diǎn)-體素特征集抽象產(chǎn)出關(guān)鍵點(diǎn)特征從前向流程看pv_rcnn.py 的extract_feat/extract_points_feat/predict/loss數(shù)據(jù)流可概括為體素化與點(diǎn)特征編碼Det3DDataPreprocessorvoxelTrue將原始點(diǎn)云轉(zhuǎn)為 voxels第一階段RPNHardSimpleVFE→SparseEncoderreturn_middle_featsTrue同時(shí)輸出多尺度稀疏特征multi_scale_3d_feats與 BEV 特征spatial_feats→SECOND骨干 →SECONDFPN頸部 →PartA2RPNHead生成 3D 候選框點(diǎn)特征提取VoxelSetAbstraction采樣 2048 個(gè)關(guān)鍵點(diǎn)聚合原始點(diǎn)、多尺度體素與 BEV 三類特征輸出keypoints/keypoint_features/fusion_keypoint_features第二階段RoI HeadPVRCNNRoiHead先由ForegroundSegmentationHead做前景語(yǔ)義分割再用Batch3DRoIGridExtractor在每個(gè)候選框內(nèi)生成6x6x6網(wǎng)格點(diǎn)并聚合關(guān)鍵點(diǎn)特征最后由PVRCNNBBoxHead完成分類與回歸。原始點(diǎn)云 ──體素化── HardSimpleVFE ── SparseEncoder ── SECOND SECONDFPN ── PartA2RPNHead ── 3D 候選框 │ │ │ │ └──── FPS 采樣 2048 關(guān)鍵點(diǎn) ── 多尺度體素特征 / BEV 特征 / 原始點(diǎn)特征VoxelSetAbstraction│ │ PVRCNNRoiHead前景分割 6x6x6 網(wǎng)格 RoI 特征 分類回歸──┘2.1 體素編碼與稀疏中間編碼器配置中voxel_size [0.05, 0.05, 0.1]、point_cloud_range [0, -40, -3, 70.4, 40, 1]即感知范圍覆蓋前方 0~70.4m、橫向 -40~40m、高度 -3~1m體素分辨率為 5cm x 5cm x 10cm因此稀疏特征空間的形狀為[41, 1600, 1408]sparse_shape。max_num_points5每個(gè)體素最多容納 5 個(gè)點(diǎn)max_points_per_voxelmax_voxels(16000, 40000)訓(xùn)練/測(cè)試階段分別允許的最大非空體素?cái)?shù)用于顯存控制HardSimpleVFE將每個(gè)體素內(nèi)最多 5 個(gè)點(diǎn)的 4 維特征x, y, z, intensity做逐點(diǎn) MLP 后最大池化得到體素級(jí)特征SparseEncoder的return_middle_featsTrue是 PV-RCNN 的關(guān)鍵開關(guān)它讓稀疏編碼器把 4 個(gè)下采樣階段的中間稀疏特征一并返回multi_scale_3d_feats供 VSA 模塊跨尺度聚合。各階段的encoder_paddings控制 3D 稀疏卷積的 padding其中((1, 1, 1), 0, 0)表示僅在 z 維度 pad 1 個(gè)格子體素尺寸在 z 方向?yàn)?0.1m用于將邊界外擴(kuò)。2.2 第二階段PVRCNNRoiHead 三件套R(shí)oI Head 定義于 mmdet3d/models/roi_heads/pv_rcnn_roi_head.py 的PVRCNNRoiHead由三個(gè)子模塊組成1前景語(yǔ)義分割頭ForegroundSegmentationHeadmmdet3d/models/roi_heads/mask_heads/foreground_segmentation_head.py對(duì) 2048 個(gè)關(guān)鍵點(diǎn)做二分類前景/背景預(yù)測(cè)in_channels640與 VSA 融合前特征通道數(shù)一致其 sigmoid 輸出在后續(xù)作為前景置信門控fusion_keypoint_features * seg_preds.sigmoid().max(...)即只有被判為前景的關(guān)鍵點(diǎn)特征才參與 RoI 網(wǎng)格聚合從而抑制背景噪聲見 pv_rcnn_roi_head.py 的_bbox_forward與predict。分割損失使用mmdet.FocalLossreductionsum且activatedTrue。2RoI 網(wǎng)格特征提取器Batch3DRoIGridExtractormmdet3d/models/roi_heads/roi_extractors/batch_roigridpoint_extractor.py對(duì)每個(gè)候選框在其內(nèi)部生成6x6x6 216個(gè)均勻網(wǎng)格點(diǎn)grid_size6用一組StackedSAModuleMSGradius(0.8, 1.6)雙半徑sample_nums(16, 16)pool_modmax從關(guān)鍵點(diǎn)特征中聚合出每個(gè)網(wǎng)格點(diǎn)的特征最終輸出(BxN, 6, 6, 6, C)形狀的體素化 RoI 特征。3細(xì)化頭PVRCNNBBoxHeadmmdet3d/models/roi_heads/bbox_heads/pv_rcnn_bbox_head.py輸入為in_channels128 * 6^3網(wǎng)格展開經(jīng)shared_fc_channels(256, 256)共享全連接層后分出分類支路cls_channels(256, 256)與回歸支路reg_channels(256, 256)dropout_ratio0.3防止過擬合。關(guān)鍵設(shè)置class_agnosticTrue表示類別無(wú)關(guān)的細(xì)化分類分?jǐn)?shù)由 RPN 的labels_3d攜帶回歸用DeltaXYZWLHRBBoxCoder編碼并額外啟用with_corner_lossTrue計(jì)算 8 個(gè)角點(diǎn)的 Huber 損失get_corner_loss_lidar以增強(qiáng)框角點(diǎn)的幾何約束。三、完整配置逐段拆解pv_rcnn_8xb2-80e_kitti-3d-3class.py3.1 基礎(chǔ)繼承該配置繼承了三份基礎(chǔ)配置相對(duì)路徑均從倉(cāng)庫(kù)根目錄出發(fā)_base_ [ ../_base_/datasets/kitti-3d-3class.py, # KITTI 3 類Pedestrian/Cyclist/Car數(shù)據(jù)配置 ../_base_/schedules/cyclic-40e.py, # 余弦退火 動(dòng)量余弦的循環(huán)調(diào)度 ../_base_/default_runtime.py # 日志、checkpoint、hook 等運(yùn)行時(shí)默認(rèn)設(shè)置 ]注意模型名為pv_rcnn_8xb2-80e_kitti-3d-3class其中的 80e 源于cyclic-40e.py的調(diào)度配合RepeatDataset的重復(fù)機(jī)制train_cfg中max_epochs40基礎(chǔ)上再循環(huán)放大README 中給出的訓(xùn)練顯存 5.4GB、mAP 72.28 即按該設(shè)置復(fù)現(xiàn)。此外配置將class_names定義為[Pedestrian, Cyclist, Car]并通過metainfo dict(CLASSESclass_names)注入。3.2 數(shù)據(jù)管線訓(xùn)練與測(cè)試訓(xùn)練管線train_pipeline包含以下依次執(zhí)行的數(shù)據(jù)變換全部定義于 mmdet3d/datasets/transforms 中變換關(guān)鍵參數(shù)作用LoadPointsFromFilecoord_typeLIDAR,load_dim4,use_dim4讀取 LiDAR 坐標(biāo)點(diǎn)云保留 x/y/z/intensity 4 維LoadAnnotations3Dwith_bbox_3dTrue, with_label_3dTrue加載 3D 框與類別標(biāo)簽ObjectSampledb_sampler,use_ground_planeTrue基于 GT 數(shù)據(jù)庫(kù)kitti_dbinfos_train.pkl的點(diǎn)云增強(qiáng)采樣RandomFlip3Dflip_ratio_bev_horizontal0.550% 概率水平翻轉(zhuǎn)GlobalRotScaleTransrot_range[-0.7854, 0.7854](±45°),scale_ratio_range[0.95, 1.05]全局旋轉(zhuǎn) 縮放PointsRangeFilterpoint_cloud_range裁剪點(diǎn)云到感知范圍ObjectRangeFilterpoint_cloud_range剔除范圍外的 GT 框PointShuffle-打亂點(diǎn)順序Pack3DDetInputskeys[points, gt_bboxes_3d, gt_labels_3d]打包模型輸入其中db_sampler的sample_groupsdict(Car15, Pedestrian10, Cyclist10)控制每幀最多從數(shù)據(jù)庫(kù)采樣的各類別數(shù)量filter_by_min_points則要求 GT 框內(nèi)至少包含 5 個(gè)點(diǎn)才參與采樣。測(cè)試管線test_pipeline相對(duì)簡(jiǎn)潔僅做MultiScaleFlipAug3D包裹的恒等變換rot_range[0,0]、scale_ratio_range[1,1]、flipFalse保證測(cè)試時(shí)不做隨機(jī)增強(qiáng)最后以Pack3DDetInputs打包points。3.3 模型結(jié)構(gòu)配置模型model字典的組裝順序與 2.1~2.2 節(jié)描述一一對(duì)應(yīng)核心字段及含義如下數(shù)據(jù)預(yù)處理器data_preprocessordict( typeDet3DDataPreprocessor, voxelTrue, voxel_layerdict( max_num_points5, # 每個(gè)體素最大點(diǎn)數(shù) point_cloud_rangepoint_cloud_range, voxel_sizevoxel_size, max_voxels(16000, 40000))) # 訓(xùn)練/測(cè)試最大非空體素?cái)?shù)體素編碼與稀疏編碼器voxel_encoderdict(typeHardSimpleVFE), middle_encoderdict( typeSparseEncoder, in_channels4, sparse_shape[41, 1600, 1408], order(conv, norm, act), encoder_paddings((0, 0, 0), ((1, 1, 1), 0, 0), ((1, 1, 1), 0, 0), ((0, 1, 1), 0, 0)), return_middle_featsTrue) # 關(guān)鍵返回多尺度中間稀疏特征供 VSA 使用點(diǎn)-體素特征集抽象VSAnum_keypoints2048、fused_out_channel128。四組voxel_sa_cfgs_list的StackedSAModuleMSG分別對(duì)應(yīng)尺度因子 1/2/4/8半徑隨尺度放大(0.4, 0.8) → (0.8, 1.2) → (1.2, 2.4) → (2.4, 4.8)mlp_channels的輸入通道數(shù)與前一級(jí)稀疏特征通道匹配16/32/64/64。rawpoints_sa_cfgs用in_channels1從原始點(diǎn)僅坐標(biāo)聚合特征。BEV 側(cè)bev_feat_channel256, bev_scale_factor8對(duì)應(yīng) SECOND 骨干輸出的 BEV 特征圖分辨率。骨干與頸部backbonedict(typeSECOND, in_channels256, layer_nums[5, 5], layer_strides[1, 2], out_channels[128, 256]), neckdict(typeSECONDFPN, in_channels[128, 256], upsample_strides[1, 2], out_channels[256, 256]),RPN 頭PartA2RPNHeadin_channels512為 FPN 輸出的兩路 256 通道拼接。anchor_generator使用Anchor3DRangeGenerator為三個(gè)類別分別定義錨框rangesPedestrian/Cyclist 的中心 z 為 -0.6Car 為 -1.78sizes[0.8, 0.6, 1.73]Pedestrian、[1.76, 0.6, 1.73]Cyclist、[3.9, 1.6, 1.56]Carrotations[0, 1.57]每個(gè)位置兩種朝向0 與 π/2。損失配置mmdet.FocalLossgamma2.0, alpha0.25權(quán)重 1.0做分類mmdet.SmoothL1Lossbeta1/9權(quán)重 2.0做框回歸mmdet.CrossEntropyLoss權(quán)重 0.2做方向分類use_direction_classifierTrue, dir_offset0.78539。assigner_per_sizeTrue與assign_per_classTrue意味著每個(gè)類別有獨(dú)立的正負(fù)樣本分配器。RoI Head語(yǔ)義分割頭in_channels640VSA 聚合前的特征通道原始點(diǎn) 32 四尺度體素 4x(3232)256… 由VoxelSetAbstraction累加得到加extra_width0.1GT 框外擴(kuò)寬度用于生成前景分割目標(biāo)網(wǎng)格提取器grid_size6細(xì)化頭in_channels128、grid_size6、class_agnosticTrueloss_bbox與loss_cls均使用reductionsum。3.4 訓(xùn)練與測(cè)試配置分配器、采樣器與 NMSRPN 訓(xùn)練train_cfg.rpn三個(gè)類別各自獨(dú)立使用Max3DIoUAssignerBboxOverlapsNearest3D計(jì)算 IoUCar 的閾值更嚴(yán)格pos_iou_thr0.6, neg_iou_thr0.45Pedestrian/Cyclist 為0.5/0.35min_pos_iou與各自 neg 閾值一致。rpn_proposal階段nms_pre9000 → nms_post512 → max_num512nms_thr0.8使用旋轉(zhuǎn) NMSuse_rotate_nmsTrue。RoI 訓(xùn)練train_cfg.rcnn三個(gè)類別的分配器閾值統(tǒng)一pos_iou_thr0.55, neg_iou_thr0.55IoU 計(jì)算改用BboxOverlaps3D且coordinatelidar采樣器為IoUNegPiecewiseSampler每 batch 采樣num128個(gè) RoIpos_fraction0.5負(fù)樣本按 IoU 分兩段neg_piece_fractions[0.8, 0.2]對(duì)應(yīng)閾值[0.55, 0.1]return_iouTrue使分類目標(biāo)可以采用軟標(biāo)簽——見 pv_rcnn_bbox_head.py 的_get_target_single當(dāng) IoU 處于cls_pos_thr0.75與cls_neg_thr0.25之間時(shí)標(biāo)簽被設(shè)置為iou * 2 - 0.5的連續(xù)值而非 0/1。測(cè)試test_cfgRPN 側(cè)nms_pre1024 → nms_post100 → max_num100、nms_thr0.7RoI 側(cè)use_rotate_nmsTrue, use_raw_scoreTrue, nms_thr0.1, score_thr0.1。3.5 優(yōu)化器與學(xué)習(xí)率調(diào)度配置覆蓋了基礎(chǔ)調(diào)度中的lr 0.001優(yōu)化器沿用cyclic-40e.py的AdamWbetas(0.95, 0.99), weight_decay0.01梯度裁剪max_norm10。調(diào)度器為兩段余弦退火 動(dòng)量余弦見 configs/base/schedules/cyclic-40e.py0~15 epoch學(xué)習(xí)率由 0 升溫至lr*10 0.01CosineAnnealingLR,T_max15,eta_minlr*10動(dòng)量由 0 升溫至0.85/0.9515~40 epoch學(xué)習(xí)率由lr*10余弦退火至lr*1e-4動(dòng)量趨向 1。這種先熱身后冷卻的循環(huán)策略是 KITTI 數(shù)據(jù)集上 SECOND 系列模型的標(biāo)準(zhǔn)做法配合RepeatDataset可等效實(shí)現(xiàn) 80 epoch 的訓(xùn)練。3.6 Dataloader 與評(píng)估train_dataloader dict(batch_size2, num_workers2, datasetdict(datasetdict(pipelinetrain_pipeline, metainfometainfo))) test_dataloader dict(datasetdict(pipelinetest_pipeline, metainfometainfo)) eval_dataloader dict(datasetdict(pipelinetest_pipeline, metainfometainfo))外層dict(dataset...)即RepeatDataset包裝metainfo將類別名注入每個(gè) data samplebatch_size2對(duì)應(yīng) README 中 5.4GB 顯存占用8 張 A100 GPU 的分布式訓(xùn)練環(huán)境下單卡 2 個(gè)樣本。四、KITTI 上的復(fù)現(xiàn)結(jié)果4.1 總覽README 給出的官方復(fù)現(xiàn)結(jié)果如下該表同時(shí)登記于 configs/pv_rcnn/metafile.ymlBackboneClassLr schdMem (GB)mAPSECFPN3 Classcyclic 80e5.472.28說明mAP 為 3 類在moderate難度下的AP11結(jié)果KITTI 官方 11 點(diǎn)插值 AP。4.2 分難度分類別精度AP11, 3D類別EasyModerateHardCar89.2083.7278.79Pedestrian66.6459.8455.33Cyclist87.2573.2769.61從結(jié)果可以看出Car 與 Cyclist 在三個(gè)難度上表現(xiàn)均衡且精度較高Pedestrian 相對(duì)偏低小目標(biāo)、形狀多變這與 KITTI 3D 檢測(cè)的整體難度分布一致。評(píng)估器為 mmdet3d/evaluation/metrics/kitti_metric.py 對(duì)應(yīng)的 KITTI 官方評(píng)測(cè)協(xié)議。五、訓(xùn)練、測(cè)試與推理實(shí)操以下命令均基于倉(cāng)庫(kù)自帶的 tools/train.py、tools/test.py 與 demo/pcd_demo.py先按 docs/en/user_guides/dataset_prepare.md 準(zhǔn)備 KITTI 數(shù)據(jù)并生成kitti_infos_train.pkl、kitti_dbinfos_train.pkl。單機(jī)單卡訓(xùn)練python tools/train.py configs/pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py單機(jī)多卡分布式訓(xùn)練bash tools/dist_train.sh configs/pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py 8測(cè)試評(píng)估python tools/test.py configs/pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py \ checkpoint.pth --cfg-options --eval kitti_map點(diǎn)云可視化推理python demo/pcd_demo.py point_cloud.bin \ configs/pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py checkpoint.pth需要說明由于訓(xùn)練顯存約 5.4GB/卡單卡如 24GB 顯存的消費(fèi)級(jí)/專業(yè)卡即可完整訓(xùn)練該模型分布式腳本中的 GPU 數(shù)量應(yīng)與train_dataloader的batch_size配合考慮且auto_scale_lr默認(rèn)關(guān)閉。六、測(cè)試驗(yàn)證與實(shí)現(xiàn)要點(diǎn)倉(cāng)庫(kù)針對(duì)該實(shí)現(xiàn)提供了單元測(cè)試 tests/test_models/test_detectors/test_pvrcnn.py斷言mmdet3d.models中存在PointVoxelRCNN模塊直接從pv_rcnn/pv_rcnn_8xb2-80e_kitti-3d-3class.py讀取配置并用MODELS.build構(gòu)建模型get_detector_cfg說明該配置是開箱即用、可被配置系統(tǒng)完整解析的在 CUDA 環(huán)境下執(zhí)行modepredict與modeloss兩種前向驗(yàn)證輸出包含bboxes_3d/scores_3d/labels_3d且六項(xiàng)損失loss_rpn_cls、loss_rpn_bbox、loss_rpn_dir、loss_semantic、loss_bbox、loss_cls、loss_corner都能正確計(jì)算——這與 pv_rcnn.py 中l(wèi)oss()將 RPN 損失與 RoI 損失合并返回的實(shí)現(xiàn)相互印證。從實(shí)現(xiàn)要點(diǎn)上值得注意的工程細(xì)節(jié)還包括顯存優(yōu)化max_voxels(16000, 40000)與num_keypoints2048是平衡精度與內(nèi)存的關(guān)鍵旋鈕調(diào)大num_keypoints會(huì)提升 RoI 特征覆蓋但增加 VSA 計(jì)算量return_middle_feats去掉該開關(guān)將導(dǎo)致VoxelSetAbstraction無(wú)法拿到多尺度體素特征VSA 模塊會(huì)退化為僅聚合原始點(diǎn)與 BEV 特征前景門控RoI 特征在送入網(wǎng)格提取器前會(huì)乘以前景分割的 sigmoid 分?jǐn)?shù)這是 PV-RCNN 抑制背景關(guān)鍵點(diǎn)噪聲、提升細(xì)粒度回歸精度的核心機(jī)制見 pv_rcnn_roi_head.py 的_bbox_forward。七、擴(kuò)展閱讀配置文件的模型基礎(chǔ)定義可對(duì)照 configs/base/models 中的parta2.py、second_hv_secfpn_kitti.py等基礎(chǔ)模板理解其繼承關(guān)系與 PV-RCNN 結(jié)構(gòu)相近的兩階段模型如 Part-A2、PointRCNN分別位于 mmdet3d/models/detectors/parta2.py 與 mmdet3d/models/detectors/point_rcnn.py可對(duì)比其extract_feat的差異理解不同融合策略數(shù)據(jù)準(zhǔn)備、訓(xùn)練測(cè)試與模型庫(kù)索引可參考 docs/en/user_guides/train_test.md、docs/en/user_guides/dataset_prepare.md 與 configs/pv_rcnn/metafile.yml。引用若在研究中引用 PV-RCNN請(qǐng)使用官方 README 提供的 BibTeXarticle{ShaoshuaiShi2020PVRCNNPF, title{PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection}, author{Shaoshuai Shi and Chaoxu Guo and Li Jiang and Zhe Wang and Jianping Shi and Xiaogang Wang and Hongsheng Li}, journal{computer vision and pattern recognition}, year{2020} }贊分享人工智能計(jì)算機(jī)視覺深度學(xué)習(xí)自動(dòng)駕駛【免費(fèi)下載鏈接】mmdetection3dOpenMMLabs next-generation platform for general 3D object detection.項(xiàng)目地址https://gitcode.com/gh_mirrors/mm/mmdetection3d點(diǎn)擊查看免費(fèi)下載相關(guān)推薦MMDetection3D 中的 PointRCNN兩階段純點(diǎn)云 3D 目標(biāo)檢測(cè)原理、配置解析與 KITTI 實(shí)戰(zhàn)MMDetection3D 中的 PointRCNN兩階段純點(diǎn)云 3D 目標(biāo)檢測(cè)原理、配置解析與 KITTI 實(shí)戰(zhàn) PointRCNN 是首個(gè)直接從原始點(diǎn)云進(jìn)人工智能計(jì)算機(jī)視覺深度學(xué)習(xí)自動(dòng)駕駛SMOKE 單目 3D 目標(biāo)檢測(cè)算法在 mmdetection3d 中的實(shí)現(xiàn)與 KITTI 實(shí)戰(zhàn)指南SMOKE 單目 3D 目標(biāo)檢測(cè)算法在 mmdetection3d 中的實(shí)現(xiàn)與 KITTI 實(shí)戰(zhàn)指南 本文基于 mmdetection3d 倉(cāng)庫(kù)中 config人工智能計(jì)算機(jī)視覺深度學(xué)習(xí)自動(dòng)駕駛Redis 生產(chǎn)環(huán)境部署方案實(shí)戰(zhàn)doocs/advanced-java 中的集群架構(gòu)、容量規(guī)劃與高可用設(shè)計(jì)Redis 生產(chǎn)環(huán)境部署方案實(shí)戰(zhàn)doocs/advanced java 中的集群架構(gòu)、容量規(guī)劃與高可用設(shè)計(jì) 生產(chǎn)環(huán)境中的 Redis 到底該怎么部署本篇文章人工智能計(jì)算機(jī)視覺深度學(xué)習(xí)自動(dòng)駕駛上一篇WebAssembly模塊簽名驗(yàn)證終極指南確保代碼安全運(yùn)行的完整教程下一篇Structurae排序結(jié)構(gòu)詳解BinaryHeap與SortedArray使用指南創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考