Difference between Normalization layers in CNN

What is the difference between Batch Normalization, Instance Normalization and Adaptive Instance Normalization layers in a CNN? Which one should be used in generative models for image style transfer?