For segmentation tasks with multiple classes, especially in the context of medical images where there might be class imbalance, is it preferable to use sigmoid or softmax as the final activation? I believe softmax would assign each particular pixel (voxel) to a single class whereas sigmoid could assign a single pixel (voxel) to multiple classes. Is this correct? Also, if we use dice loss as the loss function, are both softmax and sigmoid compatible or is one preferred over the other?
Yes, that would be the case and the choice would depend on the use case you are working on (i.e. does your target contain a single class per pixel or multiple ones)?
softmax is used in the dice loss implementations I’m aware of and I don’t know, if a sigmoid activation would also work.
I would say it is indeed possible to use sigmoid and Dice but, as @ptrblck said, the choice of sigmoid vs softmax depends on whether the instances are allowed to belong to multiple classes.