【代码研读】Mask RCNN代码阅读笔记(一)总览篇

前言:

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 #配置文件 
├── 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
│   │   ├── cuda

│   │   ├── 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
│   │   └── transforms #数据增强
│   │       ├── build.py
│   │       ├── __init__.py
│   │       └── transforms.py

│   ├── engine#推演代码
│   │   ├── bbox_aug.py
│   │   ├── inference.py #测试时的核心代码
│   │   ├── __init__.py
│   │   └── trainer.py 	#训练的核心代码
│   ├── __init__.py

│   ├── layers
│   │   ├── batch_norm.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
│   │   │   ├── 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定义一个结构体,内含gt
│   │   ├── boxlist_ops.py #为boxlist的一系列操作,包含boxlist的nms
│   │   ├── image_list.py #为批处理图片规定一个数据结构
│   │   ├── __init__.py
│   │   ├── keypoint.py #关键点结构体
│   │   └── segmentation_mask.py #mask类型的定义

│   └── 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系列博客】
【个人主页的系列博客】

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值