> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/datasets/hi/versions/dataset-versions/image-preprocessing.md).

# छवियों का पूर्व-संसाधन करें

प्रीप्रोसेसिंग यह सुनिश्चित करती है कि आपका डेटासेट एक मानक प्रारूप में हो (जैसे, सभी छवियाँ एक ही आकार की हों)। यह चरण मॉडल को प्रशिक्षित करने से पहले आपके डेटासेट को सुसंगत सुनिश्चित करने के लिए आवश्यक है।

प्रीप्रोसेसिंग आपके Train, Valid, और Test सेट की सभी छवियों पर लागू होती है (इसके विपरीत [ऑग्मेंटेशन](/datasets/hi/versions/dataset-versions/image-augmentation.md), जो केवल Train सेट पर लागू होते हैं)।

Roboflow प्लेटफ़ॉर्म निम्नलिखित प्रीप्रोसेसिंग विकल्प प्रदान करता है:

* ऑटो-ओरिएंट
* आकार बदलें
* ग्रेस्केल
* कॉन्ट्रास्ट स्वतः समायोजित करें
* ऑब्जेक्ट्स अलग करें
* स्थिर क्रॉप
* टाइल
* क्लासेस संशोधित करें
* नल फ़िल्टर करें
* टैग के अनुसार फ़िल्टर करें

प्रत्येक विकल्प का विवरण नीचे दिया गया है।

### ऑटो-ओरिएंट

ऑटो-ओरिएंट आपकी छवियों से उनका EXIF डेटा हटा देता है, ताकि आप छवियों को उसी तरह प्रदर्शित होते देखें जैसे वे डिस्क पर संग्रहीत हैं।

EXIF डेटा किसी दी गई छवि की दिशा निर्धारित करता है। अनुप्रयोग (जैसे Mac पर Preview) इस डेटा का उपयोग किसी छवि को एक विशिष्ट दिशा में प्रदर्शित करने के लिए करते हैं, भले ही डिस्क पर संग्रहीत होने की दिशा अलग हो।

