今天在使用这个图像增强库albumentations的时候遇到了一个问题,由于我做的分割任务需要有两个不同的mask,我就对原始的代码进行了如下的修改:
pair = self.transform(image=image, mask=mask)
image, mask = pair["image"], pair["mask"]
原始的代码是这样
pair = self.transform(image=image, mask=mask, mask_a=mask_a)
image, mask = pair["image"], pair["mask_a"]
而后改成了这样
但我后来发现这样并不能读出来,我以为这个库的conpose函数是随意设置内部的键值的,后来在这个库的官方文档网站里查阅才知道内部的键值是固定的,例如image、mask;
如果一次要读入多个mask并进行增强,需要把新的键值设置为masks,并传入一个mask列表,例如self.transform(image=image,masks=masks),其中masks=[mask,mask_a]
以上是官方文档的做法,但我发现这样做的时候如果最后一个增强函数是totensorV2,会无法把np数组转为tensor,因此我最后还是采用了比较土的办法:直接分别执行两遍原始的tsfm,传两次mask就行了。例如这样:
pair = self.transform(image=image, mask=mask)
image, mask = pair["image"], pair["mask"]
pair2 = self.transform(image=image1, mask=mask_cam)
image1, mask_cam = pair2["image"], pair2["mask"]
随手记录一下。