PolarMask代码阅读小结

项目背景

论文:https://arxiv.org/abs/1909.13226

源码:https://github.com/xieenze/PolarMask

mmdetection简介

1 MMdetection的主要特点:

  • 模块化设计,将检测框架分解为不同的组件,通过将不同的组件组合起来可以轻易地构建出经典的检测框架;
  • 支持多个框架,开箱即用,例如Faster RCNN、Mask RCNN、RetinaNet等
  • 高效,所有的bbox和mask都在GPU上进行运算

2 组件的四种类型

  • backone,通常是FCN网络,用于提取特征图,如ResNet
  • neck,backbone和heads之间的部分,例如FPN,ASPP
  • head,用于特定任务的部分,例如bbox预测和mask预测
  • roi extractor,用于从特征图中提取特征部分,例如RoI Align

3 一些理解

使用基本组件建立模型

  • 遵循一些基本检测流程(例如two-stage detectors),可以通过配置文件的方式轻松定制模型结构。也可以设计自己的backbone、neck、head、roi extractor等组件,用于定制自己的detector。具体的可以参见帮助文档
  • 实现一个新的组件,例如the path aggregation FPN结构pafpn.py
      (1)在mmdet/models/necks/pafpn.py里编写PAFPN网络结构
      (2)在mmdet/models/necks/init.py里from.pafpn import PAFPN,对组件进行注册引用
      (3)修改config文件,将neck部分的FPN改成定制的PAFPN,这样这个便完成了FPN的个性化修改。
      (4)其它部分组件的修改backbones,neck,heads与上面相同
  • 写一个新的全新的detector,需要编写一个新的技术路线,继承BaseDetector,必须定义以下abstract method:
      (1) extract_feat()
      (2)forward_train()
      (3)simple_test()
      (4)aug_test()
    具体的写法有需要的时候可以参考TwoStageDetector

PolarMask安装

安装script

# Create a conda virtual environment and activate it. Then install Cython.
conda create -n open-mmlab python=3.7 -y
conda activate open-mmlab
conda install cython

# Install PyTorch stable 
# eg:conda install pytorch torchvision cudatoolkit=9.2 -c pytorch

#  Clone the mmdetection repository and install.
git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection

# install
pip install -r requirements.txt
python setup.py develop
# or "pip install -v -e ."

# go to the PolarMask root dir and install
cd PolarMask
python setup.py develop
# or "pip install -v -e ."

安装过程报错

  • No module named 'Polygon‘:
    pip install Polygon3
  • cannot import name ‘get_dist_info’ from ‘mmcv.runner.utils’: PolarMask/mmdet/datasets/loader/sampler.py中from mmcv.runner.utils import get_dist_info变为from mmcv.runner import get_dist_info

PolarMask项目架构

项目构架图

在这里插入图片描述

key repository structure

├── config
│   ├── polarmask
│   │   ├── 4gpu	# polarmask模型的配置文件,xxx.py
│   │   ├── 32gpu
├── demo
├── imgs
├── mmdet
│   ├── apis
│   ├── core
│   ├── datasets # model builder
│   │   ├── loader
│   │   ├── coco_seg.py	# 将coco数据集转为polar representation的核心代码
│   │   ├── coco_seg_fast.py
│   ├── models  
│   │   ├── anchor_heads
│   │   │	├── polarmask_head.py
│   │   ├── detectors
│   │   │	├── polarmask.py	# polarmask的网络构架搭建
│   ├── ops
│   ├── utils
└── README.md

参考资料

Guess you like

Origin blog.csdn.net/PAN_Andy/article/details/105343673