IOS पर ML बनाएं



आर्टिफिशियल इंटेलिजेंस हर साल करीब हो रहा है, कल ही यह सीमित संख्या में लोगों के लिए उपलब्ध था। आज, हम मशीन लर्निंग मॉडल खुद बना सकते हैं और उन्हें अपनी परियोजनाओं में उपयोग कर सकते हैं। इस लेख में, हम बनाएँ एमएल उपकरण पेश करेंगे और छवियों को वर्गीकृत करने के लिए मॉडल को प्रशिक्षित करने का प्रयास करेंगे।

लेकिन इससे पहले कि आप शुरू करें, थोड़ा इतिहास और स्पष्टीकरण। डेवलपर WWDC2018 के वार्षिक सम्मेलन में, Apple ने मशीन लर्निंग क्रिएट ML के साथ काम करने के लिए उपकरण पेश किए। Create ML में प्रशिक्षित मॉडल एक मशीन लर्निंग एल्गोरिदम को प्रशिक्षण डेटा के एक सेट पर लागू करने का परिणाम है। मॉडल बहुत जगह नहीं लेते हैं (लगभग 3Mb), इसलिए उन्हें परियोजना में संग्रहीत किया जा सकता है। प्रारंभ में, यह Xcode 10 में Playgrounds का उपयोग करके मॉडल को प्रशिक्षित करने का प्रस्ताव था और छवियों, पाठ और तालिकाओं के साथ काम का समर्थन किया। परियोजना के खेल के मैदानों को लॉन्च करते समय, CreateML लाइब्रेरी को आयात करना और MLImageClassifierBuilder चलाना आवश्यक था (मामले में जब हमने छवियों को वर्गीकृत करने के लिए मॉडल को प्रशिक्षित किया था)।

import CreateMLUI

let builder = MLImageClassifierBuilder()
builder.showInLineView()

2019 में, ऐप्पल ने मशीन लर्निंग मॉडल के साथ काम करने के लिए एक पूरी तरह से नया टूल पेश किया, इसे प्लेग्राउंड्स से अलग किया। कोड की एक भी पंक्ति के बिना मॉडल को प्रशिक्षित करना संभव हो गया। डेटा प्रकारों की सूची ध्वनियों और गतिविधि के साथ फिर से भर दी गई है। कुल में, 5 डेटा प्रकार और 9 मॉडल टेम्पलेट प्रस्तुत किए जाते हैं। आइए प्रत्येक डेटा प्रकार को देखें और परिणामस्वरूप हम कौन से मॉडल प्राप्त कर सकते हैं।

इमेजिस


छवि

छवियों का उपयोग करते समय प्रशिक्षण, दो टेम्पलेट उपलब्ध हैं - इमेज क्लासिफ़ायर (छवि क्लासिफ़ायर) और ऑब्जेक्ट डिटेक्टर (ऑब्जेक्ट डिटेक्टर)।

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

ऑब्जेक्ट डिटेक्टर एक गहरा सीखने वाला मॉडल है। आपको छवि में कई वस्तुओं की पहचान करने की अनुमति देता है, जैसे कि लोग, भवन, कार। और यह सब एक छवि में। यह भी जोड़ा जाना चाहिए कि ऑब्जेक्ट डिटेक्टर मॉडल को प्रशिक्षित करते समय, कंप्यूटर जीपीयू का उपयोग किया जाता है।

ध्वनि


छवि

ध्वनियों के साथ काम करते समय, मॉडल बनाने के लिए केवल एक टेम्पलेट उपलब्ध होता है - साउंड क्लासिफायर (साउंड क्लासिफायरियर)। साउंड क्लासिफायर एक नया टेम्पलेट है और आपको ऑडियो स्ट्रीम में सबसे प्रमुख ध्वनि निर्धारित करने की अनुमति देता है। उदाहरण के लिए, आप यह निर्धारित कर सकते हैं कि कौन सा उपकरण ऑडियो में लगता है। साउंड क्लासिफायर, इमेज क्लासिफायर की तरह, ट्रांसफर ट्रेनिंग का उपयोग करता है।

गतिविधि


छवि
गतिविधि को केवल एक टेम्पलेट द्वारा दर्शाया जाता है - गतिविधि क्लासिफायरियर। एक्टिविटी क्लासिफायर क्रिएट एमएल में एक नया टेम्प्लेट है और इसे एक्सेलेरोमीटर और जाइरोस्कोप से मोशन डेटा को वर्गीकृत करने के लिए उपयोग किया जाता है।

ऐसे मॉडल गहरे सीखने के मॉडल हैं और कंप्यूटर के GPU का उपयोग करके प्रशिक्षित किए जाते हैं।

टेक्स्ट


छवि

