2025, Sep 25 03:31
केवल +45° या −45° रोटेशन: torchvision में सटीक 50/50 ऑग्मेंटेशन
torchvision में केवल +45° या −45° रोटेशन लागू करें: RandomChoice और फिक्स्ड-एंगल RandomRotation से 50/50 चयन पाएँ, मध्य कोणों से बचें और नियंत्रण बनाए रखें.
इमेज डेटा को ऑगमेंट करते समय मजबूती बढ़ाने के लिए आम तौर पर रैंडम रोटेशन जोड़े जाते हैं। लेकिन कभी‑कभी सख्त नियंत्रण चाहिए: केवल +45 या −45 डिग्री पर ही घुमाएँ, वह भी समान संभावना के साथ, और बीच के कोण बिल्कुल न हों। साधारण कोण‑रेंज देना इस आवश्यकता को पूरा नहीं करता।
समस्या की रूपरेखा
torchvision के साथ एक सीधा प्रयास कुछ ऐसा दिखता है, लेकिन यह तय दोनों कोणों के बजाय दिए गए अंतराल के भीतर कोई भी कोण बना देता है।
import torchvision.transforms as T
pipeline = T.Compose([
    T.RandomRotation((-45, 45))
])
असल में होता क्या है
RandomRotation को एक इंटरवल देना मतलब हर कॉल पर यह ट्रांसफॉर्म निचली और ऊपरी सीमा के बीच कहीं से भी एक रैंडम कोण लेता है। दूसरे शब्दों में, नतीजे −45 से 45 डिग्री तक की पूरी रेंज को कवर करेंगे, सिर्फ −45 और +45 तक सीमित नहीं रहेंगे।
50/50 चयन के साथ सटीक समाधान
समान संभावना के साथ केवल दो ही कोण सुनिश्चित करने के लिए पहले एक बराबर रैंडम चयन करें, फिर फिक्स्ड‑एंगल रोटेशन लगाएँ। torchvision में यह काम साफ़ तौर पर RandomChoice से होता है, और फिक्स्ड कोण उस ट्यूपल से दर्शाया जाता है जिसमें निचली और ऊपरी दोनों सीमाएँ बराबर हों।
import torchvision.transforms as T
augment_ops = T.Compose([
    T.RandomChoice([
        T.RandomRotation((45, 45)),
        T.RandomRotation((-45, -45)),
    ], p=[0.5, 0.5])
])
यह पाइपलाइन +45 डिग्री की 50% और −45 डिग्री की 50% संभावना तय करती है, और बीच के कोई रोटेशन नहीं होने देती।
यह क्यों मायने रखता है
डेटा ऑग्मेंटेशन आपके कार्य की स्पेसिफिकेशन के अनुरूप होना चाहिए। अगर पाइपलाइन अनचाहे कोणों की अनुमति देती है, तो बदले गए नमूने इच्छित वितरण से भटक सकते हैं। रोटेशन के सटीक सेट तक ऑग्मेंटेशन को सीमित रखना अवांछित विविधता रोकता है और डेटासेट को आवश्यक बाधाओं के अनुरूप बनाए रखता है।
निष्कर्ष
जब torchvision में फिक्स्ड‑एंगल रोटेशन चाहिए, तो ऐसी रेंज न दें जिसमें अनचाहे मान भी शामिल हो जाएँ। इसके बजाय RandomChoice के साथ दो फिक्स्ड‑एंगल ट्रांसफॉर्म के बीच स्पष्ट 50/50 चयन करें, जहाँ दोनों में min और max एक समान हों ताकि कोण तय रहे। इससे ऑग्मेंटेशन सटीक और अनुमान योग्य रहता है।
यह लेख StackOverflow के प्रश्न (लेखक: Lézard) और Ahmad Abdallah के उत्तर पर आधारित है।