数据增强时对原图和分割图做相同的变换
方法一:
使用torch.manual_seed(17)
固定随机数种子,再用torchvision.transforms
做变换
但是这种方法有时候会失效,可能是transforms函数不能在别的py文件中写好调用到本文件,需要都写在一个文件中
方法二
把单通道的label和image拼在一起成了2通道或者3通道(两张同样的image+1张label)的图像,随机变换之后,再分离通道,得到单通道图像,于是得到了同样变换的label和image
img和array互相转换
from PIL import Image
import numpy as np
im = Image.open("a.jpg")
im.show()
img = np.array(im) # image类 转 numpy
img = img[:,:,0] #第1通道
im=Image.fromarray(img) # numpy 转 image类
im.show()
array增加一个纬度(增加一个纬度才能在这个纬度上拼接)
b = np.arange(5)
print(b.shape) # 输出(5,)
b = np.expand_dims(b,axis=0)
print(b.shape) # 输出(1,5)
array在特定纬度上拼接
import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.arange(7,13).reshape(2,3)
c = np.concatenate([a,b],axis=0)
d = np.vstack([a,b])
print(a) # 输出[[1 2 3] [4 5 6]]
print(b) # 输出[[ 7 8 9] [10 11 12]]
print(c) # 输出[[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
print(d) # 输出[[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
tensor添加和删除纬度
# 删除
c = torch.squeeze(x, dim=3) # 删除第三维度
d = torch.squeeze(x) # 若不标注删除第几维度,则会删除所有为1的维度
# 添加
e = torch.unsqueeze(x, dim=0) # 在第一维度添加维度
更新
以上方法不稳定,建议直接修改官方transform库的源码