detectron2.data.transforms¶
相关教程:数据增强.
-
类
detectron2.data.transforms.
Transform
¶ 基础:
object
用于图像和其他数据结构的**确定性**转换实现的基类。“确定性”要求此类的所有方法的输出相对于其输入参数是确定的。请注意,这与(随机)数据增强不同。要在训练中执行数据增强,应该有一个更高级别的策略来生成这些转换操作。
每个转换操作可以处理几种数据类型,例如:图像、坐标、分割、边界框,使用其
apply_*
方法。其中一些具有默认实现,但如果默认实现不合适,可以覆盖它们。有关详细信息,请参阅每个预定义的apply_*
方法的文档。请注意,这些方法的实现可以选择就地修改其输入数据以实现高效转换。该类可以使用其
register_type()
方法扩展为支持任意新的数据类型。-
__repr__
()¶ 生成类似以下内容:“MyTransform(field1={self.field1}, field2={self.field2})”。
-
apply_box
(box:numpy.ndarray
) →numpy.ndarray
¶ 将转换应用于轴对齐的框。默认情况下将转换角点,并使用它们的最小值/最大值来创建一个新的轴对齐框。请注意,此默认值可能会更改框的大小,例如在旋转后。
- 参数
box (ndarray) – Nx4 浮点数组,以绝对坐标表示 XYXY 格式。
- 返回值
ndarray – 应用转换后的框。
注意
坐标不是像素索引。形状为 (H, W) 的图像中的坐标范围为 [0, W] 或 [0, H]。
此函数不会剪裁框以强制它们位于图像内。这取决于使用这些框的应用程序来决定。
-
抽象
apply_coords
(coords:numpy.ndarray
)¶ 将转换应用于坐标。
- 参数
coords (ndarray) – 形状为 Nx2 的浮点数组。每行都是 (x, y)。
- 返回值
ndarray – 应用转换后的坐标。
注意
坐标不是像素索引。形状为 (H, W) 的图像中的坐标范围为 [0, W] 或 [0, H]。此函数也应该正确转换图像之外的坐标。
-
抽象
apply_image
(img:numpy.ndarray
)¶ 将转换应用于图像。
- 参数
img (ndarray) – 形状为 NxHxWxC、HxWxC 或 HxW。数组可以是范围在 [0, 255] 内的 uint8 类型,或者范围在 [0, 1] 或 [0, 255] 内的浮点类型。
- 返回值
ndarray – 应用转换后的图像。
-
apply_polygons
(polygons:list
) →list
¶ 将转换应用于多边形列表,每个多边形由 Nx2 数组表示。默认情况下将只转换所有点。
- 参数
polygon (
list
[ndarray]) – 每个都是以绝对坐标表示的 (x, y) 格式的 Nx2 浮点数组。- 返回值
list[ndarray] – 应用转换后的多边形。
注意
坐标不是像素索引。形状为 (H, W) 的图像上的坐标范围为 [0, W] 或 [0, H]。
-
apply_segmentation
(segmentation:numpy.ndarray
) →numpy.ndarray
¶ 将转换应用于全图像分割。默认情况下将只执行“apply_image”。
- 参数
segmentation (ndarray) – 形状为 HxW。数组应该具有整数
bool 数据类型。 (或) –
- 返回值
ndarray – 应用转换后的分割。
-
inverse
() → detectron2.data.transforms.Transform¶ 创建一个转换,用于反转此转换的几何变化(即坐标变化)。
请注意,逆变换仅针对几何变化。不改变坐标的光度变换的逆变换被定义为无操作,即使它们可能是可逆的。
- 返回值
转换
-
类方法
register_type
(data_type:str
, func: Optional[Callable] = None)[源代码]¶ 将给定函数注册为处理程序,此转换将为此特定数据类型使用该处理程序。
- 参数
data_type (
str
) – 数据类型的名称(例如,框)func (可调用对象) – 接受转换和数据,返回转换后的数据。
示例
# call it directly def func(flip_transform, voxel_data): return transformed_voxel_data HFlipTransform.register_type("voxel", func) # or, use it as a decorator @HFlipTransform.register_type("voxel") def func(flip_transform, voxel_data): return transformed_voxel_data # ... transform = HFlipTransform(...) transform.apply_voxel(voxel_data) # func will be called
-
-
类
detectron2.data.transforms.
TransformList
(transforms: List[detectron2.data.transforms.Transform])¶ 基础:
detectron2.data.transforms.Transform
维护一个转换操作列表,这些操作将按顺序应用。 .. attribute:: transforms
- 类型
list[Transform]
-
__add__
(other: detectron2.data.transforms.TransformList) → detectron2.data.transforms.TransformList¶ - 参数
other (TransformList) – 要添加的转换。
- 返回值
TransformList – 转换列表。
-
__iadd__
(other: detectron2.data.transforms.TransformList) → detectron2.data.transforms.TransformList¶ - 参数
other (TransformList) – 要添加的转换。
- 返回值
TransformList – 转换列表。
-
__init__
(transforms: List[detectron2.data.transforms.Transform])¶
-
__radd__
(other: detectron2.data.transforms.TransformList) → detectron2.data.transforms.TransformList¶ - 参数
other (TransformList) – 要添加的转换。
- 返回值
TransformList – 转换列表。
-
apply_coords
(x)¶
-
apply_image
(x)¶
-
inverse
() → detectron2.data.transforms.TransformList¶ 反转每个变换的顺序。
-
class
detectron2.data.transforms.
BlendTransform
(src_image: numpy.ndarray, src_weight: float, dst_weight: float)¶ 基础:
detectron2.data.transforms.Transform
使用 PIL enhance 函数变换像素颜色。
-
__init__
(src_image: numpy.ndarray, src_weight: float, dst_weight: float)¶ 使用公式将输入图像(dst_image)与 src_image 混合:
src_weight * src_image + dst_weight * dst_image
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶ 对坐标不执行任何变换。
-
apply_image
(img: numpy.ndarray, interp: str = None) → numpy.ndarray¶ 对图像应用混合变换。
- 参数
img (ndarray) – 形状为 NxHxWxC、HxWxC 或 HxW。数组可以是范围在 [0, 255] 内的 uint8 类型,或者范围在 [0, 1] 或 [0, 255] 内的浮点类型。
interp (str) – 保持此选项以保持一致性,执行混合不需要插值。
- 返回值
ndarray – 混合后的图像。
-
apply_segmentation
(segmentation: numpy.ndarray) → numpy.ndarray¶ 对全图像分割不执行任何变换。
-
inverse
() → detectron2.data.transforms.Transform¶ 逆变换为空操作。
-
-
class
detectron2.data.transforms.
CropTransform
(x0: int, y0: int, w: int, h: int, orig_w: Optional[int] = None, orig_h: Optional[int] = None)¶ 基础:
detectron2.data.transforms.Transform
-
__init__
(x0: int, y0: int, w: int, h: int, orig_w: Optional[int] = None, orig_h: Optional[int] = None)¶
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶ 对坐标应用剪裁变换。
- 参数
coords (ndarray) – 形状为 Nx2 的浮点数组。每行都是 (x, y)。
- 返回值
ndarray – 剪裁后的坐标。
-
apply_image
(img: numpy.ndarray) → numpy.ndarray¶ 剪裁图像。
- 参数
img (ndarray) – 形状为 NxHxWxC、HxWxC 或 HxW。数组可以是范围在 [0, 255] 内的 uint8 类型,或者范围在 [0, 1] 或 [0, 255] 内的浮点类型。
- 返回值
ndarray – 剪裁后的图像。
-
apply_polygons
(polygons: list) → list¶ 对多边形列表应用剪裁变换,每个多边形由 Nx2 数组表示。它将使用框剪裁多边形,因此多边形中的点数可能会发生变化。
- 参数
polygon (
list
[ndarray]) – 每个都是以绝对坐标表示的 (x, y) 格式的 Nx2 浮点数组。- 返回值
ndarray – 剪裁后的多边形。
-
inverse
() → detectron2.data.transforms.Transform¶
-
-
class
detectron2.data.transforms.
PadTransform
(x0: int, y0: int, x1: int, y1: int, orig_w: Optional[int] = None, orig_h: Optional[int] = None, pad_value: float = 0, seg_pad_value: int = 0)¶ 基础:
detectron2.data.transforms.Transform
-
__init__
(x0: int, y0: int, x1: int, y1: int, orig_w: Optional[int] = None, orig_h: Optional[int] = None, pad_value: float = 0, seg_pad_value: int = 0)¶ - 参数
x0 – 左右和上下填充像素数量
y0 – 左右和上下填充像素数量
x1 – 左右和上下填充像素数量
y1 – 左右和上下填充像素数量
orig_w – 可选,原始宽度和高度。用于使此转换可逆。
orig_h – 可选,原始宽度和高度。用于使此转换可逆。
pad_value – 图像的填充值
seg_pad_value – 分割掩码的填充值
-
apply_coords
(coords)¶
-
apply_image
(img)¶
-
apply_segmentation
(img)¶
-
inverse
() → detectron2.data.transforms.Transform¶
-
-
class
detectron2.data.transforms.
GridSampleTransform
(grid: numpy.ndarray, interp: str)¶ 基础:
detectron2.data.transforms.Transform
-
__init__
(grid: numpy.ndarray, interp: str)¶ - 参数
grid (ndarray) – 网格包含用于计算输出的 x 和 y 输入像素位置。网格的值在 [-1, 1] 范围内,由输入高度和宽度归一化。维度为 N x H x W x 2.
interp (str) – 插值方法。选项包括 nearest 和 bilinear.
-
apply_coords
(coords: numpy.ndarray)¶ 不支持。
-
apply_image
(img: numpy.ndarray, interp: str = None) → numpy.ndarray¶ 对图像应用网格采样。
- 参数
img (ndarray) – 形状为 NxHxWxC、HxWxC 或 HxW。数组可以是范围在 [0, 255] 内的 uint8 类型,或者范围在 [0, 1] 或 [0, 255] 内的浮点类型。
interp (str) – 插值方法。选项包括 nearest 和 bilinear.
- 返回值
ndarray – 网格采样图像。
-
apply_segmentation
(segmentation: numpy.ndarray) → numpy.ndarray¶ 对全图分割应用网格采样。
- 参数
segmentation (ndarray) – 形状为 HxW。数组应具有整数或布尔类型。
- 返回值
ndarray – 网格采样分割。
-
-
class
detectron2.data.transforms.
HFlipTransform
(width: int)¶ 基础:
detectron2.data.transforms.Transform
执行水平翻转。
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶ 翻转坐标。
- 参数
coords (ndarray) – 形状为 Nx2 的浮点数组。每行都是 (x, y)。
- 返回值
ndarray – 翻转后的坐标。
注意
输入是浮点坐标,而不是像素索引。因此它们被 (W - x, H - y) 翻转,而不是 (W - 1 - x, H - 1 - y).
-
apply_image
(img: numpy.ndarray) → numpy.ndarray¶ 翻转图像。
- 参数
img (ndarray) – 形状为 HxW, HxWxC 或 NxHxWxC。数组可以是范围 [0, 255] 中的 uint8 类型,或者范围 [0, 1] 或 [0, 255] 中的浮点类型。
- 返回值
ndarray – 翻转后的图像。
-
apply_rotated_box
(rotated_boxes)¶ 对旋转框应用水平翻转变换。
- 参数
rotated_boxes (ndarray) – Nx5 浮点数组,以绝对坐标格式 (x_center, y_center, width, height, angle_degrees)。
-
inverse
() → detectron2.data.transforms.Transform¶ 逆向操作是再次翻转
-
-
class
detectron2.data.transforms.
VFlipTransform
(height: int)¶ 基础:
detectron2.data.transforms.Transform
执行垂直翻转。
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶ 翻转坐标。
- 参数
coords (ndarray) – 形状为 Nx2 的浮点数组。每行都是 (x, y)。
- 返回值
ndarray – 翻转后的坐标。
注意
输入是浮点坐标,而不是像素索引。因此它们被 (W - x, H - y) 翻转,而不是 (W - 1 - x, H - 1 - y).
-
apply_image
(img: numpy.ndarray) → numpy.ndarray¶ 翻转图像。
- 参数
img (ndarray) – 形状为 HxW, HxWxC 或 NxHxWxC。数组可以是范围 [0, 255] 中的 uint8 类型,或者范围 [0, 1] 或 [0, 255] 中的浮点类型。
- 返回值
ndarray – 翻转后的图像。
-
inverse
() → detectron2.data.transforms.Transform¶ 逆向操作是再次翻转
-
-
class
detectron2.data.transforms.
NoOpTransform
¶ 基础:
detectron2.data.transforms.Transform
不执行任何操作的转换。
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶
-
apply_image
(img: numpy.ndarray) → numpy.ndarray¶
-
apply_rotated_box
(x)¶
-
inverse
() → detectron2.data.transforms.Transform¶
-
-
class
detectron2.data.transforms.
ScaleTransform
(h: int, w: int, new_h: int, new_w: int, interp: str = None)¶ 基础:
detectron2.data.transforms.Transform
将图像调整为目标大小。
-
apply_coords
(coords: numpy.ndarray) → numpy.ndarray¶ 计算调整大小后的坐标。
- 参数
coords (ndarray) – 形状为 Nx2 的浮点数组。每行都是 (x, y)。
- 返回值
ndarray – 调整大小后的坐标。
-
apply_image
(img: numpy.ndarray, interp: str = None) → numpy.ndarray¶ 调整图像(s)的大小。
- 参数
img (ndarray) – 形状为 NxHxWxC、HxWxC 或 HxW。数组可以是范围在 [0, 255] 内的 uint8 类型,或者范围在 [0, 1] 或 [0, 255] 内的浮点类型。
interp (str) – 插值方法。选项包括 nearest、linear (仅限 3D)、bilinear、bicubic (仅限 4D) 和 area。详细信息可以在以下位置找到: https://pytorch.ac.cn/docs/stable/nn.functional.html
- 返回值
ndarray – 调整大小后的图像(s)。
-
apply_segmentation
(segmentation: numpy.ndarray) → numpy.ndarray¶ 在全图分割上应用调整大小。
- 参数
segmentation (ndarray) – 形状为 HxW。数组应具有整数或布尔类型。
- 返回值
ndarray – 调整大小后的分割。
-
inverse
() → detectron2.data.transforms.Transform¶ 逆操作是将其恢复到原始大小。
-
-
class
detectron2.data.transforms.
ExtentTransform
(src_rect, output_size, interp=2, fill=0)¶ 基础:
detectron2.data.transforms.Transform
从源图像中提取一个子区域,并将其缩放到输出大小。
填充颜色用于映射落在源图像外部的源矩形的像素。
参见:https://pillow.pythonlang.cn/en/latest/PIL.html#PIL.ImageTransform.ExtentTransform
-
__init__
(src_rect, output_size, interp=2, fill=0)¶ - 参数
src_rect (x0, y0, x1, y1) – 源坐标
output_size (h, w) – 目标图像大小
interp – PIL 插值方法
fill – 当 src_rect 扩展到图像外部时使用的填充颜色
-
apply_coords
(coords)¶
-
apply_image
(img, interp=None)¶
-
apply_segmentation
(segmentation)¶
-
-
class
detectron2.data.transforms.
ResizeTransform
(h, w, new_h, new_w, interp=None)¶ 基础:
detectron2.data.transforms.Transform
将图像调整为目标大小。
-
__init__
(h, w, new_h, new_w, interp=None)¶
-
apply_coords
(coords)¶
-
apply_image
(img, interp=None)¶
-
apply_rotated_box
(rotated_boxes)¶ 在旋转框上应用调整大小转换。有关这些(近似)公式推导的详细信息,请参阅
RotatedBoxes.scale()
。- 参数
rotated_boxes (ndarray) – Nx5 浮点数组,以绝对坐标格式 (x_center, y_center, width, height, angle_degrees)。
-
apply_segmentation
(segmentation)¶
-
inverse
()¶
-
-
class
detectron2.data.transforms.
RotationTransform
(h, w, angle, expand=True, center=None, interp=None)¶ 基础:
detectron2.data.transforms.Transform
此方法返回此图像的副本,逆时针旋转给定的角度,绕其中心旋转。
-
__init__
(h, w, angle, expand=True, center=None, interp=None)¶
-
apply_coords
(coords)¶ coords 应该是一个 N * 2 的数组,包含 N 个 (x, y) 点对。
-
apply_image
(img, interp=None)¶ img 应该是一个 numpy 数组,格式为 高度 * 宽度 * 通道数。
-
apply_segmentation
(segmentation)¶
-
create_rotation_matrix
(offset=0)¶
-
inverse
()¶ 逆操作是使用 expand 将图像旋转回原位,然后裁剪以获取原始形状。
-
-
类
detectron2.data.transforms.
ColorTransform
(op)¶ 基础:
detectron2.data.transforms.Transform
对任何光度变换的通用包装器。这些变换只应该影响颜色空间,
而不影响图像的坐标空间(例如,注释坐标,如边界框,不应被改变)。
-
__init__
(op)¶ - 参数
op (可调用) – 要应用于图像的操作,它接收一个 ndarray 并返回一个 ndarray。
-
apply_coords
(coords)¶
-
apply_image
(img)¶
-
apply_segmentation
(segmentation)¶
-
inverse
()¶
-
-
类
detectron2.data.transforms.
PILColorTransform
(op)¶ 基类:
detectron2.data.transforms.ColorTransform
- PIL 光度图像变换的通用包装器,
它影响颜色空间而不影响图像的坐标空间。
-
__init__
(op)¶ - 参数
op (可调用) – 要应用于图像的操作,它接收一个 PIL Image 并返回一个经过变换的 PIL Image。有关可能的操作的参考,请参阅: - https://pillow.pythonlang.cn/en/stable/
-
apply_image
(img)¶
-
类
detectron2.data.transforms.
Augmentation
¶ 基础:
object
Augmentation 定义(通常是随机的)策略来从数据中生成
Transform
。它通常用于输入数据的预处理。生成
Transform
的“策略”可能在最通用的情况下需要来自输入数据的任意信息,以确定要应用哪些变换。因此,每个Augmentation
实例都定义了其get_transform()
方法所需的 arguments。当使用位置 arguments 调用时,get_transform()
方法将执行策略。注意,
Augmentation
定义了创建Transform
的策略,而不是如何对这些数据执行实际的变换操作。其__call__()
方法将使用AugInput.transform()
来执行变换。返回的 Transform 对象旨在描述确定性变换,这意味着它可以重新应用于相关数据,例如图像的几何形状及其分割掩码需要一起变换。(如果不需要这种重新应用,那么确定性就不是一个关键的要求。)
-
__call__
(aug_input) → detectron2.data.transforms.Transform¶ 就地增强给定的 aug_input,并返回所使用的变换。
此方法将被调用以应用增强。在大多数增强中,使用默认实现就足够了,它使用输入调用
get_transform()
。但是子类可以覆盖它以具有更复杂的逻辑。- 参数
aug_input (AugInput) – 一个包含此增强所需属性的对象(由
self.get_transform
定义)。它的transform
方法将被调用以就地变换它。- 返回值
Transform – 应用于输入的变换。
-
__repr__
()¶ 生成类似于: “MyAugmentation(field1={self.field1}, field2={self.field2})” 的内容。
-
__str__
()¶ 生成类似于: “MyAugmentation(field1={self.field1}, field2={self.field2})” 的内容。
-
get_transform
(*args) → detectron2.data.transforms.Transform¶ 根据输入数据执行策略,并决定要应用于输入的变换。
- 参数
args – 任何固定长度的位置 arguments。默认情况下,arguments 的名称应该存在于要使用的
AugInput
中。- 返回值
Transform – 返回要应用于输入的确定性变换。
示例
class MyAug: # if a policy needs to know both image and semantic segmentation def get_transform(image, sem_seg) -> T.Transform: pass tfm: Transform = MyAug().get_transform(image, sem_seg) new_image = tfm.apply_image(image)
说明
用户可以在自定义
get_transform()
方法中自由使用任意新的 argument 名称,只要它们在输入数据中可用。在 detectron2 中,我们使用以下约定:image: (H,W) 或 (H,W,C) ndarray,类型为 uint8,范围为 [0, 255],或者浮点数,范围为 [0, 1] 或 [0, 255]。
boxes: (N,4) ndarray,类型为 float32。它表示 N 个实例的实例边界框。每个边界框都是 XYXY 格式,以绝对坐标为单位。
sem_seg: (H,W) ndarray,类型为 uint8。每个元素都是像素的整数标签。
我们没有为其他类型指定约定,也没有在 detectron2 中包含使用其他类型的内置
Augmentation
。
-
-
类
detectron2.data.transforms.
AugmentationList
(augs)¶ 基类:
detectron2.data.transforms.Augmentation
应用一系列增强。
它具有
__call__
方法来应用增强。注意,
get_transform()
方法对于AugmentationList
是不可能的(如果调用,则会抛出错误),因为为了应用一系列增强,必须首先应用第 k 个增强,以提供第 (k+1) 个增强所需的输入。-
__init__
(augs)¶ - 参数
augs (列表[Augmentation 或 Transform]) –
-
-
class
detectron2.data.transforms.
AugInput
(image: numpy.ndarray, *, boxes: Optional[numpy.ndarray] = None, sem_seg: Optional[numpy.ndarray] = None)¶ 基础:
object
可以与
Augmentation.__call__()
一起使用的输入。 这是大多数用例的标准实现。 此类提供在__init__()
中定义的标准属性 “image”, “boxes”, “sem_seg”,它们可能被不同的增强操作需要。 大多数增强策略不需要超出这三个属性的属性。在将增强操作应用于这些属性(使用
AugInput.transform()
)之后,返回的转换可以用来转换用户拥有的其他数据结构。示例
input = AugInput(image, boxes=boxes) tfms = augmentation(input) transformed_image = input.image transformed_boxes = input.boxes transformed_other_data = tfms.apply_other(other_data)
使用新数据类型的扩展项目可能实现需要其他输入的增强策略。 算法可能需要以不同于此类中定义的标准方法来转换输入。 在这些罕见的情况下,用户可以实现一个类似于此类的类,它满足以下条件
输入必须以属性访问(
getattr
)的形式提供对这些数据的访问。 例如,如果要应用的Augmentation
需要 “image” 和 “sem_seg” 参数,则其输入必须具有 “image” 和 “sem_seg” 属性。输入必须具有一个
transform(tfm: Transform) -> None
方法,它对所有属性进行就地转换。
-
__init__
(image: numpy.ndarray, *, boxes: Optional[numpy.ndarray] = None, sem_seg: Optional[numpy.ndarray] = None)¶
-
transform
(tfm: detectron2.data.transforms.Transform) → None¶ 对该类的所有属性进行就地转换。
“就地”是指在调用此方法后,访问
self.image
等属性将返回转换后的数据。
-
class
detectron2.data.transforms.
FixedSizeCrop
(crop_size: Tuple[int], pad: bool = True, pad_value: float = 128.0, seg_pad_value: int = 255)¶ 基类:
detectron2.data.transforms.Augmentation
如果 crop_size 小于输入图像大小,则使用该裁剪大小的随机裁剪。 如果 crop_size 大于输入图像大小,则如果 pad 为 True,则将图像的右侧和底部填充到裁剪大小,否则返回较小的图像。
-
__init__
(crop_size: Tuple[int], pad: bool = True, pad_value: float = 128.0, seg_pad_value: int = 255)¶ - 参数
crop_size – 目标图像(高度、宽度)。
pad – 如果为 True,则将小于 crop_size 的图像填充到 crop_size
pad_value – 图像的填充值。
seg_pad_value – 分割掩码的填充值。
-
get_transform
(image: numpy.ndarray) → detectron2.data.transforms.TransformList¶
-
-
class
detectron2.data.transforms.
RandomApply
(tfm_or_aug, prob=0.5)¶ 基类:
detectron2.data.transforms.Augmentation
以给定概率随机应用增强操作。
-
__init__
(tfm_or_aug, prob=0.5)¶ - 参数
tfm_or_aug (Transform, Augmentation) – 要应用的转换或增强操作。 它可以是 Transform 或 Augmentation 实例。
prob (float) – 包装变换应用的概率,在 0.0 到 1.0 之间
-
get_transform
(*args)¶
-
-
class
detectron2.data.transforms.
RandomBrightness
(intensity_min, intensity_max)¶ 基类:
detectron2.data.transforms.Augmentation
随机变换图像亮度。
亮度强度在 (intensity_min, intensity_max) 中均匀采样。 - intensity < 1 将降低亮度 - intensity = 1 将保留输入图像 - intensity > 1 将增加亮度
请参阅:https://pillow.pythonlang.cn/en/3.0.x/reference/ImageEnhance.html
-
__init__
(intensity_min, intensity_max)¶
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomContrast
(intensity_min, intensity_max)¶ 基类:
detectron2.data.transforms.Augmentation
随机变换图像对比度。
对比度强度在 (intensity_min, intensity_max) 中均匀采样。 - intensity < 1 将降低对比度 - intensity = 1 将保留输入图像 - intensity > 1 将增加对比度
请参阅:https://pillow.pythonlang.cn/en/3.0.x/reference/ImageEnhance.html
-
__init__
(intensity_min, intensity_max)¶
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomCrop
(crop_type: str, crop_size)¶ 基类:
detectron2.data.transforms.Augmentation
从图像中随机裁剪一个矩形区域。
-
__init__
(crop_type: str, crop_size)¶ - 参数
“relative”: 从大小为 (H, W) 的输入图像中裁剪 (H * crop_size[0], W * crop_size[1]) 区域。裁剪大小应在 (0, 1] 之间。
“relative_range”: 从 [crop_size[0], 1] 和 [crop_size[1]], 1] 中均匀采样两个值,并在“relative”裁剪类型中使用它们。
“absolute” 从输入图像中裁剪 (crop_size[0], crop_size[1]) 区域。裁剪大小必须小于输入图像大小。
“absolute_range”, 对于大小为 (H, W) 的输入,在 [crop_size[0], min(H, crop_size[1])] 中均匀采样 H_crop,在 [crop_size[0], min(W, crop_size[1])] 中均匀采样 W_crop。然后裁剪一个 (H_crop, W_crop) 区域。
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomExtent
(scale_range, shift_range)¶ 基类:
detectron2.data.transforms.Augmentation
通过裁剪源图像的随机“子矩形”来输出图像。
子矩形可以参数化以包含源图像之外的像素,在这种情况下,它们将被设置为零(即黑色)。输出图像的大小将随随机子矩形的大小而变化。
-
__init__
(scale_range, shift_range)¶ - 参数
output_size (h, w) – 输出图像的尺寸
scale_range (l, h) – 输入到输出大小缩放因子的范围
shift_range (x, y) – 裁剪子矩形的偏移范围。矩形将按 [w / 2 * Uniform(-x, x), h / 2 * Uniform(-y, y)] 偏移,其中 (w, h) 是输入图像的 (宽度, 高度)。将每个分量设置为零以在图像的中心裁剪。
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomFlip
(prob=0.5, *, horizontal=True, vertical=False)¶ 基类:
detectron2.data.transforms.Augmentation
以给定概率水平或垂直翻转图像。
-
__init__
(prob=0.5, *, horizontal=True, vertical=False)¶ - 参数
prob (float) – 翻转概率。
horizontal (boolean) – 是否应用水平翻转
vertical (boolean) – 是否应用垂直翻转
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomSaturation
(intensity_min, intensity_max)¶ 基类:
detectron2.data.transforms.Augmentation
随机变换 RGB 图像的饱和度。假设输入图像具有“RGB”通道顺序。
饱和度强度在 (intensity_min, intensity_max) 中均匀采样。 - intensity < 1 会降低饱和度(使图像更接近灰度) - intensity = 1 会保留输入图像 - intensity > 1 会提高饱和度
请参阅:https://pillow.pythonlang.cn/en/3.0.x/reference/ImageEnhance.html
-
__init__
(intensity_min, intensity_max)¶
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomLighting
(scale)¶ 基类:
detectron2.data.transforms.Augmentation
AlexNet 中描述的“照明”增强,使用 ImageNet 上的固定 PCA。假设输入图像具有“RGB”通道顺序。
颜色抖动的程度通过正态分布随机采样,标准差由尺度参数给出。
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomRotation
(angle, expand=True, center=None, sample_style='range', interp=None)¶ 基类:
detectron2.data.transforms.Augmentation
此方法返回此图像的副本,该副本围绕给定中心逆时针旋转给定度数。
-
__init__
(angle, expand=True, center=None, sample_style='range', interp=None)¶ - 参数
angle (list[float]) – 如果
sample_style=="range"
,则为从其采样角度(以度为单位)的 [最小值, 最大值] 区间。如果sample_style=="choice"
,则为从其采样的角度列表expand (bool) – 选择是否应调整图像大小以适应整个旋转图像(默认值),或简单地裁剪
center (list[[float, float]]) – 如果
sample_style=="range"
,则为从其采样中心的 [[最小x, 最小y], [最大x, 最大y]] 相对区间,[0, 0] 为图像的左上角,[1, 1] 为右下角。如果sample_style=="choice"
,则为从其采样的中心列表默认:None,表示旋转中心为图像中心中心如果 expand=True 则没有效果,因为它只影响偏移
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
Resize
(shape, interp=2)¶ 基类:
detectron2.data.transforms.Augmentation
将图像调整为固定目标大小
-
__init__
(shape, interp=2)¶ - 参数
shape – (h, w) 元组或 int
interp – PIL 插值方法
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
ResizeScale
(min_scale: float, max_scale: float, target_height: int, target_width: int, interp: int = 2)¶ 基类:
detectron2.data.transforms.Augmentation
该函数以目标尺寸作为输入,并随机将目标尺寸在 min_scale 和 max_scale 之间缩放。然后,它对输入图像进行缩放,使其在缩放后的目标框内,保持纵横比不变。这实现了 Google 的“resize_and_crop”数据增强中的调整大小部分:https://github.com/tensorflow/tpu/blob/master/models/official/detection/utils/input_utils.py#L127
-
__init__
(min_scale: float, max_scale: float, target_height: int, target_width: int, interp: int = 2)¶ - 参数
min_scale – 最小图像缩放范围。
max_scale – 最大图像缩放范围。
target_height – 目标图像高度。
target_width – 目标图像宽度。
interp – 图像插值方法。
-
get_transform
(image: numpy.ndarray) → detectron2.data.transforms.Transform¶
-
-
class
detectron2.data.transforms.
ResizeShortestEdge
(short_edge_length, max_size=9223372036854775807, sample_style='range', interp=2)¶ 基类:
detectron2.data.transforms.Augmentation
调整图像大小,同时保持纵横比不变。它尝试将较短的边缩放为给定的 short_edge_length,只要较长的边不超过 max_size。如果达到 max_size,则缩小尺寸,以使较长的边不超过 max_size。
-
__init__
(short_edge_length, max_size=9223372036854775807, sample_style='range', interp=2)¶
-
static
get_output_shape
(oldh: int, oldw: int, short_edge_length: int, max_size: int) → Tuple[int, int][source]¶ 计算给定输入尺寸和目标最短边长度的输出尺寸。
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
RandomCrop_CategoryAreaConstraint
(crop_type: str, crop_size, single_category_max_area: float = 1.0, ignored_category: int = None)¶ 基类:
detectron2.data.transforms.Augmentation
类似于
RandomCrop
,但它会找到一个裁剪窗口,这样在语义分割地面真实数据中,没有单个类别占用的比例超过 single_category_max_area,这会导致训练不稳定。该函数尝试最多尝试 10 次找到这样一个有效的裁剪窗口。-
__init__
(crop_type: str, crop_size, single_category_max_area: float = 1.0, ignored_category: int = None)¶ - 参数
crop_type – 与
RandomCrop
中的相同。crop_size – 与
RandomCrop
中的相同。single_category_max_area – 允许的最大类别面积比例。设置为 1.0 以禁用。
ignored_category – 允许语义分割地面真实数据中的此类别超过面积比例。通常设置为训练中被忽略的类别。
-
get_transform
(image, sem_seg)¶
-
-
class
detectron2.data.transforms.
RandomResize
(shape_list, interp=2)¶ 基类:
detectron2.data.transforms.Augmentation
随机将图像调整大小到 shape_list 中的目标尺寸。
-
__init__
(shape_list, interp=2)¶ - 参数
shape_list – (h, w) 形状列表。
interp – PIL 插值方法
-
get_transform
(image)¶
-
-
class
detectron2.data.transforms.
MinIoURandomCrop
(min_ious=0.1, 0.3, 0.5, 0.7, 0.9, min_crop_size=0.3, mode_trials=1000, crop_trials=50)¶ 基类:
detectron2.data.transforms.Augmentation
随机裁剪图像和边界框,裁剪后的补丁与原始图像和边界框具有最小 IoU 要求,IoU 阈值从 min_ious 中随机选择。
- 参数
-
get_transform
(image, boxes)¶ 调用函数以使用最小 IoU 约束裁剪图像和边界框。
- 参数
boxes – 地面真实框,以 (x1, y1, x2, y2) 格式表示。