* Roboflow डिफ़ॉल्ट रूप से इसे चालू रखने और यह जाँचने की सलाह देता है कि inference में आपकी छवियाँ आपके मॉडल को कैसे भेजी जा रही हैं।
* यदि आप यह और जानना चाहते हैं कि आपको अपनी छवियों को ऑटो-ओरिएंट करना चाहिए या नहीं, [हमारा ब्लॉग देखें](https://blog.roboflow.com/exif-auto-orientation/).

### आकार बदलें

Resize आपकी छवियों का आकार बदलता है और वैकल्पिक रूप से, उन्हें वांछित आयामों के सेट तक स्केल करता है। एनोटेशन को अनुपातिक रूप से समायोजित किया जाता है (नीचे दिए गए “fill” मामले को छोड़कर)।

फिलहाल, हम केवल आकार घटाना समर्थित करते हैं। हम इसके लिए कुछ मार्गदर्शन प्रदान करते हैं कि [आपके उपयोग-केस के लिए कौन-सा resize विकल्प सबसे अच्छा हो सकता है](https://blog.roboflow.com/you-might-be-resizing-your-images-incorrectly/).

* **इसमें स्ट्रेच करें:** अपनी छवियों को पसंदीदा पिक्सेल-आधारित आयाम तक स्ट्रेच करें। एनोटेशन को अनुपातिक रूप से स्केल किया जाता है। छवियाँ वर्गाकार होती हैं, विकृत हो जाती हैं, लेकिन कोई स्रोत छवि डेटा नहीं खोता।
* **के साथ भरें (सेंटर क्रॉप) में:** जनरेट की गई छवि आपके वांछित आउटपुट आयामों का केंद्रित क्रॉप होती है। उदाहरण के लिए, यदि स्रोत छवि 2600x2080 है और resize विकल्प 640x640 पर सेट है, तो आउटपुट किया गया resize स्रोत छवि का केंद्रीय 640x640 होगा। आस्पेक्ट रेशियो बनाए रखा जाता है, लेकिन स्रोत छवि डेटा खो जाता है।
* **के भीतर फिट करें:** स्रोत आयामों को आउटपुट छवि के आयामों के बराबर होने तक स्केल किया जाता है, जबकि स्रोत छवि का आस्पेक्ट रेशियो बनाए रखा जाता है। उदाहरण के लिए, यदि स्रोत छवि 2600x2080 है और resize विकल्प 640x640 पर सेट है, तो लंबा आयाम (2600) 640 तक स्केल किया जाता है और दूसरा आयाम (2080) लगभग 512 पिक्सेल तक स्केल किया जाता है। छवि के आस्पेक्ट रेशियो और मूल डेटा बनाए रहते हैं, लेकिन वे वर्गाकार नहीं होते।
* **के भीतर फिट करें (किनारों को प्रतिबिंबित करें):** स्रोत आयामों को आउटपुट छवि के आयामों के बराबर होने तक स्केल किया जाता है, जबकि स्रोत छवि का आस्पेक्ट रेशियो बनाए रखा जाता है, और जो भी नया पैडिंग बनाया जाता है वह स्रोत छवि का प्रतिबिंब होता है। उदाहरण के लिए, यदि स्रोत छवि 2600x2080 है और resize विकल्प 416x416 पर सेट है, तो लंबा आयाम (2600) 416 तक स्केल किया जाता है और दूसरा आयाम (2080) लगभग 335.48 पिक्सेल तक स्केल किया जाता है। शेष पिक्सेल क्षेत्र (416-335.48, यानी 80.52 पिक्सेल) स्रोत छवि के प्रतिबिंबित पिक्सेल होते हैं। विशेष रूप से, Roboflow डिफ़ॉल्ट रूप से एनोटेशन भी प्रतिबिंबित करता है। छवियाँ वर्गाकार, पैडेड होती हैं, और आस्पेक्ट रेशियो तथा मूल डेटा बनाए रहते हैं।
* **के भीतर फिट करें (काले किनारों के साथ):** स्रोत आयामों को आउटपुट छवि के आयामों के बराबर होने तक स्केल किया जाता है, जबकि स्रोत छवि का आस्पेक्ट रेशियो बनाए रखा जाता है, और जो भी नया पैडिंग बनाया जाता है वह काला क्षेत्र होता है। उदाहरण के लिए, यदि स्रोत छवि 2600x2080 है और resize विकल्प 416x416 पर सेट है, तो लंबा आयाम (2600) 416 तक स्केल किया जाता है और दूसरा आयाम (2080) लगभग 335.48 पिक्सेल तक स्केल किया जाता है। शेष पिक्सेल क्षेत्र (416-335.48, यानी 80.52 पिक्सेल) काले पिक्सेल होते हैं। छवियाँ वर्गाकार, काले पैडिंग वाली होती हैं, और आस्पेक्ट रेशियो तथा मूल डेटा बनाए रहते हैं।
* **के भीतर फिट करें (सफेद किनारों के साथ):** स्रोत आयामों को आउटपुट छवि के आयामों के बराबर होने तक स्केल किया जाता है, जबकि स्रोत छवि का आस्पेक्ट रेशियो बनाए रखा जाता है, और जो भी नया पैडिंग बनाया जाता है वह सफेद क्षेत्र होता है। उदाहरण के लिए, यदि स्रोत छवि 2600x2080 है और resize विकल्प 416x416 पर सेट है, तो लंबा आयाम (2600) 416 तक स्केल किया जाता है और दूसरा आयाम (2080) लगभग 335.48 पिक्सेल तक स्केल किया जाता है। शेष पिक्सेल क्षेत्र (416-335.48, यानी 80.52 पिक्सेल) सफेद पिक्सेल होते हैं। छवियाँ वर्गाकार, सफेद पैडिंग वाली होती हैं, और आस्पेक्ट रेशियो तथा मूल डेटा बनाए रहते हैं।

### ग्रेस्केल

RGB चैनलों वाली एक छवि को एकल ग्रेस्केल चैनल वाली छवि में परिवर्तित करता है, जिससे आपकी मेमोरी बच सकती है। प्रत्येक ग्रेस्केल पिक्सेल का मान संबंधित लाल, हरे और नीले पिक्सेल के भारित योग के रूप में गणना किया जाता है: Y = 0.2125 R + 0.7154 G + 0.0721 B.

इन भारों का उपयोग CRT फॉस्फ़र्स द्वारा किया जाता है क्योंकि ये समान भारों की तुलना में लाल, हरे और नीले के प्रति मानवीय धारणा को बेहतर दर्शाते हैं। (के माध्यम से [Scikit-Image](https://scikit-image.org/docs/dev/auto_examples/color_exposure/plot_rgb_to_gray.html).)

### कॉन्ट्रास्ट स्वतः समायोजित करें

कम कॉन्ट्रास्ट वाली छवि को बेहतर बनाता है। हमने [इस पर विचार किया है कि क्या आप कॉन्ट्रास्ट को एक प्रीप्रोसेसिंग चरण के रूप में उपयोग करना चाहते हैं](https://blog.roboflow.com/when-to-use-contrast-as-a-preprocessing-step/).

* **कॉन्ट्रास्ट स्ट्रेचिंग**: छवि को ऐसे पुनःस्केल किया जाता है कि उसमें वे सभी तीव्रताएँ शामिल हों जो 2वें और 98वें परसेंटाइल के भीतर आती हैं। [और देखें](http://homepages.inf.ed.ac.uk/rbf/HIPR2/stretch.htm).
* **हिस्टोग्राम इक्वलाइज़ेशन**: छवि में “सबसे अधिक बार आने वाले तीव्रता मानों को” फैला देता है। इक्वलाइज़ की गई छवि में लगभग समान वितरण होता है, जहाँ सभी रंगों के पिक्सेल लगभग समान रूप से प्रतिनिधित्वित होते हैं। [और देखें](https://en.wikipedia.org/wiki/Histogram_equalization).
* **एडैप्टिव इक्वलाइज़ेशन**: कॉन्ट्रास्ट-लिमिटेड एडैप्टिव हिस्टोग्राम इक्वलाइज़ेशन (CLAHE)। स्थानीय कॉन्ट्रास्ट बढ़ाने के लिए एक एल्गोरिद्म, जो छवि के विभिन्न टाइल क्षेत्रों पर गणना किए गए हिस्टोग्राम का उपयोग करता है। इसलिए स्थानीय विवरण छवि के अधिकांश भाग से अधिक गहरे या उजले क्षेत्रों में भी बेहतर किए जा सकते हैं। (के माध्यम से [Scikit-Image](https://scikit-image.org/docs/dev/api/skimage.exposure.html#skimage.exposure.equalize_adapthist).)

## उन्नत प्रीप्रोसेसिंग सुविधाएँ

### ऑब्जेक्ट्स अलग करें

Isolate Objects ट्रांसफ़ॉर्म प्रत्येक bounding box को क्रॉप करके एक अलग छवि में निकाल देगा। यह चरण Object Detection डेटासेट को Classification डेटासेट में बदल देता है।

उन मामलों में जहाँ डेटासेट में कई क्लासेस समान हों, दो मॉडल्स को क्रम में उपयोग करना आम है। पहला मॉडल (object detection) ऑब्जेक्ट ढूँढता है और दूसरा मॉडल (classification) पहचानता है कि ऑब्जेक्ट क्या है। Isolate Objects ट्रांसफ़ॉर्मेशन दूसरे मॉडल को प्रशिक्षित करने के लिए आवश्यक डेटासेट बनाने में उपयोगी है।

### स्थिर क्रॉप

Static Crop आपके डेटासेट की हर छवि पर एक स्थिर, प्रतिशत-आधारित क्रॉप क्षेत्र लागू करता है। आप न्यूनतम और अधिकतम चौड़ाई तथा ऊँचाई के प्रतिशतों का उपयोग करके क्षेत्र परिभाषित करते हैं, और Roboflow प्रत्येक छवि को उसी सापेक्ष क्षेत्र तक क्रॉप करता है। इससे आप रुचि के एक सुसंगत क्षेत्र पर ज़ूम कर सकते हैं, प्रशिक्षण से पहले अप्रासंगिक किनारों या पृष्ठभूमि को हटाकर ताकि आपका मॉडल फ्रेम के महत्वपूर्ण हिस्से पर ध्यान केंद्रित करे।

![स्टैटिक क्रॉप सुविधा, और एक उदाहरण आउटपुट।](/files/01f091f96da80677336eb210214a646348fa7213)

### टाइल

टाइलिंग छोटी वस्तुओं का पता लगाने में मदद कर सकती है (विशेषकर हवाई इमेजरी और माइक्रोस्कोपी जैसी स्थितियों में। डिफ़ॉल्ट सेटिंग 2x2 टाइलिंग है, हालाँकि आप इसे अपनी आवश्यकता अनुसार समायोजित कर सकते हैं। टाइलिंग की जाती है *से पहले* प्रीप्रोसेसिंग पाइपलाइन में आकार बदलने के.

![टाइलिंग टूल और आउटपुट का एक प्रीव्यू ("ग्रिड" में दर्शाया गया)।](/files/ef8d1736836c69cc750b65ff7660f347a1e25609)

### क्लासेस संशोधित करें

डेटासेट के नए संस्करण को जनरेट करते समय विशिष्ट क्लासेस को हटाने या क्लासेस को रीमैप (नाम बदलने) के लिए उपयोग किया जाने वाला एक प्रीप्रोसेसिंग टूल। ये परिवर्तन केवल आपके द्वारा जनरेट किए गए संस्करण पर लागू होते हैं। आपके मूल डेटासेट में कोई परिवर्तन नहीं किया जाएगा।

!["Apple leaf" क्लास को हटाना।](/files/ba1ad1fb9f306f7941cfb09c74e3d10ac5713946)

!["scratches" क्लास को "scratch" में रीमैप करना।](/files/70458381c0c635696e6e3ba292f048efa45c319e)

### नल फ़िल्टर करें

Filter Null ट्रांसफ़ॉर्मेशन उपयोगकर्ताओं को यह आवश्यक करने की अनुमति देता है कि डेटासेट की एक निश्चित हिस्सेदारी की छवियाँ एनोटेटेड हों। Null annotation के रूप में चिह्नित छवियाँ, या Modify Classes टूल लागू करने के बाद "unannotated" छवियाँ, केवल वही होती हैं जिन पर Filter Null का उपयोग करते समय प्रभाव पड़ता है।

यह ट्रांसफ़ॉर्मेशन उस स्थिति में उपयोगी है जब डेटासेट का बड़ा हिस्सा उन वस्तुओं को शामिल नहीं करता जिनमें आपकी रुचि है।

![Filter Null प्रीप्रोसेसिंग चरण लागू करना।](/files/7faa625f96bc036040345aebcf3cf0c705af7285)

{% hint style="warning" %}
सुनिश्चित करें कि आपने अपने डेटासेट की सभी छवियों पर सही ढंग से एनोटेशन किया है, उपयुक्त छवियों को null annotation के रूप में चिह्नित किया है, और/या इस टूल का उपयोग करने से पहले किसी भी अनावश्यक क्लास को हटा दिया है।
{% endhint %}

{% hint style="info" %}
[गायब और Null एनोटेशन के बीच का अंतर](https://blog.roboflow.com/missing-and-null-image-annotations/)

"Missing Annotations" तब होती हैं जब छवियों पर एनोटेशन नहीं किया गया हो (छवियों को अनएनोटेटेड छोड़ देने से आपके प्रशिक्षित डेटासेट के प्रदर्शन में समस्याएँ आएँगी, और प्रशिक्षण विफल भी हो सकता है)। Null annotations केवल तब लागू की जानी चाहिए जब उस छवि में *कुछ भी* मौजूद न हो जिसे आप अपने मॉडल से पहचानवाना चाहते हैं।
{% endhint %}

### टैग के अनुसार फ़िल्टर करें

Filter by Tag ट्रांसफ़ॉर्मेशन उपयोगकर्ताओं को यह फ़िल्टर करने की अनुमति देता है कि कौन-सी छवियाँ एक संस्करण में शामिल की जाएँ या न की जाएँ, इस आधार पर कि कौन-से [टैग](/datasets/hi/manage/manage-datasets/add-tags-to-images.md) लागू किए गए हैं। यह ट्रांसफ़ॉर्मेशन नए डेटा उपसमूह पर मॉडल प्रशिक्षित करने या प्रशिक्षण से अवांछित छवियों को बाहर रखने के लिए उपयोगी है।

प्रत्येक Tag के लिए तीन विकल्प उपलब्ध हैं:

* **आवश्यक करें:** केवल Required टैग वाली छवियाँ संस्करण में शामिल की जाएँगी।
* **बहिष्कृत करें**: Excluded टैग वाली छवियाँ संस्करण में शामिल नहीं की जाएँगी।
* **अनुमति दें:** Allowed टैग वाली छवियाँ संस्करण में शामिल की जाएँगी, बशर्ते Exclude और Require नियमों के अनुसार।

<figure><img src="/files/fc37f00136f30a41a9078f5a0e0c35a5aa43f7b7" alt=""><figcaption><p>इस उदाहरण में, परिणामी Version में केवल वे छवियाँ होंगी जिनमें <code>do-not-include</code> टैग नहीं है।</p></figcaption></figure>
