六种常见的数据扩增方式(附代码)
在某些场景下的目标检测中,样本数量较小,导致检测的效果比较差,这时就需要进行数据扩增。本文介绍常用的6类数据扩增方式,包括裁剪、平移、改变亮度、加入噪声、旋转角度以及镜像。 每一部分的参考资料也附在代码的介绍位置,大家可以参考。 裁剪(需要改变bbox): 裁剪后的图片需要包含所有的框,否则会对图像的原始标注造成破坏。 def _crop_img_bboxes(self,img,bboxes): ''' 裁剪后图片要包含所有的框 输入: img:图像array bboxes:该图像包含的所有boundingboxes,一个list,每个元素为[x_min,y_min,x_max,y_max] 要确保是数值 输出: crop_img:裁剪后的图像array crop_bboxes:裁剪后的boundingbox的坐标,list ''' #------------------ 裁剪图像 ------------------ w = img.shape[1] h = img.shape[0] x_min = w x_max = 0 y_min = h y_max = 0 for bbox in bboxes: x_min = min(x_min, bbox[0]) y_min = min(y_min, bbox[1]) x_max = max(x_max, bbox[2]) y_max