टेक्स्ट को दो टेम्प्लेट द्वारा दर्शाया जाता है: टेक्स्ट क्लासिफायर (टेक्स्ट क्लासिफायर) और वर्ड टैगर (शब्द मार्कर)।

टेक्स्ट क्लासिफायर का उपयोग वाक्य, पैराग्राफ और यहां तक ​​कि संपूर्ण लेखों को उनकी सामग्री के आधार पर पहचानने के लिए किया जाता है। शब्द टैगर का उपयोग शब्दों को चिह्नित करने या पाठ में किसी भी नाम को पहचानने के लिए किया जाता है।

टेबल्स


छवि

टेबल्स को तीन टेम्प्लेट्स द्वारा दर्शाया जाता है: टेबुलर रेजिस्टर (टेबुलर रेजिस्टर), टेबुलर क्लासिफायर (टेबल क्लासिफायर) और एडवाइजर (सिफारिशकर्ता)।

Tabular Regressor एक मॉडल है जो कुछ आंकड़ों के आधार पर संख्यात्मक मान का अनुमान लगा सकता है। उदाहरण के लिए, आप एक मॉडल को प्रशिक्षित कर सकते हैं जो मौसम की भविष्यवाणी करेगा।

टेबुलर क्लासिफायर, उनकी विशेषताओं के आधार पर वस्तुओं को वर्गीकृत करता है। उदाहरण के लिए, आप विभिन्न उपयोगकर्ता मापदंडों के आधार पर एक ऑनलाइन स्टोर में कपड़े के आकार को निर्धारित करने के लिए एक मॉडल को प्रशिक्षित कर सकते हैं। एक मॉडल प्रकार के साथ काम करता है जैसे पूर्णांक, डबल, स्ट्रिंग, और लंबे समय तक अगर लक्ष्य एक असतत मूल्य है।

अनुशंसाकर्ता आपको उपयोगकर्ता के व्यवहार के आधार पर सामग्री की सिफारिश करने की अनुमति देता है, और सभी गणना सीधे डिवाइस पर की जाती हैं।

अब जब हम सभी उपलब्ध टेम्पलेट्स से परिचित हो गए हैं, तो हम अपना पहला मशीन लर्निंग मॉडल बनाना शुरू कर सकते हैं। आइए इमेज क्लासिफायरियर से शुरू करते हैं।

छवि वर्गीकरण


क्या आपने एचबीओ सिलिकॉन वैली श्रृंखला देखी है? चौथे सीज़न की एक श्रृंखला में, उन्होंने एक एप्लिकेशन दिखाया जो छवियों में "हॉट डॉग" और "हॉट डॉग्स नहीं" को पहचानता है। इमेज क्लासिफायर का उपयोग करके, आप इस एप्लिकेशन का एक एनालॉग बना सकते हैं। लेकिन पहले आपको मॉडल को प्रशिक्षित करने के लिए डेटा तैयार करने की आवश्यकता है। यहां चित्रों के साथ पुरालेख

छवि क्लासिफायर मॉडल के प्रशिक्षण के लिए कुछ आवश्यकताएँ। छवियाँ 299 पिक्सेल से कम नहीं होनी चाहिए। प्रशिक्षण किट में कम से कम 10 छवियां होनी चाहिए, लेकिन अधिक बेहतर। अब हम जानते हैं कि जब इमेज क्लासिफायर, प्रशिक्षण स्थानांतरण का उपयोग किया जाता है, जो आपको कम संख्या में छवियों पर मॉडल को प्रशिक्षित करने की अनुमति देता है। प्रत्येक सेट के लिए छवियों की संख्या समान होनी चाहिए, अन्यथा श्रेणियों में से एक की ओर एक बदलाव होगा। लगभग 80% छवियां मॉडल के प्रशिक्षण के लिए उपयोग की जाती हैं, और शेष 20% परीक्षण के लिए। इसके अलावा, छवियों को दोहराया नहीं जाना चाहिए, अर्थात्, प्रशिक्षण के लिए छवियों के साथ फ़ोल्डर में, ऐसी छवियां नहीं होनी चाहिए जो आगे परीक्षण के लिए उपयोग की जाएंगी। प्रशिक्षण के लिए फ़ोल्डर्स के नाम संबंधित वर्गों के लिए पहचानकर्ता के रूप में उपयोग किए जाएंगे,मॉडल का उपयोग करते समय। मेरा उदाहरण HotDog या NotHotDog नामों का उपयोग करता है। छवियों के नाम स्वयं किसी भी भूमिका नहीं निभाते हैं, उन्हें आप की तरह कहा जा सकता है। मैंने उन्हें सीरियल नंबर के साथ नामित किया।

