Fastai v2 Issue using dataframes and multiple image blocks

Hello All,

I have been trying to build an auto-encoder in fastai and have stumbled upon this issue where if you pass a pandas dataframe to a datablock with two ImageBlocks it fails. When I don’t use a pandas dataframe it works fine.

From what I can tell it looks like the data is being push to pytorch default_collate.
Is there anything I can do to fix this? Should I be passing less info in the pandas dataframe?

Any help would be appreciated

nav = DataBlock(
    blocks     = (ImageBlock, ImageBlock),
    get_x      = ColReader(cols='image', pref=''), 
    get_y      = None,
    splitter   = ColSplitter('validation_set'),
)

dls = nav.dataloaders(df, bs=256)

print(dls.train_ds[0])
dls._one_pass()
print(len(dls.train_ds))
print(len(dls.valid_ds))

This returns this:

Could not do one pass in your dataloader, there is something wrong in it
(PILImage mode=RGB size=160x120, Unnamed: 0                                                                            0
image             data/Andrew Kew traffic School/tub_11_19-11-03/1_cam-image_array_.jpg
angle                                                                        -0.0290122
throttle                                                                     0.00852259
validation_set                                                                    False
test_set                                                                          False
Name: 0, dtype: object)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-d4392ee899fc> in <module>
      9 
     10 print(dls.train_ds[0])
---> 11 dls._one_pass()
     12 print(len(dls.train_ds))
     13 print(len(dls.valid_ds))

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/core.py in _one_pass(self)
     49 
     50     def _one_pass(self):
---> 51         b = self.do_batch([self.do_item(0)])
     52         if self.device is not None: b = to_device(b, self.device)
     53         its = self.after_batch(b)

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/load.py in do_batch(self, b)
    131     def create_item(self, s):  return next(self.it) if s is None else self.dataset[s]
    132     def create_batch(self, b): return (fa_collate,fa_convert)[self.prebatched](b)
--> 133     def do_batch(self, b): return self.retain(self.create_batch(self.before_batch(b)), b)
    134     def to(self, device): self.device = device
    135     def one_batch(self):

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/load.py in create_batch(self, b)
    130     def retain(self, res, b):  return retain_types(res, b[0] if is_listy(b) else b)
    131     def create_item(self, s):  return next(self.it) if s is None else self.dataset[s]
--> 132     def create_batch(self, b): return (fa_collate,fa_convert)[self.prebatched](b)
    133     def do_batch(self, b): return self.retain(self.create_batch(self.before_batch(b)), b)
    134     def to(self, device): self.device = device

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/load.py in fa_collate(t)
     46     b = t[0]
     47     return (default_collate(t) if isinstance(b, _collate_types)
---> 48             else type(t[0])([fa_collate(s) for s in zip(*t)]) if isinstance(b, Sequence)
     49             else default_collate(t))
     50 

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/load.py in <listcomp>(.0)
     46     b = t[0]
     47     return (default_collate(t) if isinstance(b, _collate_types)
---> 48             else type(t[0])([fa_collate(s) for s in zip(*t)]) if isinstance(b, Sequence)
     49             else default_collate(t))
     50 

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/fastai/data/load.py in fa_collate(t)
     47     return (default_collate(t) if isinstance(b, _collate_types)
     48             else type(t[0])([fa_collate(s) for s in zip(*t)]) if isinstance(b, Sequence)
---> 49             else default_collate(t))
     50 
     51 # Cell

~/anaconda3/envs/fastai2/lib/python3.8/site-packages/torch/utils/data/_utils/collate.py in default_collate(batch)
     83         return [default_collate(samples) for samples in transposed]
     84 
---> 85     raise TypeError(default_collate_err_msg_format.format(elem_type))

TypeError: default_collate: batch must contain tensors, numpy arrays, numbers, dicts or lists; found <class 'pandas.core.series.Series'>