图像切割采样方法

首先考虑这样一个问题:

你需要识别一张大小为(X,Y)的图像,但你的模型只能支持大小为(x,y)的图像输入,其中x<<X,y<<Y,你应该怎样把图像送到模型输入中去。

一个最显然也最直观的想法是resize,当然,很多时候它很有效。但假如,图像最明显的特征出现在局部而非整体呢?

本人在2020年泰迪杯B题中首次遇到这个问题,显然问题的核心在于切割图片,然而如何切分图片却是一个值得研究的问题,当初采用的是“晶格随机法”,首先将大图平均分割为若干中图,再在每张中图中切割出一张小图。

我并不清楚上述方案的好坏,但显然,如今我找到了一个明显更好的解决方案——在讨论解决方案之前,让我们将问题描述的更具体一些:

你需要将一张(X,Y)大小的图像,切割为(x,y)大小的图像,其中x<<X,y<<Y,你需要充分利用(X,Y)中的每一个像素,同时尽量避免某片区域像素被引用太多。

显然,问题的关键是“整倍数”问题,如果x、y恰好可以整除X、Y,那这张图片就可以被恰到好处的切割为\frac{x}{X}\times \frac{y}{Y}张,但如果不可以呢?

让我们来做一个简单的数学题:

已知 X = n * x + r,其中 r > 0,求覆盖长为 X 的跑道需要多少长为 x 的板砖?

显然,是 n+1

因此我们得到这样一个结论:

一张(X,Y)大小的、不为(x,y)整倍数的图片应该被切割为(n,m)张子图

显然,当这么多子图散布在整张图片上时,它们必然存在交叉的部分,为了“尽量打散”交叉的像素,我们需要让这些子图自身分布的尽可能均匀,考虑到子图的大小(x,y)无法改变,我们就必须改变子图的间距 -> 步长(sx,sy)

我们可以用一个简单的公式求出它:sx = (X-x) / n 

由于sx不一定是整数,我们用它计算 x 时需要进行取整

至此,"将一张(X,Y)大小的图像,切割为(x,y)大小的图像"这个任务顺利竣工。

接着……问题来了!这种切割方法一定会导致某些区域的像素被采集多次,假如你的问题对图像的边缘不敏感,但对重复采样引起的样本不平衡极度敏感,那怎么办?还是来描述一下这个问题:

你需要将一张(X,Y)大小的图像,切割为(x,y)大小的图像,其中x<<X,y<<Y,你需要避免同一像素的重复引用,同时尽可能充分的利用(X,Y)中除边缘区域外的每一个像素,不妨设“边缘区域”指的是“上、左、下、右”四个边距分别为“a,b,A,B”的区域。

此时,我们坚决不能在“中心区域”切割出重复像素的图片,但却可以在“边缘区域”中多切割一些像素来填充子图,对我们的问题而言,这相当于(X,Y)发生了变换,它变成了这样的一个取值区间:(X:X+a+A,Y:Y+b+B) ,此时,我们最期待的事情是:

存在 n、m,使 X < nx < X+a+A,Y < my < Y+b+B

满足该条件时,图片可以被“完美切割”,即:不重不漏的遍历“中心区域”每一像素

现在我们需要确定切割的起点和终点,由 X = n*x + r,显然需要从“边缘区域”填充共计 r 长度的像素,我们既可以将这 r 长度全部分配至上边界,也可以全部分配至下边界,但考虑到“边界不重要而中心很重要”,我们应该尽可能平分这些像素。

现在,只剩最后一个问题了:

你说得对,但你每次的切割方案如出一辙,这对模型的训练是一个致命伤。

虽然我们可以用各种各样的方法提高模型的泛化能力,但不得不说,在图像数量稀少时,总是固定出现的局部的像素集合一定会导致模型过拟合

如果能在采集图像时就尽可能以不同的方式切,使每张图片都能展示不一样的像素集合,这当然有助于模型更充分地汲取数据特征。

一个最朴素的想法是每次平移1px,这不能说不对,但考虑到即使是256*256大小的图像如此遍历一遍都需要六万多次迭代,即便数据量稀少也未必能迭代的完,更何况前期训练和后期训练的数据集本身产生了有序的偏差,对训练只会产生负面效果。

事实上,我们也有一个异常简单的解决方案:

在上述的“中心区域”任选一点,将图像平分成四部分,对这四部分分别应用上述“边缘区域”分割算法。

容易证明,只要随机点的分布是均匀的,则在“中心区域”任取一个矩形区域,其完整出现在某一子图中的概率就是相等的。

图像切割采样是一个非常简单的基础操作,但我们可以用同样简单的方法把它玩出花,从而最大幅度的在数据预处理阶段提升训练效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值