अब जब हमारा डेटा तैयार है, तो हम मॉडल का प्रशिक्षण शुरू कर सकते हैं। क्रिएट एमएल के साथ काम करने के लिए, हमें Xcode 11 या उच्चतर की आवश्यकता है। मैं Xcode 11.3.1 का उपयोग करूंगा। Create ML टूल को चलाने के लिए, आपको Xcode -> ओपन डेवलपर टूल -> ML बनाएँ पर जाना होगा। एक विंडो दिखाई देगी जहां आप एक मौजूदा का चयन कर सकते हैं या एक नया प्रोजेक्ट बना सकते हैं। नया दस्तावेज़ चुनें। अगला, आपको एक टेम्पलेट का चयन करने की आवश्यकता है, हमारे मामले में हम छवि क्लासिफायरियर का उपयोग करेंगे। हमारी परियोजना को एक नाम दें, अगला पर क्लिक करें और उस स्थान का चयन करें जहां परियोजना संग्रहीत की जाएगी। एक कामकाजी माहौल मॉडल के साथ काम करने के लिए खुलता है।

छवि

जैसा कि हम देख सकते हैं, यह एक पूरी तरह से अलग परियोजना है जहां आप कई मॉडल बना और प्रशिक्षित कर सकते हैं। परियोजना का नाम (प्रोजेक्ट) बाईं ओर निरीक्षक में प्रदर्शित किया गया है, इस पर क्लिक करने से परियोजना के बारे में जानकारी प्रदर्शित होती है और आप इसे संपादित कर सकते हैं। नीचे, मॉडल स्रोतों में हमारी परियोजना में उपयोग किए जाने वाले सभी मॉडल शामिल हैं। आइए अब मुख्य टूल विंडो में डेटा इनपुट अनुभाग देखें।

प्रशिक्षण डेटा - यहां आपको प्रशिक्षण मॉडल के लिए छवियां जोड़ने की आवश्यकता है। सत्यापन डेटा - यहां आप मॉडल प्रशिक्षण का परीक्षण करने के लिए छवियों का एक सेट जोड़ सकते हैं (मेरे मामले में, मैंने ऑटो छोड़ दिया)। टेस्टिंग डेटा - यहां आपको उस मॉडल के परीक्षण के लिए चित्र जोड़ने की आवश्यकता है जो मॉडल के प्रशिक्षण में शामिल नहीं थे।

पैरामीटर्स सेक्शन में, आप मॉडल प्रशिक्षण के दौरान एकल छवि पर किए गए पुनरावृत्तियों की अधिकतम संख्या निर्दिष्ट कर सकते हैं। और ऑगमेंटेशंस सेक्शन में, आप उन इफेक्ट्स को चुन सकते हैं जो इमेज पर सुपरइम्पोज किए गए हैं।

अब जब हम Create ML से परिचित हो जाते हैं, तो हम अपने पहले मॉडल का प्रशिक्षण शुरू कर सकते हैं। हम केवल प्रशिक्षण डेटा फ़ोल्डर (नाम किसी भी हो सकता है) को प्रशिक्षण डेटा टैब में खींच सकते हैं। अब ट्रेन पर क्लिक करें। सीखने की प्रक्रिया शुरू होती है।

छवि

इसलिए, मुझे प्रशिक्षित होने में लगभग 27 सेकंड का समय लगा, और मॉडल लगभग तैयार है। प्रशिक्षण के बाद, आप मूल्यांकन कर सकते हैं कि मॉडल प्रशिक्षण डेटा सेट से छवियों को कितनी अच्छी तरह वर्गीकृत करता है। चूंकि मॉडल इन छवियों में प्रशिक्षित है, इसलिए यह उन्हें अच्छी तरह से वर्गीकृत करता है। मेरे मामले में, मॉडल ने प्रशिक्षण सेट से सभी छवियों और परीक्षण सेट से 97% छवियों की पहचान की। परीक्षण का समय आ गया है।

छवि

टेस्टिंग टैब पर जाएं। मॉडल को प्रशिक्षित करने के लिए डेटा के साथ, बस परीक्षण डेटा फ़ोल्डर को परीक्षण डेटा विंडो में खींचें। वास्तव में, हम प्रशिक्षण शुरू करने से पहले परीक्षण के लिए छवियों के साथ एक फ़ोल्डर सेट कर सकते हैं। लेकिन प्रक्रिया की रैखिकता के लिए हम इसे अलग तरीके से करेंगे। टेस्ट मॉडल पर क्लिक करें। परीक्षण के परिणामों के अनुसार, मॉडल ने 98% का मुकाबला किया।

छवि

