各种任务场景下的模型配置文件
该文件夹下存放数据集
各个数据集的基本结构要求
关键点检测和实例分割任务的测试集数据预处理
从全景分割标注获取语义分割标注
使用Model ZOO中的预训练好的内置模型快速开始Detectron2
运行内置标准模型
class VisualizationDemo:demo文件可视化
class AsyncPredictor:可以在1个以上的GPU上异步运行模型的预测器。由于呈现可视化需要大量时间,这有助于提高渲染视频时的吞吐量。
项目主要代码,提供各种API
class detectron2.checkpoint.Checkpointer
可以保存/加载模型以及其他可检查点对象的检查点。
class detectron2.checkpoint.PeriodicCheckpointer
定期保存检查点。 调用.step(iteration)时,如果迭代是周期的倍数或达到max_iter,它将在给定的检查指针上执行checkpointer.save。
class detectron2.checkpoint.DetectionCheckpointer
与Checkpointer相同,但能够处理Detectron和Detectron2模型库中的模型,并为旧模型应用转换。
class detectron2.config.CfgNode
模型参数配置,与fvcore.common.config.CfgNode相同,但不同之处在于:
1)默认情况下使用不安全的Yaml加载
请注意,这可能会导致任意代码执行:在手动检查文件内容之前,切勿从不受信任的源中加载配置文件
2)支持配置版本控制
尝试合并旧配置时,它将自动转换旧配置。
detectron2.config.get_cfg()
detectron2.config.set_global_cfg()
detectron2.config.downgrade_config()
detectron2.config.upgrade_config()
detectron2.data.build_detection_test_loader()
detectron2.data.build_detection_train_loader()
detectron2.data.get_detection_dataset_dicts()
detectron2.data.load_proposals_into_dataset()
detectron2.data.print_instances_class_histogram()
class detectron2.data.DatasetCatalog
一个目录,存储有关数据集及其获取方式的信息。
拥有此目录的目的是仅通过使用配置中的字符串即可轻松选择不同的数据集。
class detectron2.data.MetadataCatalog
提供对给定数据集的“元数据”的访问。
它就像全局变量一样,所以不要滥用它。它用于存储在程序执行过程中恒定且共享的知识,例如:COCO中的类名。
class detectron2.data.DatasetFromList(torch.utils.data.dataset.Dataset)
将列表包装成torch数据集。 它产生列表中的元素作为数据。
class detectron2.data.MapDataset(torch.utils.data.dataset.Dataset)
将函数映射到数据集中的元素。
class detectron2.data.DatasetMapper
可调用对象,它从Detectron2 Dataset格式中获取数据集字典,并将其映射为模型使用的格式。
这是默认可调用项,可用于将数据集字典映射到训练数据中。可以遵循它实现自己的自定义逻辑。
该Callable当前执行以下操作:
1)从“ file_name”读取图像
2)将裁剪/几何变换应用于图像和注释
3)准备张量和实例的数据和注释
通用数据处理模块
exception detectron2.data.detection_utils.SizeMismatchError
detectron2.data.detection_utils.read_image()
detectron2.data.detection_utils.check_image_size()
detectron2.data.detection_utils.transform_proposals()
detectron2.data.detection_utils.transform_instance_annotations()
detectron2.data.detection_utils.transform_keypoint_annotations()
detectron2.data.detection_utils.annotations_to_instances()
detectron2.data.detection_utils.annotations_to_instances_rotated()
detectron2.data.detection_utils.filter_empty_instances()
detectron2.data.detection_utils.create_keypoint_hflip_indices()
detectron2.data.detection_utils.gen_crop_transform_with_instance()
detectron2.data.detection_utils.check_metadata_consistency()
detectron2.data.detection_utils.build_transform_gen()
自定义数据集标注和读取标注
detectron2.data.datasets.load_cityscapes_instances()
detectron2.data.datasets.load_coco_json()
detectron2.data.datasets.load_sem_seg()
detectron2.data.datasets.load_lvis_json()
detectron2.data.datasets.register_lvis_instances()
detectron2.data.datasets.get_lvis_instances_meta()
detectron2.data.datasets.register_coco_instances()
detectron2.data.datasets.register_coco_panoptic_separated()
批处理样本的相关操作
class detectron2.data.samplers.GroupedBatchSampler(torch.utils.data.sampler.BatchSampler)
包装另一个sampler来生成mini-batch的索引。它只允许每个batch包含来自同一组的元素,并提供尽可能接近原始sampler顺序的mini-batch
class detectron2.data.samplers.TrainingSampler(torch.utils.data.sampler.Sampler)
在训练中只关心训练数据的“无限流”。 所以此sampler会产生无限量的索引流,并且所有worker将合作以正确地洗排索引并采样不同的索引
class detectron2.data.samplers.InferenceSampler(torch.utils.data.sampler.Sampler)
生成用于推断的索引。推断需要对__exact__组样本进行运算,因此,当样本的总数不能被worker的数量整除时,此采样器将在不同的worker上生成不同数量的样本。
class detectron2.data.samplers.RepeatFactorTrainingSampler(torch.utils.data.sampler.Sampler)
与TrainingSampler相似,但适用于对类不平衡数据集(如LVIS)进行训练。 在每个时期中,图像可能会基于其“重复因子”出现多次。
class detectron2.data.transforms.ExtentTransform
从源图像中提取一个子区域,并将其缩放为输出大小
class detectron2.data.transforms.ResizeTransform
图像尺寸大小缩放至目标尺寸
class detectron2.data.transforms.BlendTransform
使用PIL增强功能变换像素颜色
class detectron2.data.transforms.CropTransform
裁剪
class detectron2.data.transforms.GridSampleTransform
网格采样
class detectron2.data.transforms.HFlipTransform
水平翻转
class detectron2.data.transforms.VFlipTransform
垂直翻转
class detectron2.data.transforms.NoOpTransform
无操作
class detectron2.data.transforms.ScaleTransform
图像尺寸大小缩放至目标尺寸
class detectron2.data.transforms.Transform
图像和其他数据结构的__deterministic__转换实现的基类
class detectron2.data.transforms.TransformList
维护按顺序进行的转换操作列表
class detectron2.data.transforms.RandomBrightness(TransformGen)
随机变换图像亮度
class detectron2.data.transforms.RandomContrast(TransformGen)
随机变换图像对比度
class detectron2.data.transforms.RandomCrop(TransformGen)
从图像中随机裁剪子图像
class detectron2.data.transforms.RandomExtent(TransformGen)
通过裁剪源图像的随机“subrect”来输出图像。
可以将subrect参数化为包括源图像外部的像素,在这种情况下,它们将被设置为零(即黑色)。输出图像的大小将随随机子矩形的大小而变化。
class detectron2.data.transforms.RandomFlip(TransformGen)
以给定概率水平或垂直翻转图像
class detectron2.data.transforms.RandomSaturation(TransformGen)
随机变换图像饱和度
class detectron2.data.transforms.RandomLighting(TransformGen)
使用ImageNet上的固定PCA随机变换图像颜色
class detectron2.data.transforms.Resize(TransformGen)
图像尺寸大小缩放至目标尺寸
class detectron2.data.transforms.ResizeShortestEdge(TransformGen)
将较短的边缩放到给定的大小,在较长的边缘上限制为max_size。如果达到max_size,则应缩小比例,以使较长的边不超过max_size
class detectron2.data.transforms.TransformGen
使用[0,255]范围内的uint8类型图像或[0,1]或[0,255]范围内的浮点作为输入。基于给定的图像创建一个Transform,有时是随机的。 然后可以使用该变换来变换图像或与其关联的其他数据(框,点,注释等)。
detectron2.data.transforms.apply_transform_gens()
在输入图像上应用TransformGen列表,然后返回转换后的图像和转换列表
detectron2.engine.launch() #建立engine
class detectron2.engine.HookBase
hook基类,可在TrainerBase类中注册hook
class detectron2.engine.TrainerBase
带有hook的训练迭代器的基类
class detectron2.engine.SimpleTrainer(TrainerBase)
最常见任务类型的简单训练器:单一代价、单一优化器、单一数据源迭代优化
可以继承TrainerBase并实现自己的run_step,或者编写自己的训练循环
该文件包含一些用户可能在训练/测试中需要的默认样板逻辑组件。 它们并不适合所有人,但许多用户可能会发现它们很有用。
此文件中功能/类的行为可能会更改,因为它们用于表示人们在项目中所需要“常见默认行为”
detectron2.engine.defaults.default_argument_parser()
#创建一个带有常用参数的解析器
detectron2.engine.defaults.default_setup()
#在任务开始时执行一些基本的常见设置,包括:设置detectron2记录器logger,记录环境、cmdline参数和配置的基本信息,将配置备份到输出目录
class detectron2.engine.defaults.DefaultPredictor
使用给定的配置创建一个简单的端到端预测器,该配置在单个设备上针对单个输入图像运行。 预测器获取BGR图像,将其调整为指定的分辨率,运行模型并生成预测结果
该预测器将会处理模型加载和输入预处理。如果想做更多其他事情可手动构建和使用模型。
class detectron2.engine.defaults.DefaultTrainer(SimpleTrainer)
带有默认训练逻辑的训练器
与SimpleTrainer相比,它还具有额外的逻辑:根据给定配置创建model, optimizer, scheduler, dataloader,读取checkpoint或者cfg.MODEL.WEIGHTS,注册一些通用hook
它的创建是为了简化标准模型培训工作流程,并为仅需要标准训练工作流程且具有标准功能的用户减少代码样板。此类代码已注释了其所作的限制性假设,当这些不适合目前研究时,建议:
1)重载该类的方法
2)使用SimpleTrainer,它仅进行最简单的SGD训练,然后可以根据需要添加自己的hook
3)编写类似于tools / plain_train_net.py的自己的训练循环。
class detectron2.engine.hooks.CallbackHook(HookBase)
使用用户提供的回调函数创建一个hook
class detectron2.engine.hooks.IterationTimer(HookBase)
追踪每次迭代所花费的时间(训练器中的每个run_step调用),在训练结束时打印摘要。
class detectron2.engine.hooks.PeriodicWriter(HookBase)
定期将事件写入EventStorage,它在每个周期迭代和最后一次迭代之后执行。
class detectron2.engine.hooks.PeriodicCheckpointer(HookBase)
注意当作为hook使用时,除了给定checkpoint的定义以外无法保存其他数据,它在每个周期迭代和最后一次迭代之后执行。
class detectron2.engine.hooks.LRScheduler(HookBase)
一个执行torch内置LR调度程序并汇总LR的hook, 它在每次迭代后执行。
class detectron2.engine.hooks.AutogradProfiler(HookBase)
一个运行torch.autograd.profiler.profile的hook
class detectron2.engine.hooks.EvalHook(HookBase)
在训练结束时定期运行评估功能,它在每个eval_period迭代以及上一次迭代之后执行。
class detectron2.engine.hooks.PreciseBN(HookBase)
BatchNorm的标准实现是在推断中使用EMA,这有时不是最佳选择,而该类则是计算统计的真实平均值而不是移动平均值,并将真实平均值应用于给定模型中的每个BN层,它在每个周期迭代和最后一次迭代之后执行。
构建各种任务下各种格式数据的评估器
class detectron2.evaluation.CityscapesEvaluator(DatasetEvaluator)
使用cityscapes API评估实例分割结果
class detectron2.evaluation.COCOEvaluator(DatasetEvaluator)
使用COCO的指标和API评估目标区域(object proposal),实例检测/分割,关键点检测输出
class detectron2.evaluation.DatasetEvaluator
数据集评估器的基类
函数inference_on_dataset()在数据集中的所有样本上运行模型,并有DatasetEvaluator来处理输入/输出,该类将通过process()累积输入/输出的信息,最后通过valuate()生成评估结果
class detectron2.evaluation.DatasetEvaluators(DatasetEvaluator)
detectron2.evaluation.inference_context()
#将模型暂时更改为评估模式,然后再恢复先前模式的上下文关系
detectron2.evaluation.inference_on_dataset()
#在data_loader上运行模型,并使用评估程序评估指标,该模型将在评估模式下使用
class detectron2.evaluation.LVISEvaluator(DatasetEvaluator)
使用LVIS的指标和评估API评估目标区域和实例检测/分割输出
class detectron2.evaluation.COCOPanopticEvaluator(DatasetEvaluator)
使用PanopticAPI评估COCO的全景质量指标,将全景分割预测保存在output_dir中
class detectron2.evaluation.PascalVOCDetectionEvaluator(DatasetEvaluator)
评估Pascal VOC AP
class detectron2.evaluation.SemSegEvaluator(DatasetEvaluator)
评估语义分割
detectron2.evaluation.print_csv_format()
detectron2.evaluation.verify_results()
基于pytorch扩展各种层功能
class detectron2.layers.FrozenBatchNorm2d
detectron2.layers.get_norm()
class detectron2.layers.NaiveSyncBatchNorm(BatchNorm2d)
torch.nn.SyncBatchNorm目前有一些未知错误,在其修复之前使用此实现
#可变形卷积
class detectron2.layers.DeformConv
class detectron2.layers.ModulatedDeformConv
detectron2.layers.paste_masks_in_image() #图片粘贴mask
#NMS
detectron2.layers.nms()
detectron2.layers.batched_nms()
detectron2.layers.batched_nms_rotated()
detectron2.layers.nms_rotated()
#ROI align
detectron2.layers.roi_align()
class detectron2.layers.ROIAlign
detectron2.layers.roi_align_rotated()
class detectron2.layers.ROIAlignRotated
class detectron2.layers.ShapeSpec
包含有关张量的基本形状规范的简单结构。 它通常用作模型的辅助输入/输出,以获取pytorch模块之间的形状推断能力
class detectron2.layers.BatchNorm2d
class detectron2.layers.Conv2d
class detectron2.layers.ConvTranspose2d
detectron2.layers.cat()
detectron2.layers.interpolate()
用于创建各种通用模型架构,并可选择地加载预训练权重
detectron2.model_zoo.get_checkpoint_url()
detectron2.model_zoo.get()
detectron2.model_zoo.get_config_file()
detectron2.modeling.build_anchor_generator()
class detectron2.modeling.FPN(Backbone)
class detectron2.modeling.Backbone
class detectron2.modeling.ResNet(Backbone)
class detectron2.modeling.ResNetBlockBase
detectron2.modeling.build_backbone()
detectron2.modeling.build_resnet_backbone()
detectron2.modeling.make_stage()
class detectron2.modeling.GeneralizedRCNN
class detectron2.modeling.PanopticFPN
class detectron2.modeling.ProposalNetwork
class detectron2.modeling.RetinaNet
class detectron2.modeling.SemanticSegmento
detectron2.modeling.build_model()
detectron2.modeling.build_sem_seg_head()
detectron2.modeling.detector_postprocess()
detectron2.modeling.build_proposal_generator()
detectron2.modeling.build_rpn_head()
class detectron2.modeling.ROIHeads
class detectron2.modeling.StandardROIHeads
detectron2.modeling.build_box_head()
detectron2.modeling.build_keypoint_head()
detectron2.modeling.build_mask_head()
detectron2.modeling.build_roi_heads()
class detectron2.modeling.DatasetMapperTTA
class detectron2.modeling.GeneralizedRCNNWithTTA
class detectron2.modeling.poolers.ROIPooler
支持从一个或多个特征图进行合并的ROI特征图池
detectron2.modeling.sampling.subsample_labels()
从标签中返回正负样本混合的采样器,它将尝试返回尽可能多的正样本,而不会超过positive_fraction * num_samples,然后尝试用负样本填充其余的空位
class detectron2.modeling.box_regression.Box2BoxTransform
R-CNN中定义的box-to-box转换
class detectron2.modeling.box_regression.Box2BoxTransformRotated
Rotated R-CNN中定义的box-to-box转换
这些是建模中提供的不同注册表。 每个注册表都使您能够用自定义组件替换它,而无需修改detectron2的代码。
注意不能允许用户直接自定义任何代码行。即使只是在某处添加一行,也需要找出包含该行的最小注册表,然后将组件注册到该注册表
detectron2.modeling.META_ARCH_REGISTRY
detectron2.modeling.BACKBONE_REGISTRY
detectron2.modeling.PROPOSAL_GENERATOR_REGISTRY
detectron2.modeling.RPN_HEAD_REGISTRY
detectron2.modeling.ANCHOR_GENERATOR_REGISTRY
detectron2.modeling.ROI_HEADS_REGISTRY
detectron2.modeling.ROI_BOX_HEAD_REGISTRY
detectron2.modeling.ROI_MASK_HEAD_REGISTRY
detectron2.modeling.ROI_KEYPOINT_HEAD_REGISTRY
动态调整学习率和构建优化器
detectron2.solver.build_lr_scheduler()
从config中构建LR scheduler动态调整学习率
detectron2.solver.build_optimizer()
从config中构建优化器
class detectron2.solver.WarmupCosineLR()
class detectron2.solver.WarmupMultiStepLR()
数据结构存储与转换
class detectron2.structures.Boxes
该结构将boxes列表存储为N×4的torch.Tensor
class detectron2.structures.BoxMode
枚举表示box的不同方式
detectron2.structures.pairwise_iou() → torch.Tensor
计算两个box列表之间的IOU
class detectron2.structures.ImageList
该结构将将图像列表(可能大小不一)保存为单个tensor
class detectron2.structures.Instances
此类表示图像中的实例列表,它将实例的属性(例如框,蒙版,标签,分数)存储为“字段”。 所有字段必须具有相同的__len__,即实例数
class detectron2.structures.Keypoints
存储关键点标注数据
detectron2.structures.heatmaps_to_keypoints() → torch.Tensor
从热图中提取预测的关键点位置
class detectron2.structures.BitMasks
此类以位图的形式存储一幅图像中所有对象的分割蒙版
class detectron2.structures.PolygonMasks
此类以多边形形式存储一幅图像中所有对象的分割蒙版
detectron2.structures.rasterize_polygons_within_box() → torch.Tensor
将多边形栅格化为蒙版图像,然后在给定框中裁剪蒙版内容。 裁剪的蒙版将调整为(mask_size,mask_size)
detectron2.structures.polygons_to_bitmask() → numpy.ndarray
class detectron2.structures.RotatedBoxes
该结构将rotated boxes列表存储为N×5的torch.Tensor
detectron2.structures.pairwise_iou_rotated() → None
计算两个rotated boxes列表之间的IOU
可实现真正整洁可视化的色彩图
detectron2.utils.colormap.colormap()
detectron2.utils.colormap.random_color()
该文件包含用于多GPU通信的原语,适合分布式训练
detectron2.utils.comm.get_world_size() → int
detectron2.utils.comm.get_rank() → int
detectron2.utils.comm.get_local_rank() → int
detectron2.utils.comm.get_local_size() → int
detectron2.utils.comm.is_main_process() → bool
detectron2.utils.comm.synchronize()
detectron2.utils.comm.all_gather()
detectron2.utils.comm.gather()
detectron2.utils.comm.shared_random_seed()
detectron2.utils.comm.reduce_dict()
事件编写和存储
detectron2.utils.events.get_event_storage()
class detectron2.utils.events.EventWriter
从EventStorage获取事件并对其进行处理的编写器的基类
class detectron2.utils.events.JSONWriter(EventWriter)
将标量写入json文件,它将标量保存为每行一个json(而不是大json),以便于解析
class detectron2.utils.events.TensorboardXWriter
将标量写入tensorboard文件
class detectron2.utils.events.CommonMetricPrinter
将常用指标打印到终端,包括迭代时间,ETA,内存,所有损耗和学习率,可自定义打印机打印内容
class detectron2.utils.events.EventStorage
提供度量标准的存储功能的面向用户的类
记录器创建与设置
detectron2.utils.logger.setup_logger
初始化detectron2记录器,并将其详细级别设置为“ INFO”
detectron2.utils.logger.log_first_n() #仅记录前n次
detectron2.utils.logger.log_every_n() #每n次记录一次
detectron2.utils.logger.log_every_n_seconds() #每n秒记录一次
detectron2.utils.logger.create_small_table()
使用small_dict的键作为headers创建一个小表,仅适用于小型字典
暂无
detectron2.utils.memory.retry_if_cuda_oom()
遇到pytorch的CUDA OOM错误后,令函数自行重试。它将在调用torch.cuda.empty_cache()之后首先重试。如果仍然失败,它将尝试通过将输入转换为CPU来重试。 在这种情况下,它希望该函数分派给CPU实现。返回值也可能会成为CPU张量,如果需要用户可将其转换回CUDA张量。
class detectron2.utils.video_visualizer.VideoVisualizer()
视频预测结果的可视化组件
class detectron2.utils.visualizer.ColorMode
列举用于实例可视化的不同颜色模式
class detectron2.utils.visualizer.VisImage
图像可视化
class detectron2.utils.visualizer.Visualizer
图像预测结果可视化
将detectron2模型导出为caffe2格式
detectron2.export.add_export_config()
detectron2.export.export_caffe2_model()
class detectron2.export.Caffe2Model()
执行setup_environment(),该命令行将由setup.py以编程方式读取/写入。
此文件不要触碰,留在该文件夹底部
框架开发者会用到的脚本。
在提交之前对代码库进行整理
运行几轮inference, 注意这些测试需要2个GPU。
运行几轮instant, 注意这些测试需要2个GPU。
解析日志文件中的结果。
容器,供开发者打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何linux服务器中运行,也可以实现虚拟化。
用于组合映像的命令的文本文档,可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
为CircleCI提供单元测试环境,用于执行测试、持续集成和持续部署
容器运行说明
docker容器配置文件
一些官方文档
基于Detectron2的三个项目,DensePose/TensorMask/TridentNet。
因为直接修改detectron2中的代码复现所有论文可能比较困难,所以这些项目用于演示如何将detectron2作为库调用来构建新的模型,以使自己的研究项目更具可维护性。
测试各种单元,操作如下:
python -m unittest discover -v -s tests
在dev / run _ inference/instant _ tests.sh中还提供了端到端的推理测试和训练测试
detectron2常用工具脚本
对给定配置的训练速度,推理速度或数据加载速度测定基准
转换caffe2模型并保存
与train_net.py类似,但是使用的是training loop而不是Trainer,适合自定义训练网络
一个用于训练detectron2内置模型的训练脚本示例
可视化在预处理/数据增强后的训练数据以及ground truth原始标注
注意在使用–source dataloader时,因为训练数据加载器通常是无限的,所以脚本不会自行停止
可视化由COCOEvalutor或LVISEvaluator转存的json实例检测/分割结果
注意如果不使用内置数据集,则需要修改此脚本或使用自己脚本
代码风格格式化文件
.flake8配置文件示例,在开发* Black *本身时使用。
与用于源软件包的setup.cfg保持同步。
Detectron2中内置预训练模型和命令行工具的用法。
Detectron2安装说明
各种模型在各种数据集上的baseline
Detectron2简介
建立模型需要的配置文件
建立模型