mask-rcnn作为如今领域流行的代码框架,被广泛应用,为了学习的需要,结合网上的教程,写了以下的代码研读笔记
阅读的代码为:mask-rcnn benchmark
【github地址】
后期会根据自己对代码的理解,进行不定期的续更这个代码的阅读笔记,请大家期待一下哦~
1.骨架网络【backbone.py及代码入口】
2.RPN层【粗分割的rpn.py】
3.ROI_HEAD【实现各个分支】
4.其他辅助代码杂会【其他】
mask-rcnn核心代码方面主要分为三个部分:
backbone(骨架特征提取网络)+
rpn(粗分类的区域提议网络)+
roi_head(实现各部分功能的集成模块,如mask/detction等)
涉及的内部代码实现包括:
backbone: Resnet/FPN/retinanet等基础模型的核心代码:
RPN
Fast-RCNN,RCNN,和mask-rcnn的对应代码
为便于阅读,删除部分文件
├── configs #设置
├── demo
├── docker #用docker配置对应的环境
├── maskrcnn_benchmark
│ ├── config
│ ├── csrc
│ ├── data#数据处理文件
│ ├── engine#推演代码
│ ├── layers
│ ├── modeling#该工程核心代码(应被详细介绍)
│ │ ├── backbone #特征提取网络
│ │ ├── roi_heads #理解为模型实现对应任务的模块
│ │ ├── rpn #粗分类阶段
│ ├── solver
│ ├── structures # 定义了许多检测模式使用的数据结构, 如 BoxList, ImageList 等,
│ └── utils
├── tests
├── tools #一些图像处理的函数
为便于阅读,删除部分文件
├── configs #配置文件
│ ├── caffe2
│ │ ├── e2e_faster_rcnn_R_101_FPN_1x_caffe2.yaml
│ │ └── e2e_mask_rcnn_X-152-32x8d-FPN-IN5k_1.44x_caffe2.yaml
│ ├── cityscapes
│ │ ├── e2e_faster_rcnn_R_50_FPN_1x_cocostyle.yaml
│ │ ├── e2e_mask_rcnn_R_50_FPN_1x_cocostyle.yaml
│ │ └── README.md
│ ├── dcn
│ │ ├── e2e_faster_rcnn_dconv_R_50_FPN_1x.yaml
│ │ └── README.md
│ ├── e2e_faster_rcnn_fbnet_600.yaml
│ ├── gn_baselines
│ │ ├── e2e_faster_rcnn_R_50_FPN_1x_gn.yaml
│ │ ├── README.md
│ │ ├── scratch_e2e_faster_rcnn_R_50_FPN_3x_gn.yaml
│ ├── pascal_voc
│ │ ├── e2e_faster_rcnn_R_50_C4_1x_1_gpu_voc.yaml
│ ├── quick_schedules
│ │ ├── e2e_faster_rcnn_R_50_C4_quick.yaml
│ │ ├── rpn_R_50_C4_quick.yaml
│ │ └── rpn_R_50_FPN_quick.yaml
│ ├── retinanet
│ │ ├── retinanet_R-101-FPN_1x.yaml
│ ├── rpn_R_101_FPN_1x.yaml
│ ├── rpn_X_101_32x8d_FPN_1x.yaml
│ └── test_time_aug
│ └── e2e_mask_rcnn_R_50_FPN_1x.yaml
├── CONTRIBUTING.md
├── demo #演示
│ ├── Mask_R-CNN_demo.ipynb
│ ├── panoptic_segmentation_shapes_dataset_demo.ipynb
│ ├── predictor.py #预测
│ ├── README.md
│ ├── shapes_dataset_demo.ipynb
│ ├── shapes_pruning.ipynb
│ └── webcam.py #网页演示
├── docker #用docker配置对应的环境
│ ├── Dockerfile
│ └── docker-jupyter
│ ├── Dockerfile
│ └── jupyter_notebook_config.py
├── maskrcnn_benchmark
│ ├── config #配置
│ │ ├── defaults.py
│ │ ├── __init__.py
│ │ └── paths_catalog.py 数据集目录定义
│ ├── csrc
│ │ ├── cpu
│ │ │ ├── nms_cpu.cpp
│ │ │ ├── ROIAlign_cpu.cpp
│ │ │ └── vision.h
│ │ ├── cuda
│ │ │ ├── deform_conv_cuda.cu
│ │ │ ├── deform_conv_kernel_cuda.cu
│ │ │ ├── deform_pool_cuda.cu
│ │ │ ├── deform_pool_kernel_cuda.cu
│ │ │ ├── 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
│ ├── data#数据处理文件
│ │ ├── build.py
│ │ ├── collate_batch.py
│ │ ├── datasets
│ │ │ ├── abstract.py
│ │ │ ├── coco.py
│ │ │ ├── concat_dataset.py
│ │ │ ├── evaluation
│ │ │ │ ├── coco
│ │ │ │ │ ├── coco_eval.py
│ │ │ │ │ └── __init__.py
│ │ │ │ ├── __init__.py
│ │ │ │ └── voc
│ │ │ │ ├── __init__.py
│ │ │ │ └── voc_eval.py
│ │ │ ├── __init__.py
│ │ │ ├── list_dataset.py
│ │ │ └── voc.py
│ │ ├── __init__.py
│ │ ├── README.md
│ │ ├── samplers
│ │ │ ├── distributed.py
│ │ │ ├── grouped_batch_sampler.py
│ │ │ ├── __init__.py
│ │ │ └── iteration_based_batch_sampler.py
│ │ └── transforms #数据增强
│ │ ├── build.py
│ │ ├── __init__.py
│ │ └── transforms.py
│ ├── engine#推演代码
│ │ ├── bbox_aug.py
│ │ ├── inference.py #测试时的核心代码
│ │ ├── __init__.py
│ │ └── trainer.py #训练的核心代码
│ ├── __init__.py
│ ├── layers
│ │ ├── batch_norm.py
│ │ ├── dcn
│ │ │ ├── deform_conv_func.py
│ │ │ ├── deform_conv_module.py
│ │ │ ├── deform_pool_func.py
│ │ │ ├── deform_pool_module.py
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ ├── misc.py
│ │ ├── nms.py
│ │ ├── roi_align.py
│ │ ├── roi_pool.py
│ │ ├── sigmoid_focal_loss.py
│ │ ├── smooth_l1_loss.py
│ │ └── _utils.py
│ ├── modeling#该工程核心代码(应被详细介绍)
│ │ ├── backbone
│ │ │ ├── backbone.py
│ │ │ ├── fbnet_builder.py
│ │ │ ├── fbnet_modeldef.py
│ │ │ ├── fbnet.py
│ │ │ ├── fpn.py
│ │ │ ├── __init__.py
│ │ │ └── resnet.py
│ │ ├── balanced_positive_negative_sampler.py #正负样本平衡
│ │ ├── box_coder.py #候选框的类
│ │ ├── detector
│ │ │ ├── detectors.py #检测的代码入口
│ │ │ ├── generalized_rcnn.py #生成各种组合的检测模型
│ │ │ └── __init__.py
│ │ ├── __init__.py
│ │ ├── make_layers.py
│ │ ├── matcher.py #候选框和gt的匹配·
│ │ ├── poolers.py
│ │ ├── registry.py #注册定义的模块信息入字典
│ │ ├── roi_heads
│ │ │ ├── box_head #回归框任务
│ │ │ │ ├── box_head.py #主函数
│ │ │ │ ├── inference.py #后处理,推理
│ │ │ │ ├── __init__.py
│ │ │ │ ├── loss.py #计算损失
│ │ │ │ ├── roi_box_feature_extractors.py
│ │ │ │ └── roi_box_predictors.py #对候选框进行预测
│ │ │ ├── __init__.py
│ │ │ ├── keypoint_head
│ │ │ │ ├── inference.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── keypoint_head.py
│ │ │ │ ├── loss.py
│ │ │ │ ├── roi_keypoint_feature_extractors.py
│ │ │ │ └── roi_keypoint_predictors.py
│ │ │ ├── mask_head
│ │ │ │ ├── inference.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── loss.py
│ │ │ │ ├── mask_head.py
│ │ │ │ ├── roi_mask_feature_extractors.py
│ │ │ │ └── roi_mask_predictors.py
│ │ │ └── roi_heads.py
│ │ ├── rpn #粗分类
│ │ │ ├── anchor_generator.py #生成锚框
│ │ │ ├── inference.py #后处理
│ │ │ ├── __init__.py
│ │ │ ├── loss.py
│ │ │ ├── retinanet
│ │ │ │ ├── inference.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── loss.py
│ │ │ │ └── retinanet.py
│ │ │ ├── rpn.py
│ │ │ └── utils.py
│ │ └── utils.py
│ ├── solver
│ │ ├── build.py
│ │ ├── __init__.py
│ │ └── lr_scheduler.py
│ ├── structures
│ │ ├── bounding_box.py
│ │ ├── boxlist_ops.py
│ │ ├── image_list.py
│ │ ├── __init__.py
│ │ ├── keypoint.py
│ │ └── segmentation_mask.py
│ └── utils
│ ├── c2_model_loading.py
│ ├── checkpoint.py
│ ├── collect_env.py
│ ├── comm.py
│ ├── cv2_util.py
│ ├── env.py
│ ├── imports.py
│ ├── __init__.py
│ ├── logger.py
│ ├── metric_logger.py
│ ├── miscellaneous.py
│ ├── model_serialization.py
│ ├── model_zoo.py
│ ├── README.md
│ ├── registry.py
│ └── timer.py
├── MODEL_ZOO.md
├── README.md
├── requirements.txt
├── setup.py
├── tests
│ ├── checkpoint.py
│ ├── env_tests
│ │ └── env.py
│ ├── test_backbones.py
│ ├── test_box_coder.py
│ ├── test_configs.py
│ ├── test_data_samplers.py
│ ├── test_detectors.py
│ ├── test_fbnet.py
│ ├── test_feature_extractors.py
│ ├── test_metric_logger.py
│ ├── test_nms.py
│ ├── test_predictors.py
│ ├── test_rpn_heads.py
│ ├── test_segmentation_mask.py
│ └── utils.py
├── tools
│ ├── cityscapes
│ │ ├── convert_cityscapes_to_coco.py
│ │ └── instances2dict_with_polygons.py
│ ├── test_net.py
│ └── train_net.py
└── TROUBLESHOOTING.md
43 directories, 244 files
找了很多资料,给出了两个参考连接,感觉写的很好很详细:
【CSDN系列博客】
【个人主页的系列博客】