
PCDet
THE@JOKER
一个无耻混蛋
展开
-
pointpillar IOU计算
# 分配目标def assign_targets_single(self, anchors, gt_boxes, gt_classes, matched_threshold=0.6, unmatched_threshold=0.45): # Car:匹配使用0.6和0.45的正负样本阈值 # anchors:[107136, 7] # gt_boxes:[num, 7] # gt_classes:[1, num] ,Car:全是1、Pedestrian:全是2、Cyclis原创 2021-06-01 11:08:02 · 827 阅读 · 1 评论 -
test.py 输出
Sv+TnS_v +TnSv+Tn定位:eval.py# 输入:gt_annos (3769,) , dt_annos (3769,)def get_official_eval_result(gt_annos, dt_annos, current_classes, PR_detail_dict=None): overlap_0_7 = np.array([[0.7, 0.5, 0.5, 0.7, 0.5, 0.7], [0.7,原创 2021-04-19 22:21:11 · 526 阅读 · 0 评论 -
fg_gt_boxes和fg_anchors
if len(gt_boxes) > 0 and anchors.shape[0] > 0: fg_gt_boxes = gt_boxes[anchor_to_gt_argmax[fg_inds], :] # gt_box!!!----真是样本框---- fg_anchors = anchors[fg_inds, :] # 前景anchor,即正样本!!! bbox_targets[fg_inds, :] = self.box_coder.encode_torch(f原创 2021-04-12 17:43:12 · 566 阅读 · 0 评论 -
pointpillar location loss
计算 分类 losscls_preds = self.forward_ret_dict['cls_preds'] # 类别预测结果 [N, H, W, C1]box_cls_labels = self.forward_ret_dict['box_cls_labels'] # box类别标签 [N, num_anchors]torch.Size([3, 248, 216, 18]) # 类别预测结果torch.Size([3, 321408]) # box类别标签tensor([[[[-4.原创 2021-04-05 17:00:52 · 628 阅读 · 0 评论 -
pointpillar Classification loss
分类损失# ------------------------------------ 计算 分类 loss ----------------------------—----def get_cls_layer_loss(self): cls_preds = self.forward_ret_dict['cls_preds'] # 类别预测结果 [N, H, W, C1] = [3, 248, 216, 18] box_cls_labels = self.forward_ret_dict原创 2021-04-04 18:40:44 · 494 阅读 · 0 评论 -
pointpillar anchor匹配
定位:pcdet/models/dense_heads/target_assigner/axis_aligned_target_assigner.py# IOU 计算if len(gt_boxes) > 0 and anchors.shape[0] > 0: anchor_by_gt_overlap = iou3d_nms_utils.boxes_iou3d_gpu(anchors[:, 0:7], gt_boxes[:, 0:7]) \ if self.match原创 2021-04-03 19:25:59 · 809 阅读 · 0 评论 -
OpenPCDet的多标签分类损失函数使用的是focal loss
OpenPCDet的多标签分类损失函数使用的是focal loss,进行了自定义实现,代码如下:import numpy as npimport torchimport torch.nn as nnclass SigmoidFocalClassificationLoss(nn.Module): """ Sigmoid focal cross entropy loss. """ def __init__(self, gamma: float = 2.0, alpha转载 2021-04-02 18:51:23 · 1097 阅读 · 0 评论 -
ResidualCoder
# 残差编码器class ResidualCoder(object): def __init__(self, code_size=7, encode_angle_by_sincos=False, **kwargs): super().__init__() self.code_size = code_size self.encode_angle_by_sincos = encode_angle_by_sincos # 通过sin/cos编码角度原创 2021-04-02 09:42:52 · 453 阅读 · 1 评论 -
KITTI 3D目标检测的评估指标
Car AP_R40@0.70, 0.50, 0.50:bbox AP:95.5675, 92.1874, 91.3088bev AP:95.6500, 94.7010, 93.99183d AP:95.6279, 94.5680, 93.6853aos AP:95.54, 91.98, 90.94Pedestrian AP@0.50, 0.50, 0.50:bbox AP:65.0374, 61.3875, 57.8241bev AP:60.1475, 54.9657, 51.17原创 2021-03-31 19:01:41 · 20842 阅读 · 12 评论 -
pointpillar 数据流
网络部分包含4部分:(1)PillarVFE pcdet/models/backbones_3d/vfe/pillar_vfe.py # 3D卷积(2)PointPillarScatter pcdet/models/backbones_2d/map_to_bev/pointpillar_scatter.py # 2D卷积(3)BaseBEVBackbone pcdet/models/backbones_2d/base_bev_backbone..原创 2021-03-26 15:33:42 · 1253 阅读 · 0 评论 -
pointpillar SSD检测后的data_dict
一个 data_dict:'batch_size': 3 # 3帧点云'points' torch.Size([69375, 5]) # 点数目可变 猜测(? x y z r)'frame_id' (3,) # 帧编号'gt_boxes' torch.Size([3, 40, 8]) # 3帧点,好像每帧最多40个ground truth,[x, y, z, 长dx, 宽dy, 高dz, 角度heading,原创 2021-03-26 15:29:02 · 309 阅读 · 0 评论 -
pointpillar Backbone编码后的data_dict
一个 data_dict:'batch_size': 3 # 3帧点云'points' torch.Size([69375, 5]) # 点数目可变 猜测(? x y z r)'frame_id' (3,) # 帧编号'gt_boxes' torch.Size([3, 40, 8]) # 3帧点,好像每帧最多40个ground truth,[x, y, z, 长dx, 宽dy, 高dz, 角度heading,原创 2021-03-26 11:15:49 · 265 阅读 · 0 评论 -
pointpillar VFE编码后的batch_dict
pointpillar点云范围 [0, -39.68, -3, 69.12, 39.68, 1]x轴:69.12/0.16=432y轴:39.68x2/0.16=496num_voxel:432x496=214272一个 batch_dict:'batch_size': 3 帧点云'points' torch.Size([69375, 5]) # 点数目可变 猜测(? x y z r)'frame_id' (3,) # 帧编号原创 2021-03-25 22:13:47 · 943 阅读 · 0 评论 -
PointPillar 所需模块
遍历所需模块: PillarVFE( (pfn_layers): ModuleList( (0): PFNLayer( (linear): Linear(in_features=10, out_features=64, bias=False) (norm): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True) ) ))遍历所需模块: P原创 2021-03-25 16:21:26 · 605 阅读 · 0 评论 -
pcdet.egg-info/SOURCES.txt
README.mdsetup.pypcdet/__init__.pypcdet/config.pypcdet/version.pypcdet.egg-info/PKG-INFOpcdet.egg-info/SOURCES.txtpcdet.egg-info/dependency_links.txtpcdet.egg-info/requires.txtpcdet.egg-info/top_level.txtpcdet/datasets/__init__.pypcdet/datasets/原创 2021-03-25 16:18:21 · 431 阅读 · 0 评论 -
args | cfg
python train0.py --cfg_file=cfgs/kitti_models/pointpillar.yamlargsNamespace(batch_size=4, cfg_file='cfgs/kitti_models/pointpillar.yaml', ckpt=None, ckpt_save_interval=1, epochs=80, extra_tag='default', fix_random_seed=False, launcher='none', local_rank原创 2021-03-22 18:40:34 · 600 阅读 · 0 评论 -
更改测试集文件
进入data/kitti/ImageSets/val.txt,其中的数字即为我们要测试的点云数据,默认是3769个,将其修改为想要测试的点云文件的序号即可。更新一下代码:python -m pcdet.datasets.kitti.kitti_dataset create_kitti_infos tools/cfgs/dataset_configs/kitti_dataset.yaml...原创 2021-03-22 15:51:40 · 303 阅读 · 0 评论 -
train.py | test.py
1. train在tools/train.py中找到以下表示开始训练的代码 # -----------------------start training--------------------------- logger.info('**********************Start training %s/%s(%s)**********************' % (cfg.EXP_GROUP_PATH, cfg.TAG, args.extra_原创 2021-03-19 19:22:50 · 846 阅读 · 0 评论 -
kitti 数据预处理
根据tools/cfgs/dataset_configs/kitti_dataset.yaml锁定相应模块(一)数据增强info:output/kitti_models/pv_rcnn/default/log_train.txt第42行用到了以下几个数据增强器DATA_CONFIG: DATA_AUGMENTOR: AUG_CONFIG_LIST: - NAME: gt_samplinggt_sampling及以下的各个函数均定位在pcdet/d转载 2021-03-19 16:29:57 · 1549 阅读 · 1 评论 -
kitti_dataset.yaml
DATASET: 'KittiDataset'DATA_PATH: '../data/kitti' #数据路径POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1] #点云范围#数据分割DATA_SPLIT: { 'train': train, 'test': val}#信息路径INFO_PATH: { 'train': [kitti_infos_train.pkl], 'test': [kitti_infos_val.p原创 2021-03-18 14:23:23 · 1151 阅读 · 0 评论 -
pointpillar.yaml
# 类名CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']# 数据配置DATA_CONFIG: _BASE_CONFIG_: cfgs/dataset_configs/kitti_dataset.yaml # 基本配置 POINT_CLOUD_RANGE: [0, -39.68, -3, 69.12, 39.68, 1] #点云范围 # 数据处理器 DATA_PROCESSOR: - NAME: mask_p原创 2021-03-18 14:23:08 · 1189 阅读 · 1 评论 -
OpenPCDet 训练KITTI
数据集配置位于tools / cfgs / dataset_configs内,模型配置位于针对不同数据集的tools / cfgs中。数据集准备目前,我们提供了KITTI数据集和NuScenes数据集的数据加载器,并且正在支持更多数据集。KITTI数据集请下载官方的KITTI 3D对象检测数据集,并按以下方式组织下载的文件(可以从[road plane]下载路面,这对于培训中的数据增强是可选的):注意:如果您已经有来自的数据信息pcdet v0.1,则可以选择使用旧的信息,并将tools / c原创 2021-03-16 21:39:54 · 5794 阅读 · 15 评论 -
OpenPCDet安装和快速演示
https://github.com/open-mmlab/OpenPCDet原创 2021-03-16 21:39:35 · 10455 阅读 · 17 评论 -
PCDet: Open-MMLab 面向LiDAR点云表征的3D目标检测代码库
前言随着自动驾驶与机器人技术的不断发展,基于点云表征的3D目标检测领域在近年来取得了不断的发展。然而,层出不穷的点云数据集(KITTI、NuScene、Lyft、Waymo、PandaSet等)在数据格式与3D坐标系上往往定义各不相同,各式各样的点云感知算法(point-based、 voxel-based、one-stage/two-stage等)也形态各异,使得相关研究者难以在一个统一的框架内进行各种组合实验。为此,我们开源了一套基于PyTorch实现的点云3D目标检测代码库 - OpenPCDet转载 2021-03-11 11:32:17 · 1492 阅读 · 0 评论