一、项目简介
本程序源自于facebookresearch/maskrcnn-benchmark,进行相关修改调整并简化重构,并应用于肺结节检测。该项目程序主要基于pytorch(<=)1.1.0
深度学习框架和torchvision0.3.0
视觉工具包实现。
maskrcnn-benchmark has been deprecated. Please see detectron2, which includes implementations for all models in maskrcnn-benchmark
maskrcnn-benchmark现在已经移植入detectron2并停止维护更新了,相比detectron2结构更简单,支持的骨干网络和检测模型也相对少一些,简单的结构学习成本小,可供研究学习用。
二、项目源码结构
该项目重构maskrcnn-benchmark
,并将核心模块自定义命名为detectron
,整个检测模块的结构如下,
detectron/
config/
# 关于模型参数已经数据集相关路径的配置
defaults.py
使用yacs工具包实现的配置器,支持使用yaml文件灵活更新配置器
paths_catalog.py
数据集相关参数(包括路径等)的配置
csrc/
包含nms算法,形变卷积核,Focal Loss,以及roi align等的cpu和cuda实现
data/
包含coco,voc风格的抽象数据集类的实现,和评估脚本以及数据增强transforms
engine/
包含前向传播的推理过程和反向传播的训练器
inference.py
前向传播推理及评估数据集
trainer.py
高度封装的模型训练器
layers/
batch_norm.py
sigmoid_focal_loss.py
smooth_l1_loss.py
nms.py
roi_align.py
model/
backbone/
包含resnet, vgg, fpn的实现
detector/
将各个组件组合为一个通用的frcnn检测模型
roi_heads/
包含边框预测头部和mask预测头部
rpn/
region proposals network
solver/
学习率调度器的实现
structures/
包含边框的编解码,iou,nms计算,以及输入batch的高度封装image_list(将大小不一的输入变换成size一致的batch tensors)
utils/
包含模型的保存和加载,日志器,迁移学习模型等的实现
setup.py
三、程序源代码安装与使用
安装过程
可参考maskrcnn-benchmark/INSTALL.md(win10下并没有使用apex
加速,可不安装apex
)
- 1.安装依赖工具包
- 官方原生的
pycocotools
不支持win10,可安装win10版的cocoapi
(已在压缩包detection-master
中包含)cd cocoapi/
python setup.py install
- 官方原生的
- 2.
pip install ninja yacs cython matplotlib tqdm opencv-python
- 3.
conda install -c pytorch=1.1.0 torchvision=0.3.0 cudatoolkit=9.2
maskrcnn-benchmark官方实现的win10版本。
- 4.安装
detectron
cd detection-master/
python setup.py build develop
使用
- 1.构建数据集,数据集存放于
datasets/luna16/
文件夹datasets/luna16/
按照coco数据集的格式来生成标注信息,即.json文件,如下
"annotations": [ { "category_id": 1, "height": 512, "width": 512, "area": 203, "id": 1, "segmentation": [ [ 127.0, 215.5, 123.5, 215.0, 120.5, 203.0, 125.0, 197.5, 131.0, 197.5, 130.5, 200.0, 136.5, 203.0, 136.5, 211.0, 127.0, 215.5 ], [ 126.5, 201.0, 128.5, 200.0, 126.5, 201.0 ] ], "iscrowd": 0, "image_id": 1, "bbox": [ 121.0, 198.0, 16.0, 18.0 ] },
annotations/instance_nodule_train.json
annotations/instance_nodule_test.json
train/
存放训练数据集的图片,类似于000001.png
test/
val/
- 2.修改
paths_catalog.py
中数据集的路径,
即在DATASETS
字典内添加新数据集的路径,注意数据集的键名必须带有coco
字眼儿,
- 3.修改
configs/*.yaml
配置参数, - 4.训练
tools/train_net.py
, 选择配置参数和指定的gpu
来运行程序(本地电脑只有1
块gpu
,device id
为0
)
- 5.测试 运行
test_net.py
,如果要获得每个模型的AP和AR评估指标(以便获得性能最好的模型),则取消注释test_net.py
中main()
上装饰器,
四、参考(acknowledgement)
1. win10下maskrcnn-benchmark的搭建
2.facebookresearch/maskrcnn-benchmark
3.detectron2