Sorry for the delayed testing of your suggestion.
Adding this in directly results in a TypeError: can't pickle _thread.lock objects. I suspected this was from the imageio reader, so I temporarily tried removing this from the my custom Dataset object. When doing so I get the following error:
RuntimeError:
    An attempt has been made to start a new process before the
    current process has finished its bootstrapping phase.

    This probably means that you are not using fork to start your
    child processes and you have forgotten to use the proper idiom
    in the main module:

        if __name__ == '__main__':
            freeze_support()
            ...

    The "freeze_support()" line can be omitted if the program
    is not going to be frozen to produce an executable.

Which is surprising, as the call you recommended was in a __name__ == '__main__' block and is being called on an Ubuntu OS (and from what I can find I should only expect this error on Windows).