上文我们讲了在图像分类问题的数据增强的几种方法,其中很重要的方式为图像的随机裁剪,我们可以轻松地调用Pytorch框架的API加以实现,但是在图像检测问题中,如何实现数据增强的效果呢?由于我们对图像进行了随机裁剪,那么GT boxes的位置信息也会发生变化,可能会被裁剪为一半或者什么的,所以对于检测问题,直接使用Pytorch的API是不可以的,那么我们就从Numpy的底层来实现一个数据增强的程序!
分类问题的数据增强:TeddyZhang:图像分类:数据增强(Pytorch版)zhuanlan.zhihu.com
需要工程源码的请点赞!!!哈哈哈~
数据格式
已知我们的图像为3通道R/G/B,而且一幅图像标记的Boxes为[N, 4],其中N为一幅图像的真实框数,那么我们就来看看在检测问题中数据增强怎么做的?4维数据分别是[x1, y1, w, h],假设我们的模型的输入图片定义为1024x1024
随机裁剪 (对标记的Boxes进行处理)从图像中随机裁剪一个正方形,边长范围为[0.3*min, max], min为长与宽的最小值
计算真实框的中心点,裁剪区域一定要包含这些中心点
将原始图的GT Boxes变换成裁剪图的GT boxes
去掉那些过小的GT boxes, 不参与训练
# 3. 随机进行裁剪
def random_crop(self, im, boxes, labels):
imh, imw, _ = im.shape
short_size = min