pytorch版本SSD代码分析(2)——数据增强

本文详细解析了PyTorch实现的SSD模型中的数据增强技术,包括PhotometricDistort步骤,如随机调整亮度、对比度、饱和度和色调;Expand操作,即随机扩张图片,并用均值填充;以及RandomSampleCrop,确保包含目标bbox的随机剪裁。这些增强技术有助于提升模型的泛化能力。
摘要由CSDN通过智能技术生成

本代码是pytorch版本的ssd实现,来源amdegroot/ssd.pytorch

一、PhotometricDistort

class PhotometricDistort(object):
    def __init__(self):
        #定义6个操作
        self.pd = [
            RandomContrast(),
            ConvertColor(transform='HSV'),
            RandomSaturation(),
            RandomHue(),
            ConvertColor(current='HSV', transform='BGR'),
            RandomContrast()
        ]
        self.rand_brightness = RandomBrightness()
        self.rand_light_noise = RandomLightingNoise()

    def __call__(self, image, boxes, labels):
        im = image.copy()
        im, boxes, labels = self.rand_brightness(im, boxes, labels)
        if random.randint(2):
            distort = Compose(self.pd[:-1]) #最先做RandomContrast
        else:
            distort = Compose(self.pd[1:])  #最后做RandomContrast
        im, boxes, labels = distort(im, boxes, labels)
        return self.rand_light_noise(im, boxes, labels)

RandomBrightness(随机改变亮度):

在原有图片像素上加一个实数(实数的范围在[-32,32])

其中:random.randint(2):在0和1之间随机产生一个数,random.uniform(x, y) :将随机生成一个实数,它在 [x,y] 范围

class RandomBrightness(object):
    def __init__(self, delta=32):
        #默认delta=32,delta的范围要在0-255之间
        assert delta >= 0.0
        assert delta <= 255.0
        self.delta = delta

    def __call__(self, image, boxes=None, labels=None):
        if random.randint(2):
            delta = random.uniform(-self.delta, self.delta)
            image += delta
        return image, boxes, labels

RandomContrast(随机改变对比度):

在原图像素上乘一个系数(系数的范围在[0.5,1.5])

class RandomContras
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值