I would try to scale down the problem a bit and try to overfit a small data sample first.
Once your model successfully overfits the small data sample, you could try to scale it up again.
Based on your loss function, it seems you are dealing with a multi-label segmentation use case, i.e. each pixel might belong to zero, one, or more classes.
If your use case is a multi-class segmentation, i.e. each pixel belongs to once class only, you would have to use nn.CrossEntropyLoss instead.