win10-maskrcnn-benchmark使用文档

文章目录

  • 一、项目简介
  • 二、项目源码结构
  • 三、程序源代码安装与使用
  • 四、参考(acknowledgement)

一、项目简介

  本程序源自于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版本。
win10-maskrcnn-benchmark使用文档_第1张图片

  • 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中数据集的路径,
    win10-maskrcnn-benchmark使用文档_第2张图片
    即在DATASETS字典内添加新数据集的路径,注意数据集的键名必须带有coco字眼儿,
    win10-maskrcnn-benchmark使用文档_第3张图片
  • 3.修改configs/*.yaml配置参数,
  • 4.训练 tools/train_net.py, 选择配置参数和指定的gpu来运行程序(本地电脑只有1gpudevice id0
    win10-maskrcnn-benchmark使用文档_第4张图片
  • 5.测试 运行test_net.py,如果要获得每个模型的AP和AR评估指标(以便获得性能最好的模型),则取消注释test_net.pymain()上装饰器,
    win10-maskrcnn-benchmark使用文档_第5张图片

四、参考(acknowledgement)

  1. win10下maskrcnn-benchmark的搭建
  2.facebookresearch/maskrcnn-benchmark
  3.detectron2

你可能感兴趣的:(编程随笔,目标检测,机器视觉)