> 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/deployment/hi/self-hosted/sdks/ios-sdk.md).

# iOS SDK

Roboflow Mobile iOS SDK एक बढ़िया विकल्प है यदि आप ऐसा iOS एप्लिकेशन विकसित कर रहे हैं जहाँ तेज़ inference या सुविधाओं, क्षमताओं और उपयोग के मामलों के एक नए सेट को अनलॉक करने के लिए edge (iPad या iPhone) पर चलने वाला मॉडल आवश्यक हो (जैसे augmented reality)।

इनमें एम्बेड किए गए कस्टम कंप्यूटर विज़न मॉडल वाले native mobile applications डेवलपर्स को अपने ऐप्स को देखने की क्षमता देने देते हैं।

## टास्क समर्थन

iOS SDK Deployment द्वारा निम्नलिखित टास्क प्रकार समर्थित हैं:

| कार्य प्रकार        | iOS SDK Deployment द्वारा समर्थित |
| ------------------- | --------------------------------- |
| ऑब्जेक्ट डिटेक्शन   | ✅                                 |
| वर्गीकरण            |                                   |
| इंस्टेंस सेगमेंटेशन | ✅ (iOS 18 या उससे ऊपर)            |
| सार्थक विभाजन       |                                   |

### CoreML निर्यात संगतता

निम्नलिखित मॉडल आर्किटेक्चर CoreML (`.mlpackage`) का ऑन-डिवाइस डिप्लॉयमेंट के लिए निर्यात समर्थन करते हैं:

| मॉडल          | CoreML निर्यात |
| ------------- | -------------- |
| RF-DETR       | ✅              |
| YoloLite      | ✅              |
| वर्गीकरण मॉडल | ✅              |

## एक iOS डिवाइस पर मॉडल डिप्लॉय करें

### समर्थित हार्डवेयर और सॉफ्टवेयर

सभी iOS डिवाइस ऑन-डिवाइस inference का समर्थन करते हैं, लेकिन iPhone 8 (A11 Bionic Processor) से पुराने वाले कम ऊर्जा-कुशल GPU इंजन पर वापस जाएंगे।

Roboflow के लिए न्यूनतम iOS संस्करण 15.4 आवश्यक है (instance segmentation models के लिए 18.0)।

## प्रोटोटाइपिंग

आप निम्न के साथ विकास कर सकते हैं [Roboflow Serverless Hosted API](/deployment/hi/legacy/legacy-serverless.md). यह वही प्रशिक्षित मॉडल उपयोग करता है जो ऑन-डिवाइस inference में उपयोग होते हैं।

## इंस्टॉलेशन

