深度学习任务中,用于训练的数据需要大小一样,但现实使用的数据往往有大小的差异,有时大小一样的数据进行插值操作后大小也会不一样,根据任务需要确定合适的size后,把所有用于训练的数据切成相同size是模型开始训练前很重要的一步,由于训练的image,label,测试的image,label都需要进行相同的操作,因此我们把这个功能封装成一个函数,需要的时候调用就可以。
def segment(imgs,pixel):
#根据任务和模型的需要设置image_size的大小
image_size = 184
z, x, y = np.shape(imgs)
judge = sum([x > image_size, y > image_size])
for i, data in enumerate(imgs):
if judge == 2 :
data = data [int((x-image_size)/2+pixel):int((x+image_size)/2+pixel), int((y-image_size)/2):int((y+image_size)/2)]
if judge == 0:
image_new = -np.min(image_std)*np.ones([image_size, image_size], dtype = np.int32)
image_new[int((image_size-x)/2):int((image_size-x)/2)+x, int((image_size-y)/2):int((image_size-y)/2)+y] = data
data = image_new
if judge == 1:
ValueError('输入数据的x,y大小不一样')
if i == 0:
imgs = np.reshape(image_std, [1,image_size,image_size])
else:
imgs = np.concatenate((imgs, np.reshape(image_std, [1,image_size,image_size])), axis = 0)
return imgs
pixel参数在需要数据增强的时候可以用到,给pixel设置一个值可以实现所切区域在x,y轴的上下移动操作,可以使训练数据瞬间增加几倍。
网友评论