参考资料 ultralytics/data/augment.py
备注
该文件可从https://github.com/ultralytics/ultralytics/blob/main/ ultralytics/data/augment .py 获取。如果您发现问题,请通过提交 Pull Request🛠️ 帮助修复。谢谢🙏!
ultralytics.data.augment.BaseTransform
图像变换基类
这是一个通用转换类,可根据特定的图像处理需求进行扩展。 该类旨在兼容分类和语义分割任务。
方法
名称 | 说明 |
---|---|
__init__ |
初始化 BaseTransform 对象。 |
apply_image |
对标签进行图像转换。 |
apply_instances |
对标签中的对象实例进行转换。 |
apply_semantic |
对图像进行语义分割。 |
__call__ |
将所有标签变换应用于图像、实例和语义掩码。 |
源代码 ultralytics/data/augment.py
__call__(labels)
__init__()
apply_image(labels)
apply_instances(labels)
ultralytics.data.augment.Compose
用于合成多种图像变换的类。
源代码 ultralytics/data/augment.py
__call__(data)
__getitem__(index)
使用索引检索特定变换或一组变换。
源代码 ultralytics/data/augment.py
__init__(transforms)
__repr__()
__setitem__(index, value)
使用索引检索特定变换或一组变换。
源代码 ultralytics/data/augment.py
append(transform)
insert(index, transform)
ultralytics.data.augment.BaseMixTransform
用于基本混合(MixUp/Mosaic)转换的类。
该实现来自 mmyolo。
源代码 ultralytics/data/augment.py
__call__(labels)
对标签数据应用预处理变换和混合/马赛克变换。
源代码 ultralytics/data/augment.py
__init__(dataset, pre_transform=None, p=0.0)
使用数据集、预变换和概率初始化 BaseMixTransform 对象。
ultralytics.data.augment.Mosaic
马赛克增强
该类通过将多幅(4 幅或 9 幅)图像合并为一幅马赛克图像来执行马赛克增强。 扩增以给定的概率应用于数据集。
属性
名称 | 类型 | 说明 |
---|---|---|
dataset |
应用马赛克增强的数据集。 |
|
imgsz |
int
|
单张图像马赛克管道后的图像大小(高度和宽度)。默认为 640。 |
p |
float
|
应用镶嵌增强的概率。范围必须为 0-1。默认为 1.0。 |
n |
int
|
网格大小,4(2x2)或 9(3x3)。 |
源代码 ultralytics/data/augment.py
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
|
__init__(dataset, imgsz=640, p=1.0, n=4)
使用数据集、图像大小、概率和边框初始化对象。
源代码 ultralytics/data/augment.py
get_indexes(buffer=True)
返回数据集中的随机索引列表。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.MixUp
用于对数据集进行 MixUp 增强的类。
源代码 ultralytics/data/augment.py
__init__(dataset, pre_transform=None, p=0.0)
使用数据集、预变换和应用 MixUp 的概率初始化 MixUp 对象。
ultralytics.data.augment.RandomPerspective
对图像和相应的边界框、线段和关键点执行随机透视和仿射变换。 关键点。这些变换包括旋转、平移、缩放和剪切。该类还提供 选项,以指定的概率有条件地应用这些变换。
属性
名称 | 类型 | 说明 |
---|---|---|
degrees |
float
|
随机旋转的度数范围。 |
translate |
float
|
随机平移时总宽度和高度的分数。 |
scale |
float
|
缩放因子区间,例如,缩放因子为 0.1 时,可在 90%-110% 之间调整大小。 |
shear |
float
|
剪切强度(角度,单位为度)。 |
perspective |
float
|
透视失真系数 |
border |
tuple
|
指定镶嵌边框的元组。 |
pre_transform |
callable
|
在开始随机变换之前应用于图像的函数/变换。 |
方法
名称 | 说明 |
---|---|
affine_transform |
对图像进行一系列仿射变换。 |
apply_bboxes |
使用计算出的仿射矩阵变换包围盒。 |
apply_segments |
转换线段并生成新的边界框。 |
apply_keypoints |
转换关键点。 |
__call__ |
对图像及其相应注释进行转换的主要方法。 |
box_candidates |
在变换后过滤掉不符合特定条件的边框。 |
源代码 ultralytics/data/augment.py
391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 |
|
__call__(labels)
仿射图像和目标
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
labels |
dict
|
一个 |
所需 |
源代码 ultralytics/data/augment.py
__init__(degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, border=(0, 0), pre_transform=None)
使用变换参数初始化 RandomPerspective 对象。
源代码 ultralytics/data/augment.py
affine_transform(img, border)
应用以图像中心为中心的仿射变换序列。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
img |
ndarray
|
输入图像。 |
所需 |
border |
tuple
|
边界尺寸 |
所需 |
返回:
名称 | 类型 | 说明 |
---|---|---|
img |
ndarray
|
转换后的图像。 |
M |
ndarray
|
转换矩阵。 |
s |
float
|
比例系数。 |
源代码 ultralytics/data/augment.py
apply_bboxes(bboxes, M)
仅对 bboxes 应用仿射。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
bboxes |
ndarray
|
bboxes 列表,格式为 xyxy,形状为(num_bboxes, 4)。 |
所需 |
M |
ndarray
|
仿射矩阵 |
所需 |
返回:
名称 | 类型 | 说明 |
---|---|---|
new_bboxes |
ndarray
|
仿射后的 bboxes,[num_bboxes, 4]。 |
源代码 ultralytics/data/augment.py
apply_keypoints(keypoints, M)
对关键点应用仿射。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
keypoints |
ndarray
|
关键点,[N,17,3]。 |
所需 |
M |
ndarray
|
仿射矩阵 |
所需 |
返回:
名称 | 类型 | 说明 |
---|---|---|
new_keypoints |
ndarray
|
仿射后的关键点,[N,17,3]。 |
源代码 ultralytics/data/augment.py
apply_segments(segments, M)
对线段应用仿射,并从线段生成新的 bboxes。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
segments |
ndarray
|
分段列表,[num_samples, 500, 2]。 |
所需 |
M |
ndarray
|
仿射矩阵 |
所需 |
返回:
名称 | 类型 | 说明 |
---|---|---|
new_segments |
ndarray
|
仿射后的线段列表,[num_samples, 500, 2]。 |
new_bboxes |
ndarray
|
仿射后的 bboxes,[N,4]。 |
源代码 ultralytics/data/augment.py
box_candidates(box1, box2, wh_thr=2, ar_thr=100, area_thr=0.1, eps=1e-16)
根据一组阈值计算候选方框。这种方法会比较方框 来决定一个方框是否可以进一步处理。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
box1 |
ndarray
|
增强前的 4,n 边界框,表示为 [x1, y1, x2, y2]。 |
所需 |
box2 |
ndarray
|
增强后的 4,n 边界框,表示为 [x1, y1, x2, y2]。 |
所需 |
wh_thr |
float
|
以像素为单位的宽度和高度阈值。默认为 2。 |
2
|
ar_thr |
float
|
长宽比阈值。默认为 100。 |
100
|
area_thr |
float
|
面积比率阈值。默认为 0.1。 |
0.1
|
eps |
float
|
一个小的ε值,用于防止除以零。默认值为 1e-16。 |
1e-16
|
返回:
类型 | 说明 |
---|---|
ndarray
|
布尔数组,表示根据给定的阈值哪些方框是候选方框。 |
源代码 ultralytics/data/augment.py
ultralytics.data.augment.RandomHSV
该类负责对图像的色调、饱和度和值 (HSV) 通道执行随机调整。 通道进行随机调整。
调整是随机的,但在 hgain、sgain 和 vgain 设置的范围内。
源代码 ultralytics/data/augment.py
__call__(labels)
在预定义范围内对图像进行随机 HSV 增强。
修改后的图像会取代输入 "标签 "字段中的原始图像。
源代码 ultralytics/data/augment.py
__init__(hgain=0.5, sgain=0.5, vgain=0.5)
使用每个 HSV 通道的增益初始化 RandomHSV 类。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
hgain |
float
|
色调的最大变化。默认值为 0.5。 |
0.5
|
sgain |
float
|
饱和度的最大变化。默认为 0.5。 |
0.5
|
vgain |
float
|
值的最大变化。默认为 0.5。 |
0.5
|
源代码 ultralytics/data/augment.py
ultralytics.data.augment.RandomFlip
以给定的概率对图像进行随机水平或垂直翻转。
还会相应更新任何实例(边框、关键点等)。
源代码 ultralytics/data/augment.py
__call__(labels)
对图像进行随机翻转,并相应更新任何实例(如边界框或关键点)。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
labels |
dict
|
包含键 "img "和 "实例 "的字典。img "是要翻转的图像。 实例 "是一个包含边界框和可选关键点的对象。 |
所需 |
返回:
类型 | 说明 |
---|---|
dict
|
在 "img "和 "instances "键下,对翻转图像和更新实例进行同样的操作。 |
源代码 ultralytics/data/augment.py
__init__(p=0.5, direction='horizontal', flip_idx=None)
用概率和方向初始化 RandomFlip 类。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
p |
float
|
应用翻转的概率。默认值为 0.5。 |
0.5
|
direction |
str
|
应用翻转的方向。必须是 "水平 "或 "垂直"。 默认为 "水平"。 |
'horizontal'
|
flip_idx |
array - like
|
用于翻转关键点的索引映射(如果有)。 |
None
|
源代码 ultralytics/data/augment.py
ultralytics.data.augment.LetterBox
为检测、实例分割和姿势调整图像大小和填充。
源代码 ultralytics/data/augment.py
__call__(labels=None, image=None)
返回更新后的标签和图像,并添加边框。
源代码 ultralytics/data/augment.py
__init__(new_shape=(640, 640), auto=False, scaleFill=False, scaleup=True, center=True, stride=32)
使用特定参数初始化 LetterBox 对象。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.CopyPaste
实现论文 https://arxiv.org/abs/2012.07177 中描述的复制粘贴增强功能。该类 负责在图像及其相应实例上应用复制粘贴增强功能。
源代码 ultralytics/data/augment.py
__call__(labels)
将复制粘贴增强功能应用于给定的图像和实例。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
labels |
dict
|
包含以下内容的词典 - img":要增强的图像。 - 'cls':与实例相关的类标签。 - 实例包含边界框以及关键点和线段的对象。 |
所需 |
返回:
类型 | 说明 |
---|---|
dict
|
Dict 在 "img"、"cls "和 "instances "键下包含增强的图像和更新的实例。 |
说明
- 要使该增强功能生效,实例必须将 "段 "作为其属性之一。
- 该方法会对输入字典 "标签 "进行适当修改。
源代码 ultralytics/data/augment.py
__init__(p=0.5)
以给定的概率初始化 CopyPaste 类。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
p |
float
|
应用复制粘贴增强功能的概率。必须介于 0 和 1 之间。 默认值为 0.5。 |
0.5
|
源代码 ultralytics/data/augment.py
ultralytics.data.augment.Albumentations
Albumentations transformations.
可选,卸载软件包即可禁用。应用模糊、中值模糊、灰度转换、对比度限制自适应 直方图均衡化、亮度和对比度随机变化、RandomGamma 以及通过压缩降低图像质量。 压缩。
源代码 ultralytics/data/augment.py
__call__(labels)
生成对象检测并返回包含检测结果的字典。
源代码 ultralytics/data/augment.py
__init__(p=1.0)
初始化YOLO bbox 格式参数的变换对象。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.Format
为物体检测、实例分割和姿态估计任务格式化图像注释。该类
类将图像和实例注释标准化,供 collate_fn
PyTorch DataLoader 中。
属性
名称 | 类型 | 说明 |
---|---|---|
bbox_format |
str
|
边界框的格式。默认为 "xywh"。 |
normalize |
bool
|
是否规范化边界框。默认为 True。 |
return_mask |
bool
|
返回用于分割的实例掩码。默认为假。 |
return_keypoint |
bool
|
返回姿态估计的关键点。默认为假。 |
mask_ratio |
int
|
掩码的下采样率。默认值为 4。 |
mask_overlap |
bool
|
是否重叠遮罩。默认为 True。 |
batch_idx |
bool
|
保留批处理索引。默认为 True。 |
bgr |
float
|
返回 BGR 图像的概率。默认值为 0.0。 |
源代码 ultralytics/data/augment.py
919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 |
|
__call__(labels)
返回格式化的图像、类、边界框和关键点,供 "collate_fn "使用。
源代码 ultralytics/data/augment.py
__init__(bbox_format='xywh', normalize=True, return_mask=False, return_keypoint=False, return_obb=False, mask_ratio=4, mask_overlap=True, batch_idx=True, bgr=0.0)
使用给定参数初始化格式类。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.RandomLoadText
随机抽取正面文本和负面文本,并根据样本数量更新类别指数。
属性
名称 | 类型 | 说明 |
---|---|---|
prompt_format |
str
|
提示格式。默认为"{}"。 |
neg_samples |
tuple[int]
|
随机抽取负文本的游侠,默认值为 (80,80)。 |
max_samples |
int
|
一幅图像中不同文字样本的最大数量,默认为 80。 |
padding |
bool
|
是否将文本填充到 max_samples。默认为 "假"。 |
padding_value |
str
|
填充文本。默认为""。 |
源代码 ultralytics/data/augment.py
1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 |
|
__call__(labels)
返回更新的课程和课文。
源代码 ultralytics/data/augment.py
__init__(prompt_format='{}', neg_samples=(80, 80), max_samples=80, padding=False, padding_value='')
使用给定参数初始化 RandomLoadText 类。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.ClassifyLetterBox
YOLOv8 用于图像预处理的 LetterBox 类,旨在成为转换管道的一部分,例如:T.Compose([LetterBox(size, ToTensor()])、 T.Compose([LetterBox(size), ToTensor()]).
属性
名称 | 类型 | 说明 |
---|---|---|
h |
int
|
图像的目标高度。 |
w |
int
|
图像的目标宽度。 |
auto |
bool
|
如果为 True,则使用步长自动求解短边。 |
stride |
int
|
跨距值,当 "auto "为 True 时使用。 |
源代码 ultralytics/data/augment.py
__call__(im)
使用信箱方法调整图像大小并填充。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
im |
ndarray
|
输入图像是一个 HWC 形状的 numpy 数组。 |
所需 |
返回:
类型 | 说明 |
---|---|
ndarray
|
以 numpy 数组的形式显示经过信箱化和大小调整的图像。 |
源代码 ultralytics/data/augment.py
__init__(size=(640, 640), auto=False, stride=32)
使用目标尺寸、自动标记和 stride 初始化 ClassifyLetterBox 类。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
size |
Union[int, Tuple[int, int]]
|
信箱的目标尺寸(高、宽)。 |
(640, 640)
|
auto |
bool
|
如果为 True,则根据步幅自动计算短边。 |
False
|
stride |
int
|
跨距值,当 "auto "为 True 时使用。 |
32
|
源代码 ultralytics/data/augment.py
ultralytics.data.augment.CenterCrop
YOLOv8 用于图像预处理的 CenterCrop 类,旨在成为转换管道的一部分,例如:T.Compose([CenterCrop(size, ToTensor()])、 T.Compose([CenterCrop(size), ToTensor()]).
源代码 ultralytics/data/augment.py
__call__(im)
使用信箱方法调整和裁剪图像中心。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
im |
ndarray
|
输入图像是一个 HWC 形状的 numpy 数组。 |
所需 |
返回:
类型 | 说明 |
---|---|
ndarray
|
经过居中裁剪和大小调整的图像,作为一个 numpy 数组。 |
源代码 ultralytics/data/augment.py
ultralytics.data.augment.ToTensor
YOLOv8 用于图像预处理的 ToTensor 类,即 T.Compose([LetterBox(size), ToTensor()])。
源代码 ultralytics/data/augment.py
__call__(im)
将图像从 numpy 数组转换为PyTorch tensor ,应用可选的半精度和归一化。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
im |
ndarray
|
输入图像为一个按 BGR 顺序排列的形状为(高、宽、高)的 numpy 数组。 |
所需 |
返回:
类型 | 说明 |
---|---|
Tensor
|
变换后的图像PyTorch tensor ,单位为 float32 或 float16,归一化为 [0,1]。 |
源代码 ultralytics/data/augment.py
ultralytics.data.augment.v8_transforms(dataset, imgsz, hyp, stretch=False)
将图像转换为适合YOLOv8 训练的大小。
源代码 ultralytics/data/augment.py
ultralytics.data.augment.classify_transforms(size=224, mean=DEFAULT_MEAN, std=DEFAULT_STD, interpolation=Image.BILINEAR, crop_fraction=DEFAULT_CROP_FRACTION)
用于评估/推断的分类变换。灵感来自 timm/data/transforms_factory.py。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
size |
int
|
图像大小 |
224
|
mean |
tuple
|
RGB 通道的平均值 |
DEFAULT_MEAN
|
std |
tuple
|
RGB 通道的标准值 |
DEFAULT_STD
|
interpolation |
InterpolationMode
|
默认为 T.InterpolationMode.BILINEAR。 |
BILINEAR
|
crop_fraction |
float
|
要裁剪图像的分数,默认为 1.0。 |
DEFAULT_CROP_FRACTION
|
返回:
类型 | 说明 |
---|---|
Compose
|
火炬视觉转换 |
源代码 ultralytics/data/augment.py
ultralytics.data.augment.classify_augmentations(size=224, mean=DEFAULT_MEAN, std=DEFAULT_STD, scale=None, ratio=None, hflip=0.5, vflip=0.0, auto_augment=None, hsv_h=0.015, hsv_s=0.4, hsv_v=0.4, force_color_jitter=False, erasing=0.0, interpolation=Image.BILINEAR)
用于训练的增强分类变换。灵感来自 timm/data/transforms_factory.py。
参数
名称 | 类型 | 说明 | 默认值 |
---|---|---|---|
size |
int
|
图像大小 |
224
|
scale |
tuple
|
图像的比例范围。默认为(0.08, 1.0) |
None
|
ratio |
tuple
|
默认为(3./4.、4./3.)。 |
None
|
mean |
tuple
|
RGB 通道的平均值 |
DEFAULT_MEAN
|
std |
tuple
|
RGB 通道的标准值 |
DEFAULT_STD
|
hflip |
float
|
横向翻转概率 |
0.5
|
vflip |
float
|
垂直翻转概率 |
0.0
|
auto_augment |
str
|
自动增强策略。可以是 "randaugment"、"augmix"、"autoaugment "或无。 |
None
|
hsv_h |
float
|
图像 HSV 色调增强(分数) |
0.015
|
hsv_s |
float
|
图像 HSV 饱和度增强(分数) |
0.4
|
hsv_v |
float
|
图像 HSV 值增强(分数) |
0.4
|
force_color_jitter |
bool
|
即使启用了自动增强功能,也会强制应用色彩抖动 |
False
|
erasing |
float
|
随机擦除概率 |
0.0
|
interpolation |
InterpolationMode
|
默认为 T.InterpolationMode.BILINEAR。 |
BILINEAR
|
返回:
类型 | 说明 |
---|---|
Compose
|
火炬视觉转换 |
源代码 ultralytics/data/augment.py
1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 |
|