[开源框架]mmdetection3d学习(一):初步认识
mmdetection3d
mmdetection3d 是 mmdetection 的 3D 版本,近期刚开源。
源码地址 https://github.com/open-mmlab/mmdetection3d
官方文档 https://mmdetection3d.readthedocs.io/en/latest/
新一代3D目标检测通用框架 https://zhuanlan.zhihu.com/p/165647329
框架结构
mmdetection3d
-
config: 各种模型、数据集的配置参数文件
-
tools: 常用脚本,包括最顶层的
train.py
,test.py
等 -
tests: 各个模块组件的单元测试代码
-
data: 存放数据集的目录,可以放一些 demo 样本,或建立 soft link 到数据集的根目录
-
mmdet3d: 核心代码
- apis: 一般是
train.py
,test.py
等,在最外层的脚本里调用到这里面的文件。 - core: 核心代码,常被其他模块调用。
- dataset: 各数据集的定义,以及处理数据集到载入网络的pipeline,可理解为预处理过程。
- models: 将网络划分为 backbone + neck + head.
- backbone 负责提取特征,比如 ResNet
- neck 比如 FPN ,可以省略
- head 负责得到最终预测结果、计算损失。其中 head 又分为 dense_head , roi_head , 分别对应一阶段的检测网络和二阶段的检测网络。
- detectors 则是整个网络的完整定义。
- 还有许多不同网络各自的小组件。
- ops: 自定义的 torch op,基本都有相应的
cpp
和cuda
的实现。
- apis: 一般是
mmdetection3d从配置文件中加载所有参数,包括网络结构的定义、所选取的数据集、数据如何加载(加载哪些样本、如何对加载样本做预处理)、训练参数。注意配置文件之间存在继承关系,读某一配置文件觉得不齐全的时候可以去看一下它继承的配置文件。
代码中涉及到的模块会用到注册器注册。
结构大体上与mmdet类似,不过目前mmdet3d资料还比较少,很多没太搞懂的地方都是去搜索mmdet相关的资料才能理解。