逐行逐句进一步了解SurroundOcc(一)

0. 简介

之前我们专门对bevformer系列的代码进行了介绍。其实bevformer作为这一系列比较关键的工作。也为了我们后续看这些端到端的文章非常有帮助。我们最近这一系列将会围绕SurroundOcc这一篇三维占用预测的工作。目前二维转三维主要有两条线:LSS是一个back-projection(直方图反向投射)的工作,这里主要完成了深度估计,是从2D到3D,而bevformer则是一个projection(投影算法),里面主要完成了一个深度转换,即3D到2D。OCC这一体系一脉相承,我们后面来详细对比一下BEVFormer以及具体实现流程和代码。
在这里插入图片描述

1. 基础理解

对于SurroundOcc,我们其实可以理解其将整个空间分成一个Voxel的合集。每个Voxel可以分为被占用和未占用的。同时也可以对被占用的Voxel来划分出。我们可以使用

python visual.py ~/data/surroundocc/nuscenes_occ/sample/n0*.npy

来看到会给出一个occ的真值,这个图片中的尺度是20020016的尺度。这里未占用的类别是不会在界面中显示出来的。
在这里插入图片描述
下面是SurroundOcc的整体流程。我们可以看到输入的也是6v的针孔摄像头信息。然后相较于bevformer而言,其更加简化,并同时提出了一个pipeline,针对稀疏的雷达点云生成稠密的占用栅格信息。来提供给训练3D OCC的占用真值。相关的代码位置是在:surroundocc/SurroundOcc/tools/generate_occupancy_nuscenes/generate_occupancy_nuscenes.py
在这里插入图片描述

2. 理解 builder

2.1 、程序结构概览

本文旨在解析 mmdetection 中模型构建的过程,特别是 train.py 中的模型构建部分。模型的构建通过以下函数调用实现:

model = build_detector(
    cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)

该函数有三个主要参数,分别对应模型的配置文件、训练配置文件和测试配置文件。以 faster_rcnn_r50_fpn_1x.py 为例,这些参数的解析如下:

  • cfg.model:

    {
         
      'type': 'FasterRCNN', 
      'pretrained': 'modelzoo://resnet50', 
      'backbone': {
         
          'type': 'ResNet', 
          'depth': 50, 
          'num_stages': 4, 
          'out_indices': (0, 1, 2, 3), 
          'frozen_stages': 1, 
          'style': 'pytorch'
      }, 
      'neck': {
         
          'type': 'FPN', 
          'in_channels': [256, 512, 1024, 2048], 
          'out_channels': 256, 
          'num_outs': 5
      }, 
      'rpn_head': {
         
          'type': 'RPNHead', 
          'in_channels': 256, 
          'feat_channels': 256, 
          'anchor_scales': [8], 
          'anchor_ratios': [0.5, 1.0, 2.0], 
          'anchor_strides': [4, 8, 16, 32, 64], 
          'target_means': [0.0, 0.0, 0.0, 0.0], 
          'target_stds': [1.0, 1.0, 1.0, 1.0], 
          'use_sigmoid_cls': True
      }, 
      'bbox_roi_extractor': {
         
          'type': 'SingleRoIExtractor', 
          'roi_layer': {
         'type': 'RoIAlign', 'out_size': 7, 'sample_num': 2}, 
          'out_channels': 256, 
          'featmap_strides': [4, 8, 16, 32]
      }, 
      'bbox_head': {
         
          'type': 'SharedFCBBoxHead', 
          'num_fcs': 2, 
          'in_channels': 256, 
          'fc_out_channels': 1024, 
          'roi_feat_size': 7, 
          'num_classes': 81, 
          'target_means': [0.0, 0.0, 0.0, 0.0], 
          'target_stds': [0.1, 0.1, 0.2, 0.2], 
          'reg_class_agnostic': False
      }
    }
    
  • train_cfg:

    {
         
      'rpn': 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敢敢のwings

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值