FastAi GrandparentSplitter File Path

Still trying to get it to work

def label_func(x):

if 'train/images' in str(x):
    x = str(x).replace('/images/','/masks/').replace('.png','_masks.png')
if 'val/images' in str(x):
    x = str(x).replace('/images/','/masks/').replace('.png','_masks.png')

return Path(x)

db = DataBlock(blocks=(ImageBlock(),MaskBlock(codes)),
batch_tfms= [
*aug_transforms( ), #from 0.75
Normalize.from_stats(*imagenet_stats)],
splitter=GrandparentSplitter(train_name=‘train’, valid_name=‘val’),
item_tfms=[Resize(im_size)],
get_items=partial(get_image_files, folders=[‘train’, ‘val’]),
get_y=label_func
)
ds = db.datasets(source=data_dir) with output

/mnt/Datasets/img_sets/SV_masks/train/images/0085_slice_0_idx_43_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0085_slice_0_idx_43_SV_masks.png

dls = db.dataloaders(data_dir, bs = bs)

dls.show_batch() with output

/mnt/Datasets/img_sets/SV_masks/train/masks/0313_slice_24_idx_186_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0313_slice_24_idx_186_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0055_slice_5_idx_26_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0055_slice_5_idx_26_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0284_slice_10_idx_162_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0284_slice_10_idx_162_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0059_slice_10_idx_30_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0059_slice_10_idx_30_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0308_slice_2_idx_181_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0308_slice_2_idx_181_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0264_slice_14_idx_148_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0264_slice_14_idx_148_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0026_slice_18_idx_13_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0026_slice_18_idx_13_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0026_slice_15_idx_13_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0026_slice_15_idx_13_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0055_slice_12_idx_26_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0055_slice_12_idx_26_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0284_slice_10_idx_162_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0284_slice_10_idx_162_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0323_slice_11_idx_194_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0323_slice_11_idx_194_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0130_slice_6_idx_72_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0130_slice_6_idx_72_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/images/0129_slice_5_idx_71_SV.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0129_slice_5_idx_71_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0310_slice_10_idx_183_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0310_slice_10_idx_183_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0311_slice_8_idx_184_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0311_slice_8_idx_184_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0086_slice_19_idx_44_SV_masks.png
/mnt/Datasets/img_sets/SV_masks/train/masks/0086_slice_19_idx_44_SV_masks.png

which of course is wrong, since images should match masks