What is data augmentation and how is it used in computer vision tasks? How do techniques like rotation, flipping, scaling, and cropping help increase dataset diversity? How does data augmentation improve model generalization and performance? In which scenarios is data augmentation most beneficial for training models? What are the limitations and challenges of using data augmentation in real-world applications?