> 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/create-a-dataset-version.md).

# डेटासेट संस्करण बनाना

## के बारे में

एक वर्शन आपके डेटासेट का किसी-एक-समय का स्नैपशॉट होता है। हम इन वर्शनों को इसलिए रखते हैं क्योंकि आपके मॉडल के हर iteration में कौन-सी images, preprocessing, और augmentation steps इस्तेमाल की गई थीं, इसका सटीक रिकॉर्ड रखने से आप परिणामों को दोबारा उत्पन्न करने की क्षमता बनाए रखते हैं। इससे आप अलग-अलग models और frameworks के बीच वैज्ञानिक रूप से परीक्षण कर सकते हैं, और यह भरोसा भी बना रहता है कि परिणाम मॉडल में किए गए बदलावों के कारण हैं, न कि data pipeline में किसी bug/change के कारण।

<a href="https://docs.roboflow.com/platform/workspaces/key-concepts" class="button primary">मुख्य अवधारणाएँ: Workspaces और Projects क्या हैं?</a>

{% hint style="info" %}
एक बार वर्शन बन जाने के बाद, वह समय में स्थिर हो जाता है, जिसका मतलब है कि project में किए गए बदलाव—चाहे images, annotations, या अन्य data जोड़ना/हटाना हो—उन versions को प्रभावित नहीं करेंगे जो उससे पहले बनाए गए थे।
{% endhint %}

## वेब ऐप

### डेटासेट वर्शन कैसे बनाएं

एक dataset version बनाने के लिए, अपने Roboflow project से संबद्ध sidebar में "Versions" पर क्लिक करें। फिर, "Generate New Version" पर क्लिक करें।

इस page से, आप train/test/valid split सेट कर सकते हैं और अपने नए dataset version के लिए preprocessing steps और augmentations निर्दिष्ट कर सकते हैं।

<figure><img src="/files/6727267fd161e9f41acc1dcdd400ece264d798fb" alt="" width="375"><figcaption></figcaption></figure>

जब आप उन preprocessing steps और augmentations को निर्दिष्ट कर लें जिन्हें आप अपने data पर लागू करना चाहते हैं, तो "Generate" पर क्लिक करें। इससे एक नया dataset version बन जाएगा। फिर आप इस dataset version का उपयोग Roboflow में एक model train करने के लिए कर सकते हैं। आप यह भी कर सकते हैं [अपने dataset को export करें](/datasets/hi/versions/dataset-versions/exporting-data.md) ताकि उसे model को manually train करने में उपयोग किया जा सके।

### Train/Validation/Test Splits को फिर से समायोजित करना

वर्शन बनाने की प्रक्रिया के दौरान, आप अपने training, validation और test set splitting के balance को भी फिर से समायोजित कर सकते हैं। ऐसा करने के लिए, "Step 2: Train/Test Split" पर जाएँ और "Rebalance" बटन पर क्लिक करें।

<figure><img src="/files/1fd7a5d31f8a6261d9614a9b0f4f6cc60a47de35" alt="" width="375"><figcaption></figcaption></figure>

अनुशंसित split 70/20/10 (train/valid/test) है, जो अधिकांश datasets के लिए एक मजबूत शुरुआती बिंदु है। इसे किसी भी समय पुनर्स्थापित करने के लिए "Reset" पर क्लिक करें।

train, validation, और test प्रतिशत सेट करें, फिर चुनें कि images को कैसे पुनः असाइन किया जाए:

* "Move as few as possible" images को उनके मौजूदा split में बनाए रखता है और केवल लक्ष्य प्रतिशत तक पहुँचने के लिए आवश्यक न्यूनतम मात्रा में ही उन्हें स्थानांतरित करता है।
* "Random shuffle" सभी images को splits के बीच यादृच्छिक रूप से पुनः असाइन करता है।
* "Random shuffle per upload batch or annotation job" प्रत्येक upload batch या पूर्ण annotation job को अलग-अलग shuffle करता है, ताकि हर batch और job लक्ष्य प्रतिशत से मेल खाए।

आप rebalance को विशिष्ट classes तक भी सीमित कर सकते हैं। Classes चुनने से केवल उन images तक moves सीमित हो जाते हैं जिनमें सिर्फ वही classes हों, और method "Move as few as possible" पर स्विच हो जाता है।

बड़े datasets के लिए, rebalance background task के रूप में phase-दर-phase progress के साथ चलता है। आप dialog को बंद कर सकते हैं जबकि यह चलता रहता है, और Activity Center में इसे ट्रैक कर सकते हैं।

## Python SDK

एक version, चुने गए preprocessing और augmentation steps लागू करके project के labeled data का एक snapshot स्थिर कर देता है। सीधे project पर train करने के बजाय version के विरुद्ध train करें।

`Project.generate_version()` नया version number लौटाता है, जिसे आप इसमें पास कर सकते हैं `project.version(...)` एक `Version` handle प्राप्त करने के लिए।

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("my-detector")

new_version = project.generate_version(settings={
    "preprocessing": {
        "auto-orient": True,
        "resize": {"width": 640, "height": 640, "format": "Stretch to"},
    },
    "augmentation": {},
})
version = project.version(new_version)
```

यह settings का एक पूरा उदाहरण है। नीचे प्रत्येक property के लिए विस्तृत व्याख्या दी गई है।

```json
{
    "versionName": "रैकून",
    "augmentation": {
        "bbblur": { "pixels": 1.5 },
        "bbbrightness": { "brighten": true, "darken": false, "percent": 91 },
        "bbcrop": { "min": 12, "max": 71 },
        "bbexposure": { "percent": 30 },
        "bbflip": { "horizontal": true, "vertical": false },
        "bbnoise": { "percent": 50 },
        "bbninety": { "clockwise": true, "counter-clockwise": false, "upside-down": false },
        "bbrotate": { "degrees": 45 },
        "bbshear": { "horizontal": 45, "vertical": 45 },
        "blur": { "pixels": 1.5 },
        "brightness": { "brighten": true, "darken": false, "percent": 91 },
        "crop": { "min": 12, "max": 71 },
        "cutout": { "count": 26, "percent": 71 },
        "exposure": { "percent": 30 },
        "flip": { "horizontal": true, "vertical": false },
        "hue": { "degrees": 180 },
        "image": { "versions": 32 },
        "mosaic": true,
        "ninety": { "clockwise": true, "counter-clockwise": false, "upside-down": false },
        "noise": { "percent": 50 },
        "rgrayscale": { "percent": 50 },
        "rotate": { "degrees": 45 },
        "saturation": { "percent": 50 },
        "shear": { "horizontal": 45, "vertical": 45 }
    },
    "preprocessing": {
        "auto-orient": true,
        "contrast": { "type": "कॉन्ट्रास्ट स्ट्रेचिंग" },
        "filter-null": { "percent": 50 },
        "filter-tags": { "tag_name": true, "other_tag": false },
        "grayscale": true,
        "isolate": true,
        "remap": { "original_class_name": "new_class_name" },
        "resize": { "width": 200, "height": 200, "format": "Stretch to" },
        "static-crop": { "x_min": 10, "x_max": 90, "y_min": 10, "y_max": 90 },
        "tile": { "rows": 2, "columns": 2 }
    }
}
```
