detectron2.utils¶
detectron2.utils.colormap 模块¶
一个出色的色彩映射方案,用于实现非常清晰的可视化效果。 从Detectron复制而来,并移除了灰色系颜色。
detectron2.utils.comm 模块¶
该文件包含多GPU通信的底层原语。这在执行分布式训练时非常有用。
-
detectron2.utils.comm.create_local_process_group(num_workers_per_machine: int) → None[源代码]¶ 创建一个包含同一台机器内所有等级的进程组。
Detectron2的engine/launch.py中的launch()会调用此函数。如果您不使用launch()启动工作进程,您也需要调用此函数。否则像get_local_rank()这样的实用功能将无法工作。
此函数包含一个屏障。所有进程必须同时调用它。
- Parameters
num_workers_per_machine – 每台机器上的工作进程数量。通常对应GPU的数量。
-
detectron2.utils.comm.get_local_process_group()[源代码]¶ - Returns
一个仅包含与当前进程位于同一台机器上的进程的torch进程组。该组可用于机器内部的通信,例如每台机器的SyncBN。
-
detectron2.utils.comm.all_gather(data, group=None)[源代码]¶ 对任意可pickle的数据(不一定是张量)执行all_gather操作。
- Parameters
data – 任何可序列化的对象
group – 一个torch进程组。默认情况下,将使用一个包含gloo后端上所有进程的组。
- Returns
list[data] – 从每个rank收集的数据列表
-
detectron2.utils.comm.gather(data, dst=0, group=None)[源代码]¶ 对任意可pickle的数据(不一定是张量)执行gather操作。
- Parameters
data – 任何可序列化的对象
dst (int) – 目标rank
group – 一个torch进程组。默认情况下,将使用一个包含gloo后端上所有进程的组。
- Returns
list[data] –
- 在目标节点上,是从每个rank收集的数据列表。否则,
一个空列表。
- Returns
int - 一个在所有工作进程中相同的随机数。 如果工作进程需要共享随机数生成器,它们可以使用这个共享种子来创建一个。
所有工作进程都必须调用此函数,否则会导致死锁。
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)[源代码]¶ 初始化detectron2日志记录器并将其详细级别设置为“DEBUG”。
- Parameters
output (str) – 用于保存日志的文件名或目录。如果为None,则不会保存日志文件。 如果以".txt"或".log"结尾,则假定为文件名。 否则,日志将被保存到output/log.txt。
name (str) – 该日志记录器的根模块名称
abbrev_name (str) – 模块的缩写名称,用于避免日志中出现过长名称。 设置为""表示不在日志中记录根模块。 默认情况下,会将"detectron2"缩写为"d2",其他模块名称保持不变。
enable_propagation (bool) – 是否将日志传播到父记录器。
configure_stdout (bool) - 是否配置日志输出到标准输出。
- Returns
logging.Logger – 一个日志记录器
-
detectron2.utils.logger.log_first_n(lvl, msg, n=1, *, name=None, key='caller')[源代码]¶ 仅在前n次记录日志。
- Parameters
lvl (int) – 日志级别
msg (str) –
n (int) –
name (str) – 要使用的日志记录器名称。默认将使用调用者的模块名。
key (str 或 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)[源代码]¶ 基类:
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)[源代码]¶ Makes a function retry itself after encountering pytorch’s CUDA OOM error. It will first retry after calling torch.cuda.empty_cache().
如果仍然失败,它将尝试将输入转换为CPU后重试。 在这种情况下,它期望函数能调度到CPU实现。 返回值也可能变成CPU张量,用户需要根据需要将其转换回CUDA张量。
- Parameters
func – 一个无状态的调用对象,以类张量对象作为参数
- Returns
a callable which retries func if OOM is encountered.
示例:
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)[源代码]¶ 基类:
enum.Enum用于实例可视化的不同颜色模式的枚举。
-
IMAGE= 0¶ 为每个实例随机选择一种颜色,并以低不透明度覆盖分割区域。
-
SEGMENTATION= 1¶ 让同一类别的实例具有相似的颜色(来自metadata.thing_colors),并以高不透明度叠加显示。这样可以更关注分割的质量。
-
IMAGE_BW= 2¶ 与IMAGE相同,但将所有无掩码区域转换为灰度。 仅适用于绘制每个实例的掩码预测。
-
-
class
detectron2.utils.visualizer.VisImage(img, scale=1.0)[源代码]¶ 基类:
object
-
class
detectron2.utils.visualizer.Visualizer(img_rgb, metadata=None, scale=1.0, instance_mode=<ColorMode.IMAGE: 0>)[源代码]¶ 基类:
object可视化工具,用于在图像上绘制检测/分割相关的数据。
它包含诸如draw_{text,box,circle,line,binary_mask,polygon}等方法,用于在图像上绘制基本图形元素,以及高级封装器如draw_{instance_predictions,sem_seg,panoptic_seg_predictions,dataset_dict},用于按照预定义样式绘制复合数据。
请注意,高级封装器的具体可视化样式可能会发生变化。诸如颜色、透明度、标签内容、标签可见性,甚至对象本身的可见性(例如当对象过小时)等样式,可能会根据不同的启发式规则进行调整,只要最终结果在视觉上仍然合理即可。
为了保持一致的样式,您可以使用上述基本方法实现自定义绘图函数。如果需要更个性化的可视化样式,您可以按照教程中记录的格式自行处理数据(使用模型、使用自定义数据集)。本类并不旨在满足每个人对绘图样式的偏好。
该可视化工具注重高质量的渲染效果而非性能表现,并非为实时应用场景设计。
-
draw_instance_predictions(predictions)[源代码]¶ 在图像上绘制实例级别的预测结果。
- Parameters
predictions (Instances) - 实例检测/分割模型的输出结果。以下字段将用于绘制: "pred_boxes"、"pred_classes"、"scores"、"pred_masks"(或"pred_masks_rle")。
- Returns
output (VisImage) – 带有可视化效果的图像对象。
-
draw_panoptic_seg(panoptic_seg, segments_info, area_threshold=None, alpha=0.7)[源代码]¶ 绘制全景预测标注或结果。
- Parameters
- Returns
output (VisImage) – 带有可视化效果的图像对象。
-
draw_dataset_dict(dic)[源代码]¶ 以Detectron2数据集格式绘制标注/分割。
- Parameters
dic (dict) – 一张图片的标注/分割数据,采用Detectron2数据集格式。
- Returns
output (VisImage) – 带有可视化效果的图像对象。
-
overlay_instances(*, boxes=None, labels=None, masks=None, keypoints=None, assigned_colors=None, alpha=0.5)[源代码]¶ - Parameters
boxes (Boxes, RotatedBoxes 或 ndarray) - 可以是
Boxes, 或是单张图片中N个物体的XYXY_ABS格式的Nx4 numpy数组, 或是RotatedBoxes, 或是单张图片中N个物体的(x_center, y_center, width, height, angle_degrees)格式的Nx5 numpy数组masks (类似掩码的对象) –
支持的类型包括:
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 或 类数组) - 一个形状为 (N, K, 3) 的类数组对象, 其中 N 是实例数量,K 是关键点数量。 最后一个维度对应 (x, y, 可见性或分数)。
assigned_colors (list[matplotlib.colors]) – 一个颜色列表,其中每个颜色对应图像中的每个掩码或方框。有关支持的颜色格式的完整列表,请参考'matplotlib.colors'。
- Returns
output (VisImage) – 带有可视化效果的图像对象。
-
draw_and_connect_keypoints(keypoints)[源代码]¶ 绘制实例的关键点,并按照关键点连接规则在适当的关键点之间绘制线条。线条颜色遵循颜色启发式规则。
- Parameters
关键点 (张量) – 一个形状为 (K, 3) 的张量,其中 K 是关键点数量,最后一个维度对应 (x坐标, y坐标, 概率)。
- Returns
output (VisImage) – 带有可视化效果的图像对象。
-
draw_text(text, position, *, font_size=None, color='g', horizontal_alignment='center', rotation=0)[源代码]¶
-
draw_rotated_box_with_label(rotated_box, alpha=0.5, edge_color='g', line_style='-', label=None)[源代码]¶ 在左上角绘制一个带标签的旋转框。
- Parameters
- Returns
output (VisImage) – 绘制了边界框的图像对象。
-
draw_line(x_data, y_data, color, linestyle='-', linewidth=None)[源代码]¶ - Parameters
- Returns
output (VisImage) – 绘制了线条的图像对象。
-
draw_binary_mask(binary_mask, color=None, *, edge_color=None, text=None, alpha=0.5, area_threshold=10)[源代码]¶ - Parameters
binary_mask (ndarray) – 形状为(H, W)的numpy数组,其中H表示图像高度,W表示图像宽度。数组中的每个值都是uint8类型的0或1值。
color – 遮罩的颜色。有关所有可接受格式的完整列表,请参阅matplotlib.colors。如果为None,将随机选择一种颜色。
edge_color – 多边形边缘的颜色。有关可接受格式的完整列表,请参阅matplotlib.colors。
text (str) – 如果为None,将会绘制在对象上
alpha (float) – 混合效率。数值越小,掩码越透明。
area_threshold (float) - 面积小于此阈值的连通组件将不会显示。
- Returns
output (VisImage) – 绘制了掩码的图像对象。
-
draw_polygon(segment, color, edge_color=None, alpha=0.5)[源代码]¶ - Parameters
segment – 形状为Nx2的numpy数组,包含多边形中的所有点。
color – 多边形的颜色。有关所有可接受的格式,请参阅matplotlib.colors。
edge_color - 多边形边缘的颜色。关于可接受的颜色格式完整列表,请参考matplotlib.colors。如果未提供,将使用多边形颜色的较深色调替代。
alpha (float) – 混合效率。数值越小,遮罩越透明。
- Returns
output (VisImage) – 绘制了多边形的图像对象。
-
detectron2.utils.video_visualizer 模块¶
-
class
detectron2.utils.video_visualizer.VideoVisualizer(metadata, instance_mode=<ColorMode.IMAGE: 0>)[源代码]¶ 基类:
object-
__init__(metadata, instance_mode=<ColorMode.IMAGE: 0>)[源代码]¶ - Parameters
metadata (MetadataCatalog) - 图像元数据。
-