I’ve been developing some classes to work with multispectral satellite images in Fastai-v2 (will make it available in github as soon as it is working properly) but I am struggling to use data augmentation properly. I could make it work using the mid-level API and passing the augmentations during the creation of dataloader as a pipeline in after_item like this:
However, when I use the same classes/transforms and try to create a DataBlock, I can’t put it to work:
When debugging, I realized that the DataBlock created internally an after_item pipeline with the ToTensor transformation, and that’s why it is getting multiple after_item keywords. I could just ignore this and continue using the mid-level API, but I would like to understand what am I doing wrong in the DataBlock.
You should put your transforms in an
batch_tfms parameter in the
DataBlock, the only thing
.dataloaders is expecting after the
DataBlock is the source, batch size, and workers (everything unrelated to the
Block. So for you set your
I have tried this.
As my problem is segmentation, I have to apply the augmentation to both item and mask at the same time, so I put the augmentations in the
item_tfms of the main DataBlock (that holds the two
TransformBlocks) like so:
In this case it works, but as we can see in the summary, it applies only one augmentation (the last one), and skips the others. Also tried passing the augmentations to
item_tfms as a pipeline, but it raises an error I am still debugging.
TypeError: '<' not supported between instances of 'L' and 'int'
As I told before, the weird is that it works flawlessly using directly the mid-level api. And there I pass the augmentations as the same pipe object.