detectron2.utils¶
detectron2.utils.colormap 模块¶
一个很棒的颜色映射,用于非常棒的可视化。从 Detectron 复制,并删除了灰色。
detectron2.utils.comm 模块¶
此文件包含用于多 GPU 通信的基元。这在进行分布式训练时很有用。
-
detectron2.utils.comm.
create_local_process_group
(num_workers_per_machine: int) → None[source]¶ 创建一个包含同一台机器上的等级的进程组。
Detectron2 的 launch() 在 engine/launch.py 中会调用此函数。如果你在没有 launch() 的情况下启动了工作进程,那么你将不得不调用它。否则,诸如 get_local_rank() 之类的工具将无法使用。
此函数包含一个障碍。所有进程都必须一起调用它。
- 参数
num_workers_per_machine – 每台机器的工作进程数量。通常是 GPU 数量。
-
detectron2.utils.comm.
get_local_process_group
()[source]¶ - 返回值
一个仅包含与当前进程位于同一台机器上的进程的 torch 进程组。该组对于机器内的通信很有用,例如每台机器的 SyncBN。
-
detectron2.utils.comm.
all_gather
(data, group=None)[source]¶ 对任意可腌制数据(不一定张量)运行 all_gather。
- 参数
data – 任何可腌制对象
group – 一个 torch 进程组。默认情况下,将使用包含 gloo 后端上所有等级的组。
- 返回值
list[data] – 从每个等级收集的列表
-
detectron2.utils.comm.
gather
(data, dst=0, group=None)[source]¶ 对任意可腌制数据(不一定张量)运行 gather。
- 参数
data – 任何可腌制对象
dst (int) – 目标等级
group – 一个 torch 进程组。默认情况下,将使用包含 gloo 后端上所有等级的组。
- 返回值
list[data] –
- 在 dst 上,从每个等级收集的列表。否则,
一个空列表。
- 返回值
int – 在所有工作进程中都相同的随机数。如果工作进程需要共享 RNG,它们可以使用这个共享种子创建一个。
所有工作进程都必须调用此函数,否则它将死锁。
detectron2.utils.events 模块¶
detectron2.utils.logger 模块¶
-
detectron2.utils.logger.
setup_logger
(output=None, distributed_rank=0, *, color=True, name='detectron2', abbrev_name=None, enable_propagation: bool = False, configure_stdout: bool = True)[source]¶ 初始化 detectron2 记录器并将它的详细程度设置为“DEBUG”。
- 参数
output (str) – 保存日志的文件名或目录。如果为 None,则不会保存日志文件。如果以“.txt”或“.log”结尾,则假定为文件名。否则,日志将保存到 output/log.txt 中。
name (str) – 此记录器的根模块名称
abbrev_name (str) – 模块的缩写,用于避免日志中的长名称。设置为“ ”表示不在日志中记录根模块。默认情况下,将“detectron2”缩写为“d2”,并将其他模块保持不变。
enable_propagation (bool) – 是否将日志传播到父记录器。
configure_stdout (bool) – 是否将日志配置到标准输出。
- 返回值
logging.Logger – 一个记录器
-
detectron2.utils.logger.
log_first_n
(lvl, msg, n=1, *, name=None, key='caller')[source]¶ 仅针对前 n 次记录日志。
- 参数
lvl (int) – 日志级别
msg (str) –
n (int) –
name (str) – 要使用的记录器的名称。默认情况下,将使用调用者的模块。
key (str or tuple[str]) – 该字符串可以是“caller”或“message”之一,它定义了如何识别重复的日志。例如,如果使用 n=1, key=”caller” 调用,则该函数仅记录来自同一调用者的第一个调用,而与消息内容无关。如果使用 n=1, key=”message” 调用,则该函数仅记录一次相同的内容,即使它们来自不同的位置。如果使用 n=1, key=(“caller”, “message”) 调用,则该函数仅在同一调用者之前记录过相同消息时才不会记录日志。
detectron2.utils.registry 模块¶
-
class
detectron2.utils.registry.
Registry
(*args, **kwds)[source]¶ Bases:
collections.abc.Iterable
,typing.Generic
提供名称 -> 对象映射的注册表,以支持第三方用户自定义模块。
要创建一个注册表(例如,一个主干注册表)
BACKBONE_REGISTRY = Registry('BACKBONE')
要注册一个对象
@BACKBONE_REGISTRY.register() class MyBackbone(): ...
或者
BACKBONE_REGISTRY.register(MyBackbone)
detectron2.utils.memory 模块¶
-
detectron2.utils.memory.
retry_if_cuda_oom
(func)[source]¶ 在遇到 PyTorch 的 CUDA OOM 错误后,使函数重新尝试自身。它将在调用 torch.cuda.empty_cache() 后首先重新尝试。
如果仍然失败,它将通过尝试将输入转换为 CPU 来重新尝试。在这种情况下,它期望函数分派到 CPU 实现。返回值也可能变成 CPU 张量,用户有责任根据需要将其转换回 CUDA 张量。
- 参数
func – 一个无状态的可调用对象,它接受张量状对象作为参数
- 返回值
一个可调用对象,它在遇到 OOM 时会重新尝试 func。
示例
output = retry_if_cuda_oom(some_torch_function)(input1, input2) # output may be on CPU even if inputs are on GPU
注意
在将输入转换为 CPU 时,它将仅查看每个参数并检查它是否具有 .device 和 .to 以进行转换。不支持张量嵌套结构。
由于该函数可能被调用多次,因此它必须是无状态的。
detectron2.utils.analysis 模块¶
detectron2.utils.visualizer 模块¶
-
class
detectron2.utils.visualizer.
ColorMode
(value)[source]¶ Bases:
enum.Enum
用于实例可视化的不同颜色模式的枚举。
-
IMAGE
= 0¶ 为每个实例选择随机颜色,并以低不透明度叠加分割。
-
SEGMENTATION
= 1¶ 使相同类别的实例具有相似的颜色(来自 metadata.thing_colors),并以高不透明度叠加它们。这将更多地关注分割质量。
-
IMAGE_BW
= 2¶ 与 IMAGE 相同,但将所有没有蒙版的区域转换为灰度。仅适用于绘制每个实例的蒙版预测。
-
-
class
detectron2.utils.visualizer.
VisImage
(img, scale=1.0)[source]¶ Bases:
object
-
class
detectron2.utils.visualizer.
Visualizer
(img_rgb, metadata=None, scale=1.0, instance_mode=<ColorMode.IMAGE: 0>)[source]¶ Bases:
object
可视化器,用于在图像上绘制有关检测/分割的数据。
它包含像 draw_{text,box,circle,line,binary_mask,polygon} 这样的方法,用于在图像上绘制基本对象,以及像 draw_{instance_predictions,sem_seg,panoptic_seg_predictions,dataset_dict} 这样的高级包装器,用于以一些预定义的样式绘制复合数据。
请注意,高级包装器的确切可视化样式可能会发生变化。颜色、不透明度、标签内容、标签可见性,甚至对象本身的可见性(例如,当对象太小的时候)等样式可能会根据不同的启发式方法而改变,只要结果在视觉上仍然合理。
为了获得一致的样式,您可以使用上述基本方法实现自定义绘图函数。如果您需要更多定制的可视化样式,您可以按照教程中记录的格式自行处理数据(使用模型,使用自定义数据集)。此类不打算满足每个人对绘图样式的偏好。
此可视化器侧重于高渲染质量,而不是性能。它不是为实时应用而设计的。
-
draw_instance_predictions
(predictions)[source]¶ 在图像上绘制实例级预测结果。
- 参数
predictions (Instances) – 实例检测/分割模型的输出。以下字段将用于绘制:“pred_boxes”,“pred_classes”,“scores”,“pred_masks”(或“pred_masks_rle”)。
- 返回值
output (VisImage) – 带有可视化的图像对象。
-
draw_panoptic_seg
(panoptic_seg, segments_info, area_threshold=None, alpha=0.7)[source]¶ 绘制全景预测标注或结果。
- 参数
- 返回值
output (VisImage) – 带有可视化的图像对象。
-
draw_dataset_dict
(dic)[source]¶ 绘制 Detectron2 数据集格式中的标注/分割。
- 参数
dic (dict) – 一张图像的标注/分割数据,以 Detectron2 数据集格式。
- 返回值
output (VisImage) – 带有可视化的图像对象。
-
overlay_instances
(*, boxes=None, labels=None, masks=None, keypoints=None, assigned_colors=None, alpha=0.5)[source]¶ - 参数
boxes (Boxes, RotatedBoxes 或 ndarray) – 既可以是
Boxes
,也可以是单张图像中 N 个对象的 XYXY_ABS 格式的 Nx4 numpy 数组,或者RotatedBoxes
,或者单张图像中 N 个对象的 (x_center, y_center, width, height, angle_degrees) 格式的 Nx5 numpy 数组,masks (masks-like object) –
支持的类型是
detectron2.structures.PolygonMasks
,detectron2.structures.BitMasks
.list[list[ndarray]]: 包含单张图像中所有对象的分割掩码。列表的第一级对应于单个实例。第二级对应于组成该实例的所有多边形,第三级对应于多边形坐标。第三级应具有 [x0, y0, x1, y1, …, xn, yn] (n >= 3) 的格式。
list[ndarray]: 每个 ndarray 都是形状为 (H, W) 的二元掩码。
list[dict]: 每个字典都是 COCO 风格的 RLE。
keypoints (Keypoint 或 array like) – 形状为 (N, K, 3) 的类数组对象,其中 N 是实例数量,K 是关键点数量。最后一维对应于 (x, y, 可见性或得分)。
assigned_colors (list[matplotlib.colors]) – 颜色列表,每个颜色对应于图像中的每个掩码或框。有关颜色接受的完整格式列表,请参阅“matplotlib.colors”。
- 返回值
output (VisImage) – 带有可视化的图像对象。
-
draw_and_connect_keypoints
(keypoints)[source]¶ 绘制实例的关键点,并遵循关键点连接规则,在合适的关键点之间绘制线条。这遵循线条颜色的颜色启发式方法。
- 参数
keypoints (Tensor) – 形状为 (K, 3) 的张量,其中 K 是关键点数量,最后一维对应于 (x, y, 概率)。
- 返回值
output (VisImage) – 带有可视化的图像对象。
-
draw_text
(text, position, *, font_size=None, color='g', horizontal_alignment='center', rotation=0)[source]¶
-
draw_rotated_box_with_label
(rotated_box, alpha=0.5, edge_color='g', line_style='-', label=None)[源代码]¶ 在旋转框的左上角绘制一个带标签的旋转框。
- 参数
- 返回值
output (VisImage) – 绘制了框的图像对象。
-
draw_line
(x_data, y_data, color, linestyle='-', linewidth=None)[源代码]¶ - 参数
- 返回值
output (VisImage) – 绘制了线的图像对象。
-
draw_binary_mask
(binary_mask, color=None, *, edge_color=None, text=None, alpha=0.5, area_threshold=10)[源代码]¶ - 参数
binary_mask (ndarray) – 形状为 (H, W) 的 numpy 数组,其中 H 是图像高度,W 是图像宽度。数组中的每个值都是 uint8 类型的值 0 或 1。
color – 蒙版的颜色。有关接受的完整格式列表,请参阅 matplotlib.colors。如果为 None,将选择随机颜色。
edge_color – 多边形边缘的颜色。有关接受的完整格式列表,请参阅 matplotlib.colors。
text (字符串) – 如果为 None,将绘制在对象上
alpha (浮点数) – 混合效率。较小的值会导致更透明的蒙版。
area_threshold (浮点数) – 小于此面积的连通分量将不会显示。
- 返回值
output (VisImage) – 绘制了蒙版的图像对象。
-
draw_polygon
(segment, color, edge_color=None, alpha=0.5)[源代码]¶ - 参数
segment – 形状为 Nx2 的 numpy 数组,包含多边形中的所有点。
color – 多边形的颜色。有关接受的完整格式列表,请参阅 matplotlib.colors。
edge_color – 多边形边缘的颜色。有关接受的完整格式列表,请参阅 matplotlib.colors。如果未提供,将使用多边形颜色的深色阴影。
alpha (浮点数) – 混合效率。较小的值会导致更透明的蒙版。
- 返回值
output (VisImage) – 绘制了多边形的图像对象。
-
detectron2.utils.video_visualizer 模块¶
-
class
detectron2.utils.video_visualizer.
VideoVisualizer
(metadata, instance_mode=<ColorMode.IMAGE: 0>)[源代码]¶ Bases:
object