* इंस्टॉल करें [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) | [समस्या निवारण गाइड](https://guides.cocoapods.org/using/troubleshooting#installing-cocoapods)

“CocoaPods Ruby के साथ बनाया गया है और यह macOS पर उपलब्ध डिफ़ॉल्ट Ruby के साथ इंस्टॉल किया जा सकेगा। आप Ruby Version manager का उपयोग कर सकते हैं, हालांकि हम अनुशंसा करते हैं कि आप macOS पर उपलब्ध मानक Ruby का उपयोग करें, जब तक कि आपको पता न हो कि आप क्या कर रहे हैं। डिफ़ॉल्ट Ruby इंस्टॉल का उपयोग करने पर gems इंस्टॉल करते समय आपको sudo का उपयोग करना होगा. (हालांकि यह केवल gem installation की अवधि के दौरान ही एक समस्या है.)” - `sudo` का उपयोग करना होगा. (हालांकि यह केवल gem installation की अवधि के दौरान ही एक समस्या है.)” - [CocoaPods](https://guides.cocoapods.org/using/getting-started.html)

यदि आप इस प्रक्रिया के लिए RubyGems को व्यवस्थापक विशेषाधिकार नहीं देना चाहते, तो "Sudo-less" इंस्टॉलेशन एक विकल्प है। हालांकि, ध्यान दें कि `sudo` इंस्टॉलेशन अधिक सामान्य है।

Terminal में प्रवेश करके जांचें कि CocoaPods सफलतापूर्वक इंस्टॉल हुआ है `pod --version` अपने Terminal में।

### Roboflow CocoaPod इंस्टॉल करना

सबसे पहले, चलाएँ `pod init` अपने प्रोजेक्ट डायरेक्टरी में।

सुनिश्चित करें कि `Podfile` में निर्दिष्ट है `platform :ios, '15.4'`

फिर, जोड़ें `pod 'Roboflow'` को अपने `Podfile`.

यदि आपके पास XCode Command Line Tools इंस्टॉल नहीं हैं, तो चलाएँ `xcode-select --install` अपने Terminal में।

यह यह लौटाएगा: `xcode-select: त्रुटि: command line tools पहले से इंस्टॉल हैं, अपडेट इंस्टॉल करने के लिए "Software Update" का उपयोग करें` यदि Command Line Tools पहले से आपके सिस्टम पर मौजूद हैं।

अंत में, चलाएँ `pod install` और उत्पन्न `.xcworkspace` फ़ाइल को [XCode](https://developer.apple.com/xcode/).

![Podfile के सफल इंस्टॉलेशन के बाद Terminal](/files/108223ee63f3b46981233a0c85e678da73799366)

![Podfile के सफल इंस्टॉलेशन के बाद प्रोजेक्ट डायरेक्टरी](/files/2b11258baec3be055ed26f5371c6c40424ea1864)

* यदि यह त्रुटि लौटाए: "You may have encountered a bug in the Ruby interpreter or extension libraries," तो पहले चलाएँ `brew install cocoapods`, और फिर चलाएँ `pod install` और उत्पन्न `.xcworkspace` XCode में फ़ाइल।
  * Terminal में प्रवेश करके जांचें कि CocoaPods सफलतापूर्वक इंस्टॉल हुआ है `pod --version` अपने Terminal में।

### Swift में Roboflow का उपयोग

पर जाएँ `.xcworkspace` XCode में फ़ाइल।

![](/files/ce7195ae565f3a48ae54e5aa3b9a426b35cb7dba)

इसके बाद, जोड़कर Roboflow इम्पोर्ट करें `import Roboflow`. को `.xcworkspace` फ़ाइल में।

फिर, निम्न के साथ Roboflow API का एक instance बनाएं `let rf = Roboflow(apiKey: "API_KEY")`. For `modelVersion`, replace `YOUR-MODEL-VERSION-#` को अपने मॉडल के संस्करण संख्या के integer मान से बदलें।

#### अपने प्रोजेक्ट की जानकारी ढूँढना

**Completion Handler का उपयोग:**

```swift
import Roboflow
...
// अपने API Key से initialize करें
let rf = RoboflowMobile(apiKey: "API_KEY")
var model: RFModel?
...

// model आपके मॉडल का प्रोजेक्ट नाम है
rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#) { [self] model, error, modelName, modelType in
    if error != nil {
        print(error?.localizedDescription as Any)
    } else {
        model?.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects
                            processingMode: .performance or .balanced or .quality, // इंस्टेंस सेग
                            maxNumberPoints: मास्क प्रोसेसिंग बिंदुओं की अधिकतम संख्या) // इंस्टेंस सेग
        self.model = model
    }
    
}
...

// model?.detect एक UIImage लेता है और उस पर inference चलाता है
let img = UIImage(named: "example.jpeg") // या CVPixelBuffer
model?.detect(image: img!) { predictions, error in
    if error != nil {
        print(error)
    } else {
        print(predictions)
    }
}
```

**असिंक्रोनस उपयोग:**

असिंक्रोनस रूप से उपयोग करने के लिए, आपको अपने Roboflow मॉडल को एक असिंक्रोनस ब्लॉक के भीतर invoke करना होगा।

```swift
import Roboflow
...
// अपने API Key से initialize करें
let rf = RoboflowMobile(apiKey: "API_KEY")
...

// model आपके मॉडल का प्रोजेक्ट नाम है
let (model, loadingError, modelName, modelType) = await rf.load(model: "YOUR-MODEL-ID", modelVersion: YOUR-MODEL-VERSION-#)
model!.configure(threshold: threshold, overlap: overlap, maxObjects: maxObjects)
...

// model?.detect एक UIImage लेता है और उस पर inference चलाता है
let img = UIImage(named: "example.jpeg")
let (predictions, predictionError) = await model!.detect(image: img!)
print(predictions)
```

**पूर्वानुमान प्रारूप:**

```
x:Float // object x का केंद्र
y:Float // object y का केंद्र
width:Float
height:Float
className:String
confidence:Float
color:UIColor
box:CGRect
points:[CGPoint] // केवल instance segmentation models
```

[CGRect](https://developer.apple.com/documentation/corefoundation/cgrect)

### नेटिव Swift उदाहरण

यह [roboflow-ios-starter](https://github.com/roboflow/roboflow-ios-starter) ऐप Roboflow मॉडलों के साथ एक रीयलटाइम iOS ऐप बनाने के लिए एक शानदार शुरुआती बिंदु है। इसमें कैमरा सेटअप, मॉडल लोडिंग और प्रोसेस, तथा object-detection और instance segmentation दोनों मॉडलों के लिए आउटपुट drawing code शामिल है।

### React Native Expo App उदाहरण

हम यहाँ React Native के साथ एक expo app में इस SDK को integrate करने का एक उदाहरण भी प्रदान करते हैं। अपने स्वयं के downstream application के निर्माण पर विचार करते समय आपको यह उपयोगी लग सकता है।

सुनिश्चित करें कि आपके पास दोनों [Expo](https://docs.expo.dev/) और [CocoaPods](https://guides.cocoapods.org/using/getting-started.html) इंस्टॉल है।

* `expo-cli` निम्न Node.js संस्करणों का समर्थन करता है: `>=12.13.0 <15.0.0` (Maintenance LTS) और `>=16.0.0 <17.0.0` (Active LTS)
* Node.js के लिए yarn पैकेज इंस्टॉल होना चाहिए (`npm install -g yarn`)

{% embed url="<https://github.com/roboflow-ai/RoboflowExpoExample>" %}

### उदाहरण iOS अनुप्रयोग - CashCounter

डाउनलोड [CashCounter](https://apps.apple.com/app/roboflow-cash-counter/id1633812788), हमारा उदाहरण iOS ऐप जो US coins और bills गिनता है, एक उदाहरण के रूप में कि आप iPhone पर कंप्यूटर विज़न मॉडल कैसे डिप्लॉय कर सकते हैं। आपको bounding boxes, FPS, object counting, image upload, और बहुत कुछ को विज़ुअलाइज़ करने के उदाहरण दिखाई देंगे।