आउटपुट पर जाकर, आप मॉडल के प्रदर्शन को अपनी परियोजना में शामिल किए बिना सत्यापित कर सकते हैं। ऐसा करने के लिए, हॉट डॉग की छवियां जोड़ें और हॉट डॉग नहीं। मैंने एक सलाद और एक हॉट डॉग की छवि जोड़ी और, दोनों मामलों में, मॉडल ने ठीक किया। बेशक, गंभीर परियोजनाओं को प्रशिक्षण के लिए अधिक डेटा, अधिक पुनरावृत्तियों, और इसी तरह की आवश्यकता हो सकती है। लेकिन एक परीक्षण परियोजना के लिए यह पर्याप्त होगा। मॉडल को बचाने के लिए, इसे आउटपुट से वांछित फ़ोल्डर में स्थानांतरित करें।

छवि

अब मैं सुझाव देता हूं कि मॉडल को एक परीक्षण परियोजना में एकीकृत करने की कोशिश की जाए, जो यहां उपलब्ध हैप्रोजेक्ट में एक मॉडल पहले ही जोड़ा जा चुका है, लेकिन आप किसी अन्य क्लासिफायरियर का उपयोग कर सकते हैं। यह एप्लिकेशन को नहीं तोड़ देगा, क्योंकि मॉडल विनिमेय हैं और आप प्रोजेक्ट में कई मॉडल का उपयोग कर सकते हैं। बस तैयार मॉडल को परियोजना में स्थानांतरित करें।

छवि

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

छवि

ImageClassifierService क्लास पर जाएं, यहां आप देख सकते हैं कि मॉडल को कैसे इनिशियलाइज़ किया जाता है।

private func makeImageClassifierModel() -> VNCoreMLModel? {
  return try? VNCoreMLModel(for: MyImageClassifier().model)
}

काफी आसान है, है ना? अगला, आपको वर्गीकरण अनुरोध बनाने, संसाधित करने और निष्पादित करने की आवश्यकता है।

private func makeClassifierRequest(for model: VNCoreMLModel, ciImage: CIImage) {
    let request = VNCoreMLRequest(model: model) { [weak self] request, error in
      self?.handleClassifierResults(request.results)
    }
    
    let handler = VNImageRequestHandler(ciImage: ciImage)
    DispatchQueue.global(qos: .userInteractive).async {
      do {
        try handler.perform([request])
      } catch {
        self.onDidUpdateState?(.requestFailed)
      }
    }
  }

यह केवल परिणाम को संसाधित करने के लिए बनी हुई है।

  private func handleClassifierResults(_ results: [Any]?) {
    guard let results = results as? [VNClassificationObservation],
      let firstResult = results.first else {
      onDidUpdateState?(.requestFailed)
      return
    }
    
    DispatchQueue.main.async { [weak self] in
      let confidence = (firstResult.confidence * 100).rounded()
      let resultModel = ClassifierResultModel(identifier: firstResult.identifier, confidence: Int(confidence))
      self?.onDidUpdateState?(.receiveResult(resultModel: resultModel))
    }
  }

अब हम एप्लिकेशन को चला सकते हैं और मॉडल की सटीकता की जांच कर सकते हैं।

छवि

जैसा कि हम देख सकते हैं, मॉडल अच्छा कर रहा है। अब आइए अपने मॉडल को एक हॉट डॉग की छवि दिखाने की कोशिश करें और देखें कि वह कैसे इसके साथ मुकाबला करता है।

छवि

जैसा कि हम देख सकते हैं, मॉडल बर्गर छवि को "हॉट डॉग नहीं" के रूप में परिभाषित करता है। मैं मॉडल को थोड़ा भ्रमित करने और एक कुत्ते की छवि को गर्म कुत्ते की पोशाक में जोड़ने का प्रस्ताव करता हूं।

छवि

और यहां, हमारा प्रशिक्षित मॉडल एक उत्कृष्ट काम करता है।

निष्कर्ष


इस लघु लेख में, हमने एमएल उपकरण बनाएँ। जानें कि यह किस प्रकार के साथ काम करता है और उपकरण किस पैटर्न का उपयोग करता है। उन्होंने अपने मॉडल को प्रशिक्षित करने का भी प्रयास किया। मशीन लर्निंग मॉडल बनाने में सबसे कठिन हिस्सा सीखने के लिए डेटा ढूंढना और तैयार करना है। आप मॉडल को प्रशिक्षित नहीं कर सकते हैं, लेकिन पहले से ही प्रशिक्षित लोगों का उपयोग कर सकते हैं। उदाहरण के लिए, देखते हैं पहले से ही पहले से तैयार मॉडल है कि चित्र और पाठ के साथ काम करते हैं। जीथब पर कई कस्टम मॉडल हैं।
प्रशिक्षण मॉडल के लिए छवियां भी आसान हैं, उदाहरण के लिए, Google से अभिलेखागारलेकिन अगर आपको संकीर्ण रूप से लक्षित कार्यों के लिए एक मॉडल को प्रशिक्षित करने की आवश्यकता है, तो आपको छवियों को इकट्ठा करना होगा और अपने अभिलेखागार बनाना होगा।

All Articles