> 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).

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

## के बारे में

एक version आपके डेटासेट का एक point-in-time snapshot है। हम इन versions को इसलिए रखते हैं क्योंकि आपके मॉडल के प्रत्येक iteration में कौन-सी images, preprocessing, और augmentation steps उपयोग हुईं, इसका सटीक रिकॉर्ड रखने से आप परिणामों को reproduce करने की क्षमता बनाए रखते हैं। इससे आप वैज्ञानिक रूप से विभिन्न models और frameworks के बीच परीक्षण कर सकते हैं, और यह भरोसा बना रहता है कि परिणाम model changes के कारण हैं, न कि data pipeline में किसी bug/change के कारण।

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

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

## वेब ऐप

### डेटासेट version कैसे बनाएं

एक 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>

एक बार जब आप अपने data पर लागू करने के लिए preprocessing steps और augmentations निर्दिष्ट कर लेते हैं, "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 का पुनःसमायोजन

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

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

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

Train, validation, और test percentages सेट करें, फिर चुनें कि images को कैसे reassigned किया जाए:

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

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

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

## HTTP API

### Train/Validation/Test Splits का पुनःसमायोजन

एक POST request करके Project के splits का पुनःसमायोजन करें `/:workspace/:project/splits/rebalance` endpoint. यह Project स्वयं पर splits को बदलता है, इसलिए अगला version जो आप generate करेंगे वह नए balance का उपयोग करेगा।

Rebalance हमेशा एक background task के रूप में चलता है। Request लौटाती है `202 स्वीकृत` एक task ID और polling URL के साथ। लौटाए गए `url`को, या `GET /:workspace/asynctasks/:id` को `taskId`के साथ कॉल करें, जब तक task पूरा न हो जाए।

Calling API key के पास `project:update` scope और Workspace में splits संपादित करने की अनुमति होनी चाहिए।

**उदाहरण अनुरोध**

```bash
$ curl --location "https://api.roboflow.com/my-workspace/my-project/splits/rebalance?api_key=$ROBOFLOW_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
    "splits": { "train": 70, "valid": 20, "test": 10 }
}'
```

**पैरामीटर**

```
- splits (object) - आवश्यक। लक्ष्य train, valid, और test मान, प्रत्येक एक गैर-ऋणात्मक पूर्णांक। मान सापेक्ष हैं, इसलिए 70/20/10 का अर्थ 70%/20%/10% है। कम से कम एक 0 से बड़ा होना चाहिए।
- mode (string) - "rebalance" (default) जितनी संभव हो उतनी कम images को स्थानांतरित करता है। "shuffle" हर image को यादृच्छिक रूप से पुनः असाइन करता है।
- grouping (string) - केवल "shuffle" mode के साथ उपयोग किया जाता है। "global" (default) पूरे Project को shuffle करता है। "batch" प्रत्येक upload batch और completed annotation job को अलग-अलग shuffle करता है।
- classes (array of strings) - rebalance को केवल उन images तक सीमित करें जिनमें सिर्फ ये classes हों। अन्य classes वाली images अपने current split में रहती हैं।
```

**उदाहरण प्रतिक्रिया**

```json
{
    "taskId": "abc123",
    "url": "https://api.roboflow.com/my-workspace/asynctasks/abc123"
}
```

## Python SDK

एक version project के labeled data का एक snapshot freeze करता है, जिस पर preprocessing और augmentation steps का चुना हुआ सेट लागू होता है। 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)
```

`augmentation.image.versions` अधिकतम version size multiplier है, और आपका plan इसे सीमित करता है। यदि आप इसे इससे अधिक सेट करते हैं तो generation विफल हो जाती है। देखें [Augmentations को सीमित करना](/datasets/hi/versions/dataset-versions/image-augmentation.md#limiting-augmentations).

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

```json
{
    "versionName": "Raccoons",
    "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": "Contrast Stretching" },
        "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 }
    }
}
```

`टाइल` tile में ये fixed tile modes भी शामिल हैं: `{"mode": "fixed_size", "tileWidth": 640, "tileHeight": 640, "overlap": 5, "padding": "black"}` या `{"mode": "fixed_aspect", "aspectRatio": 1, "span": "width", "overlap": 5, "padding": "black"}`. देखें [टाइल](/datasets/hi/versions/dataset-versions/image-preprocessing.md#tile).

## MCP सर्वर

अपने AI एजेंट को [MCP सर्वर](https://docs.roboflow.com/agents/mcp-server) और यह इन tools के साथ एक dataset version बना सकता है:

<table data-search="false"><thead><tr><th width="290">टूल</th><th>विवरण</th></tr></thead><tbody><tr><td><code>versions_generate</code></td><td>वैकल्पिक preprocessing और augmentation के साथ एक version बनाएं।</td></tr><tr><td><code>versions_get</code></td><td>splits और उसकी trainings सहित version की जानकारी प्राप्त करें।</td></tr><tr><td><code>datasets_rebalance_splits</code></td><td>train, valid, और test splits के async rebalance को queue में डालें।</td></tr><tr><td><code>async_tasks_get</code></td><td>जब तक rebalance task समाप्त न हो जाए, उसे poll करें।</td></tr></tbody></table>
