- 建立docker
sudo nvidia-docker run -ti --ipc=host --name=xxx --network=host -v /home/data/xxx:/workspace ce893
- numpy的transpose :https://blog.csdn.net/u012762410/article/details/78912667
比如
import skimage.io as io
image = io.imread(image_dir).astype('float')
这样得到的image是(h,w,c)的三通道格式
再tensor里默认的是(c,h,w)
需要image = image.transpose(2,0,1)
- np.expand_dims() :https://www.jianshu.com/p/da10840660cb
维度的扩展作用,比如(1,2,3)可插入的地方就有四个,分别是0,1,2,3。见缝插针的感觉。
- os.listdir()不是乱序的
- 关于结果评价的敏感性、特异性、阳性预测值:http://www.360doc.com/content/18/0210/11/46981363_729106390.shtml
- 图片卷积的尺寸计算问题 https://blog.csdn.net/xuan_zizizi/article/details/78589022
- Image.open读取的数据和skimage.io.imread()读取的图片尺寸区别在于
IIn [44]: path,path_rgb
Out[44]:略
In [47]: img = Image.open(path)
In [48]: imgrgb = Image.open(path_rgb)
In [49]: img,imgrgb #由下面的mode,说明PIL库能识别灰度图和RGB图
Out[49]:
(<PIL.TiffImagePlugin.TiffImageFile image mode=P size=4288x2848 at 0x7F9CE709CB38>,
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=4288x2848 at 0x7F9CE7093FD0>)
In [50]: img.size,imgrgb.size #但是PIL.Image的size只能查看(w,h)
Out[50]: ((4288, 2848), (4288, 2848))
In [51]: img1 = np.array(img)
In [52]: imgrgb1=np.array(imgrgb)
In [53]: img1.shape,imgrgb1.shape #用np.array强制转换成numpy格式后,灰度图就没有通道了分别是(h,w)和(h,w,c)
Out[53]: ((2848, 4288), (2848, 4288, 3))
In [54]: img2 = io.imread(path)
In [55]: imgrgb2 = io.imread(path_rgb)
In [56]: img2.size,imgrgb2.size
Out[56]: (36636672, 36636672)
In [57]: img2.shape,imgrgb2.shape #用io.imread来读取图片,可见无论是灰度还是RGB图片都转换成(h,w,c)的格式
Out[57]: ((2848, 4288, 3), (2848, 4288, 3))
- tensor的加减乘除的重载就是对应位置的元素的加减乘除,如果不一致我遇到的问题是(batch-size,4,512,512)和(batch_size,1,512,512)之间运算,为了算一个f1_score。实验了一下运算就是在对应的batch里,4通道图片的每一个通道和1通道图片相运算(二维对应位置元素的运算)