文章目录
1. Project 的结构
maskrcnn-benchmark
|
|_ configs # 保存配置文件
|_ demo # Demo展示
|_ docker # Docker安装使用
|_ maskrcnn_benchmark # 核心代码
|_ maskrcnn_benchmark.egg-info # 编译产物
|_ tests # 源码测试代码
|_ tools= # 训练和测试脚本
|_ ABSTRACTIONS.md # 介绍 ImageList 和 BoxList
|_ CODE_OF_CONDUCT.md # 代码参与者守则
|_ CONTRIBUTING.md # 项目贡献者守则
|_ INSTALL.md # 安装说明
|_ LICENSE # 许可协议
|_ MODEL_ZOO.md # 预训练模型及其指标
|_ README.md # 项目说明文档
|_ requirements.txt # 项目依赖
|_ setup.py # 项目安装程序
|_ TROUBLESHOOTING.md # 常见问题
2. configs 目录
maskrcnn-benchmark
|
|_ configs # 配置文件
|
|_ caffe2
| |
| |_
|
|_ cityscapes
|_ dcn
|_ gn_baselines
|_ pascal_voc
|_ quick_schedules
|_ retinanet
|_ test_time_aug
|
|_ e2e_faster_rcnn_fbnet.yaml
|_ e2e_faster_rcnn_fbnet_600.yaml
|_ ...
|_ ...
|_ rpn_X_101_32x8d_FPN_1x.yaml
3. maskrcnn_benchmark 目录
../maskrcnn_benchmark/maskrcnn_benchmark/
是项目源码目录,import maskrcnn_benchmark
语句导入的既是该目录下的内容.
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ config # 配置文件接口
|_ csrc # 部分cpp或cuda实现
|_ data # 数据接口,包括评价指标的代码实现
|_ engine # 训练和测试模型的函数
|_ layers # 项目自定义的网络层代码
|_ modeling # 构建网络模型的代码
|_ solver # 构建训练优化器的代码
|_ structures # 检测框、关键点等术语的实现
|_ utils # 训练网络的工具组件
|_ __init__.py
|_ _C.cpython-36m-x86_64-linux-gnu.so # 由`csrc`编译得到
3.1 config 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ config # 配置文件接口
|
|_ __init__.py
|_ defaults.py # 全部配置信息,配置文件接口
|_ path_catalog.py # 数据文件路径接口,权重文件路径接口
(1) defaults.py
文件
defaults.py
定义了配置文件的格式和信息,并设置了默认配置信息,基于 yacs 和 pyyaml(yaml 的 python 库).
不要修改 defaults.py
文件.
(2)path_catalog.py
文件
path_catalog.py
文件主要有两个作用:
- 定义数据集的接口,并设置了 COCO 和 VOC 的默认接口格式;添加自定义数据集需要在此文件增加代码.
- 获取下载模型初始权重的 URL,并将权重文件缓存在
~/.torch/modles/
.
3.2 scrc 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|_ csrc # cpp 源码
|
|_ cpu # cpu 实现
| |_ nms_cpu.cpp
| |_ ROIAlign_cpu.cpp
| |_ vision.h
|
|_ cuda # gpu 实现
| |_ nms.cu
| |_ ROIAlign_cuda.cu
| |_ ROIPool_cuda.cu
| |_ SigmoidFocalLoss_cuda.cu
| |_ vision.h
|
|_ deform_conv.h
|_ deform_pool.h
|_ nms.h
|_ ROIAlign.h
|_ ROIPool.h
|_ SigmoidFocalLoss.h
|_ vision.cpp
3.3 data 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ data # 定义 data pipe
|
|_ datasets # 定义 Dataset
| |
| |_ evaluation # 定义对应 Dataset 的评价方式的代码
| | |
| | |_ cityscapes
| | | |
| | | |_ __init__.py
| | | |_ cityscapes_eval.py
| | | |_ eval_instances.py
| | |
| | |_ coco
| | | |
| | | |_ __init__.py
| | | |_ abs_to_coco.py
| | | |_ coco_eval.py
| | | |_ coco_eval_wrapper.py
| | |
| | |_ voc
| | | |
| | | |_ __init__.py
| | | |_ voc_eval.py
| | |
| | |_ __init__.py
| |
| |_ __init__.py
| |_ abstract.py
| |_ cityscapes.py
| |_ coco.py
| |_ concat_dataset.py
| |_ list_dataset.py
| |_ voc.py
|
|_ samplers # 定义 samplers
| |_ __init__.py
| |_ distributed.py
| |_ grouped_batch_sampler.py
| |_ iteration_based_batch_sampler.py
|
|_ transforms # 定义 transforms
| |_ __init__.py
| |_ build.py
| |_ transforms.py
|
|_ __init__.py
|_ build.py
|_ collate_batch.py
|_ README.md
3.4 engine 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ engine #
|
|_ __init__.py
|_ bbox_aug.py
|_ inference.py # 推理或评价代码
|_ trainer.py # 训练代码
3.5 layers 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ layers #
|
|_ dcn
| |
| |_ __init__.py
| |_ deform_conv_func.py
| |_ deform_conv_module.py
| |_ deform_pool_func.py
| |_ deform_pool_module.py
|
|_ __init__.py
|_ _utils.py
|_ batch_norm.py
|_ misc.py
|_ nms.py
|_ roi_align.py
|_ roi_pool.py
|_ sigmoid_focal_loss.py
|_ smooth_l1_loss.py
3.6 modeling 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ modeling #
|
|_ backbone
| |
| |_ __init__.py
| |_ backbone.py
| |_ fbnet.py
| |_ fbnet_builder.py
| |_ fbnet_modeldef.py
| |_ fpn.py
| |_ resnet.py
|
|_ detector
| |
| |_ __init__.py
| |_ detectors.py
| |_ generalized_rcnn.py
|
|_ roi_heads
| |
| |_ box_head
| | |
| | |_ __init__.py
| | |_ box_head.py
| | |_ inference.py
| | |_ loss.py
| | |_ roi_box_feature_extractors.py
| | |_ roi_box_predictors.py
| |
| |_ keypoint_head
| | |
| | |_ __init__.py
| | |_ inference.py
| | |_ keypoint_head.py
| | |_ loss.py
| | |_ roi_keypoint_feature_extractors.py
| | |_ roi_keypoint_predictors.py
| |
| |_ mask_head
| | |
| | |_ __init__.py
| | |_ inference.py
| | |_ loss.py
| | |_ mask_head.py
| | |_ roi_mask_feature_extractors.py
| | |_ roi_mask_predictors.py
| |
| |_ __init__.py
| |_ roi_heads.py
|
|_ rpn
| |
| |_ retinanet
| | |
| | |_ __init__.py
| | |_ inference.py
| | |_ loss.py
| | |_ retinanet.py
| |
| |_ __init__.py
| |_ anchor_generator.py
| |_ inference.py
| |_ loss.py
| |_ rpn.py
| |_ utils.py
|
|_ __init__.py
|_ balanced_positive_negative_sampler.py
|_ box_coder.py # 推理或评价代码
|_ make_layers.py # 训练代码
|_ matcher.py
|_ poolers.py
|_ registry.py
|_ utils.py
3.7 solver 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|_ solver
|_ __init__.py
|_ build.py
|_ lr_scheduler.py
(1) lr_scheduler.py
文件
lr_scheduler.py
文件定义了 WarmupMultiStepLR
,基于 torch.optim.lr_scheduler._LRScheduler
。训练时可以使用 warm up.
(2)build.py
文件
build.py
文件定义了函数 make_optimizer
和 make_lr_scheduler
.
函数 make_optimizer
返回一个 SGD 优化器(torch.optim.SGD
).
函数 make_lr_scheduler
返回一个学习率的 scheduler (WarmupNultiStepLR
).
3.8 structures 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ structures
|
|_ __init__.py
|_ bounding_box.py
|_ boxlist_ops.py
|_ image_list.py
|_ keypoint.py
|_ segmentation_mask.py
3.9 utils 子目录
maskrcnn-benchmark
|
|_ maskrcnn_benchmark # 核心代码
|
|_ utils
|
|_ __init__.py
|_ c2_model_loading.py
|_ checkpoint.py
|_ collect_env.py
|_ comm.py
|_ cv2_util.py
|_ env.py
|_ imports.py
|_ logger.py
|_ metric_logger.py
|_ miscellaneous.py
|_ model_serialization.py
|_ model_zoo.py
|_ README.md
|_ registry.py
|_ timer.py