关于MMSegmentation/MMCV中的random resize与keep ratio

本文只考虑基本用法。常用的三个参数如下所示:

RandomResize(scale, ratio, keep_ratio):

其中,scale一般是个tuple,格式为(w, h),可以理解为缩放的基数。其中,w是宽度的基数,h是高度的基数。

ratio_range也是一个tuple,格式为(s1, s2),可以理解为缩放的倍率。大多数情况下ratio_range会被设置成(0.5, 2.0),也就是在缩小一半与放大一倍的区间内随机抽取。

那么,如果keep_ratio设为False,此时当前新图像的宽度为,从s1与s2区间内随机取一个倍率,并乘以scale[0]。高度则为同样的倍率下乘以scale[1]。注意这里宽与高的缩放用的是同一个倍率。

如果keep_ratio设为True,那么会在keep_ratio为False所得的结果上进行进一步校正。以保证输出图像的宽高比与原输入图像一致。具体来说,在缩放完后,会将新图的高度除以原图的高度,得到高度的缩放比例r1;将新图的宽度除以原图的宽度,得到宽度的缩放比例r2。那么,最终的缩放比例将以r1 r2中较小的值为准。

这里举一个更具体的例子,假如图像的原宽度为1280,高度为720,给定random resize配置如下:

dict(
    ratio_range=(
        0.5,
        2.0,
    ),
    scale=(
        2880,
        720,
    ),
    type='RandomResize')

考虑随机抽取到的ratio为1.5:
如果keep_ratio设为False,那么新图像的宽度为2880×1.5=4320;高度为720×1.5=1080。
如果keep_ratio设为True,那么宽度的倍率为4320/1280=3.375,高度的倍率为1080/720=1.5。此时按较小的倍率1.5为准,修正后的最终宽度为1280×1.5=1920。

从另一个角度理解,如果keep_ratio设为True,scale参数会先被校正以与原图像的宽高比一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值