1. 简介
Detectron2是Facebook AI Research(FAIR)推出的基于Pytorch 的视觉算法开源框架,主要聚焦于目标检测和分割任务等视觉算法,此外还支持全景分割,关键点检测,旋转框检测等任务。Detectron2继承自Detectron 和mask-rcnn 。 Detectron2具有较强的灵活性和可扩展性,支持快速的单GPU训练,多GPU并行训练和多节点分布式训练。
2. 模块化和可扩展性
Detectron2 将常见的算法组件模块化,通过更换不同的组件可实现不同算法组合和算法任务,如不同的backbone:Resnet,Vit,Swin,再通过可选的Proposals得到图像特征,最后接上不同任务的Head,以支持特定的任务。如图中所示的BBox检测,实例分割,关键点检测,Densepose,语义分割,全景分割。
3. 配置文件系统 Lazy Configs
更新的Detectron2采用了非侵入式的配置文件系统,使用起来更为灵活。Config类为key-value形式的字典,可通过python脚本 直接得到,该方案相比于传统Yaml配置文件的优点包括:
方便通过python操作 可以写简单的语法,调用简单的函数 使用更多的数据类型 通过python import机制方便导入/导出其他的配置文件
示例
a = dict ( x= 1 , y= 2 , z= dict ( xx= 1 ) )
b = dict ( x= 3 , y= 4 )
from detectron2. config import LazyConfig
cfg = LazyConfig. load( "path/to/config.py" )
assert cfg. a. z. xx == 1
LazyConfig 通过递归实例化(recursive instantiation)特性将函数和类的调用以字典的形式描述,避免大的配置文件出现在不同位置。
4. 工程部署
基于python训练的模型可以通过导出操作成为一个可部署件,在其他的语言(如C++)程序中应用部署。 Detectron2支持的模型导出方法包括:
tracing scripting caffe2_tracing
导出的模型可以序列化成中间件(intermediate representation)被其他运行时(Runtime)加载和执行。 Detectron2可以将模型导出为TorchScript 格式,通过python和C++运行(依赖Pytorch运行时),此外还可以导出为ONNX模型通过ONNX-runtime 运行,同时支持python和C++。
5. 基于Detectron2的部分项目
DensePose: Dense Human Pose Estimation In The Wild Scale-Aware Trident Networks for Object Detection TensorMask: A Foundation for Dense Object Segmentation Mesh R-CNN PointRend: Image Segmentation as Rendering Momentum Contrast for Unsupervised Visual Representation Learning DETR: End-to-End Object Detection with Transformers Panoptic-DeepLab: A Simple, Strong, and Fast Baseline for Bottom-Up Panoptic Segmentation D2Go (Detectron2Go),an end-to-end production system for training and deployment for mobile platforms. ,Pointly-Supervised Instance Segmentation Unbiased Teacher for Semi-Supervised Object Detection Rethinking “Batch” in BatchNorm Per-Pixel Classification is Not All You Need for Semantic Segmentation Exploring Plain Vision Transformer Backbones for Object Detection MViTv2: Improved Multiscale Vision Transformers for Classification and Detection AdelaiDet,a detection toolbox including FCOS, BlendMask, etc. ,CenterMask Res2Net backbones VoVNet backbones FsDet,Few-Shot Object Detection. Sparse R-CNN BCNet,a bilayer decoupling instance segmentation method. ,DD3D,A fully convolutional 3D detector. ,detrex,a detection toolbox for transformer-based detection algorithms including Deformable-DETR, DAB-DETR, DN-DETR, DINO, etc. ,
6. 资源链接
代码链接-https://github.com/facebookresearch/detectron2 官方文档-https://detectron2.readthedocs.io/en/latest/tutorials/getting_started.html 官方教程-colab 官方博客 视频资源1 视频-资源2