简介
基于pytorch的目标检测数据增强工具包。
实现了从 VOC格式数据集 -> transforms -> 无限dotaloader -> mosaic数据增强 -> anchors匹配 => 输出 : tuple(image[B, C, H, W], boxes[B, num_anchors * num_classes, 4], labels[B, num_anchors*num_classes], image_name[B])
mosaic
mosaic图片合成,在dotaloader中实现,
在合成mosaic时,读入四张图片。先随机生成图片交汇点;然后计算各位置图片所需尺寸;对四张图片分别进行尺寸裁剪,并去除中心在裁剪区域外的标注框;合并生成mosaic图片。
在合成前,通过dataset中transforms对单张图片进行数据增强。
AnchorsAssigner (anchors分配)
实现了两种anchor分配方式:通过交并比分配,通过宽高比分配。
Transforms (数据增强)
所实现的数据增强方式,均是针对目标检测任务。输入均为 image, boxes, labels。
- ToTensor() # 转换npndarry为tensor。(一般不需要使用,在dataloader中会自动转换)
- ConvertBoxesToValue() # 将boxes从百分比形式转换为值形式。
- ConvertBoxesToPercentage() # 将boxes从值形式转换为百分比形式。
- ConvertBoxesForm(from_form: str, to_form: str) # 转换boxes格式。’xyxy’ 或 ‘cxcywh’
- Resize(size: Tuple[int, int]) # resize
- AdaptiveResize(size: Tuple[int, int], value: Union[Tuple[int, int, int], Tuple[Tuple[int, int, int], …]]=(114, 114, 114)) # 自适应resize。保持图像宽高比,短边补黑边。
- Scaled(scale: Union[float, Tuple[float, float]]) # 放大缩小图片。输入缩放比例值或缩放比例范围。
- CropIou(iou:Union[float, Tuple[float, …]]) # 按指定最小iou截图图片。指定一个或多个iou值。
- CropSize(size:Union[Tuple[int, int], Tuple[Tuple[int, int], …]]) # 按指定尺寸截取图片。图片尺寸小于截取尺寸时,先resize大图片,然后截取。
- SubtractMeans(mean: Tuple[float, float, float]) # 减均值
- DivideStds(std: Tuple[float, float, float]) # 除方差
- GaussNoise(scale: Union[float, Tuple[float, float]]=(0, 0.1), probability: float=0.5) # 高斯噪声。指定一个值或一个范围
- SalePepperNoise(sale_scale: Union[float, Tuple[float, float]]=(0, 0.03), pepper_scale: Union[float, Tuple[float, float]]=(0, 0.03), probability: float=0.5) # 椒盐噪声。参数分别为盐噪声比例与椒噪声比例,指定一个值或一个范围。
- GaussBlur(ksize: Union[int, Tuple[int, …]]=(3, 5, 7, 9), probability: float=0.5) # 高斯平滑(高斯模糊)。高斯核大小,指定一个值或多个值,必须为正奇数。
- MotionBlue(ksize: Union[int, Tuple[int, …]]=(3, 5, 7, 9, 11), angle: Union[int, Tuple[int, int]] = (0, 30), probability: float=0.5) # 运动平滑(运动模糊)。参数为核大小与运动角度。核大小,指定一个或多个值,必须为正奇数;运动角度,指定一个值或一个范围。
- Cutout(num: Union[int, Tuple[int, …]]=(1, 2, 3, 4), size: Union[Tuple[float, float], Tuple[Tuple[float, float], …]]=((0.2, 0.2), (0.3, 0.3)), value:Union[Tuple[int, int, int], Tuple[Tuple[int, int, int], …]]=(114, 114, 114), cover: float=0.5, probability: float=0.5) # 遮挡。参数为遮挡块数量、遮挡块尺寸系数、遮挡块填充值与遮挡阈值。遮挡块数量,指定一个值或多个值;遮挡块尺寸,指定一组值或多组值(宽高);遮挡块填充值,指定一组值或多种值。
- RandomFlipLR(probability: float=0.5) # 左右翻转。
- RandomFlipUD(probability: float=0.5) # 上下翻转。
- ShuffleChannels(mode: Union[Tuple[int, int, int], Tuple[Tuple[int, int, int], ]]=((0, 2, 1), (1, 0, 2), (1, 2, 0),(2, 0, 1), (2, 1, 0)), probability: float=0.5) # 交换通道。指定一组值或多组值。
- ChangeContrast(scale:Union[float, Tuple[float, float]]=(-0.5, 0.5), probability: float=0.5) # 对比度调整。指定一个值或一个范围。
- ChangeHue(scale: Union[int, Tuple[int, int]]=(0, 360), probability: float=0.5) # 色调调整。指定一个值或一个范围。
- ChangeSaturation(scale: Union[float, Tuple[float, float]]=(-1, 1), probability: float=0.5) # 饱和度调整。指定一个值或一个范围。
- ChangeBrightness(scale: Union[float, Tuple[float, float]]=(-0.3, 0.3), probability: float=0.5) # 亮度调整。指定一个值或一个范围。
- Compose(transforms)
色彩调整
翻转
噪声
椒盐噪声 | ![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
SalePepperNoise | 0.01, 0.01 |
0.02, 0.02 |
0.03, 0.03 |
0, 0.01 |
0.01, 0 |
0, 0.02 |
0.02, 0 |
高斯噪声 | ![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
![]() ![]() ![]() |
||
GaussNoise | 0.01 | 0.05 | 0.1 | 0.2 | 0.3 |
模糊
遮挡