इस ट्यूटोरियल में, आप सीखेंगे कि अपने iOS और macOS ऐप्स में उपयोग के लिए एक कस्टम डॉग-ब्रीड वर्गीकरण Core ML मॉडल को कैसे प्रशिक्षित किया जाए। इस ट्यूटोरियल के अंत तक आपका Core ML मॉडल पांच अलग-अलग नस्लों के बीच अंतर करने में सक्षम होगा!
आपको याद होगा कि Apple ने कुछ साल पहले मशीन लर्निंग और आर्टिफिशियल इंटेलिजेंस स्टार्टअप Turi को 200 मिलियन डॉलर से अधिक में अधिग्रहित किया था; यह कम समय में उन्नत मशीन लर्निंग मॉडल बनाने के लिए शक्तिशाली उपकरण प्रदान करता है।
इस ट्यूटोरियल में, आप अपने Mac पर Turi Create इंस्टॉल करना, एक Python स्क्रिप्ट बनाना, और उस स्क्रिप्ट का उपयोग Core ML मॉडल को प्रशिक्षित करने के लिए करना सीखेंगे जिसे आप सीधे अपने Xcode प्रोजेक्ट्स में ड्रैग कर सकते हैं और अपने ऐप्स में जल्दी से लागू कर सकते हैं।
शुरुआत करना
इसके वास्तविक मशीन लर्निंग भाग के साथ शुरू करने से पहले, आइए पहले Turi और Python की इंस्टॉलेशन को रास्ते से हटा दें — और, निश्चित रूप से, आपको यह सुनिश्चित करना होगा कि आपका हार्डवेयर और सॉफ़्टवेयर Turi की आवश्यकताओं को पूरा करता है।
आवश्यकताएं
आपके द्वारा इंस्टॉल किए गए किसी भी सॉफ़्टवेयर की तरह, Turi Create की कुछ विशिष्ट आवश्यकताएं हैं, जो उनके आधिकारिक GitHub पेज पर पाई जा सकती हैं।
Turi Create समर्थन करता है:
- macOS 10.12+
- Linux (glibc 2.12+ के साथ)
- Windows 10 (WSL के माध्यम से)
Turi Create के लिए आवश्यक:
- Python 2.7, 3.5, 3.6
- x86_64 आर्किटेक्चर
- कम से कम 4 GB RAM
निचला रेखा यह है, जब तक आपका Mac उचित रूप से नया है, आप Turi Create चलाने में सक्षम होना चाहिए। यदि आप चाहें, तो आप किसी अन्य ऑपरेटिंग सिस्टम के साथ अनुसरण कर सकते हैं; हालांकि, आपको उनके काम करने के लिए कुछ चरणों को बदलने की आवश्यकता हो सकती है।
इंस्टॉलेशन
Turi Create इंस्टॉल करना काफी सरल है, खासकर यदि आप कमांड लाइन से परिचित हैं। जबकि आप Python के नए संस्करण का उपयोग करना चुन सकते हैं, मैं इस ट्यूटोरियल में Python 2.7 का उपयोग करूंगा।
MacOS Mojave में, Python 2.7 डिफ़ॉल्ट रूप से इंस्टॉल आता है, इसलिए आपको केवल संस्करण की जांच करने की आवश्यकता होगी। अपने Mac पर, Applications > Utilities > Terminal खोलें या कीबोर्ड शॉर्टकट Command-Space के साथ इसे खोजें।
अपने Mac पर Python के संस्करण की जांच करने के लिए, दर्ज करें:
$ python - version
यह आपको Python का संस्करण बताएगा, और आपका कंसोल ऐसा दिखना चाहिए:
यदि आपका संस्करण Python 2.7 नहीं है, या यदि यह किसी कारण से आपके कंप्यूटर पर इंस्टॉल नहीं है, तो आपको इसे इस लिंक पर इंस्टॉल करना चाहिए। यदि आपका आउटपुट मेरे जैसा दिखता है, तो आप आगे बढ़ने के लिए तैयार हैं।
नोट: कुछ लोग वर्चुअल मशीन का उपयोग करके Turi Create इंस्टॉल करना पसंद करते हैं क्योंकि यही Apple अनुशंसा करता है। लेकिन चीजों को सरल रखने के लिए, हम इसे सीधे इंस्टॉल करेंगे।
Turi Create इंस्टॉल करने के लिए, बस अपने टर्मिनल विंडो में निम्नलिखित दर्ज करें:
$ pip install turicreate
बस! Turi Create आपके Mac पर सफलतापूर्वक इंस्टॉल हो गया है, और यह उपयोग के लिए तैयार है। अब आप वर्गीकरण, पहचान, रिग्रेशन, और अन्य प्रकार के मॉडल बना सकते हैं।
डेटासेट
किसी भी मशीन लर्निंग मॉडल के लिए, आपको एक डेटासेट की आवश्यकता होती है। इस ट्यूटोरियल में, आप एक साधारण डॉग-ब्रीड वर्गीकरण मॉडल को प्रशिक्षित करना सीखेंगे, जिसके लिए छवि वर्गीकरण की आवश्यकता होती है। मैं जिस डेटा का उपयोग करूंगा वह स्टैनफोर्ड यूनिवर्सिटी के डॉग्स डेटासेट से आता है।
Turi को पूर्व-वर्गीकृत छवियों को पहचानने में सक्षम होने के लिए, आपको उन्हें इस आधार पर व्यवस्थित करना होगा कि वे क्या दर्शाते हैं। उदाहरण के लिए, गोल्डन रिट्रीवर्स की सभी छवियां एक फ़ोल्डर में होंगी, जबकि लैब्राडूडल्स की सभी तस्वीरें दूसरी में होंगी।
सरलता के लिए, हम स्टैनफोर्ड के डेटासेट में सैकड़ों में से केवल पांच नस्लों का उपयोग करेंगे, लेकिन आप जितने चाहें उतने उपयोग कर सकते हैं। मैंने आपके लिए इसे व्यवस्थित कर दिया है और इसके लिए एक रिपॉजिटरी बनाई है। यदि आप अधिक डॉग नस्लें जोड़ना चुनते हैं, तो बस अधिक फ़ोल्डर जोड़ें और उन्हें इच्छानुसार नाम दें।
फ़ोल्डर संरचना
अब तक, आपने शायद यह पता लगा लिया होगा कि आप अपने डेटासेट को कैसे व्यवस्थित करते हैं, मॉडल को सही ढंग से प्रशिक्षित करने में सक्षम होने के लिए महत्वपूर्ण है — Turi Create को यह जानने का कोई अन्य तरीका नहीं है कि क्या कहां जाता है। अब खुद को व्यवस्थित करने के लिए एक पल लें।
यह हायरार्की डायग्राम सब कुछ समझा देना चाहिए, और इस ट्यूटोरियल के साथ जारी रखने से पहले आपको अपने फ़ोल्डर्स को इस क्रम में प्राप्त करना होगा। यदि आप नाम बदलना चाहते हैं या चीजों को अलग तरीके से व्यवस्थित करना चाहते हैं, तो आपको इसका नोट बनाने की आवश्यकता होगी।
क्लासिफायर प्रशिक्षित करना
सेटअप समाप्त करने के बाद, आप इस ट्यूटोरियल के मांस में गोता लगाने के लिए तैयार हैं — वास्तव में अपने क्लासिफायर को प्रशिक्षित करना। हम ज्यादातर Python में काम करेंगे, लेकिन यदि आपने पहले कभी Python का उपयोग नहीं किया है, तो यह ठीक है। मैं प्रत्येक चरण की व्याख्या करूंगा जैसे हम साथ चलते हैं, और यदि आपके कोई प्रश्न हैं, तो नीचे टिप्पणी छोड़ने में संकोच न करें।
Python फ़ाइल
सबसे पहले, हमें अपने विचारों को रखने के लिए एक जगह की आवश्यकता होगी (वह है, निश्चित रूप से, Python में)। यदि आपके पास पहले से ही एक एडिटर है जो Python का समर्थन करता है, जैसे Atom या PyCharm जैसा एक इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट, तो आप उनका उपयोग dog_breeds.py नामक एक खाली फ़ाइल बनाने के लिए कर सकते हैं।
यदि आप मेरी तरह अधिक डेवलपर मार्ग पसंद करते हैं, तो आप टर्मिनल का उपयोग करके वही काम कर सकते हैं। आपको इस फ़ाइल को अपने ml_classifier फ़ोल्डर के अंदर, images फ़ोल्डर के साथ बनाना होगा ताकि आपका हायरार्की ऐसा दिखे:
एक नई फ़ाइल बनाने के लिए, पहले लक्ष्य डायरेक्टरी में प्रवेश करें:
$ cd ml_classifier
फिर, dog_breeds.py नामक एक नई फ़ाइल बनाएं।
$ touch dog_breeds.py
वोइला! आपके फ़ोल्डर्स, फ़ाइलें, और छवियां सभी वहीं हैं जहां उन्हें होना चाहिए, और आप अगले चरण के साथ जारी रखने के लिए तैयार हैं। हम अपनी फ़ाइल खोलने के लिए Xcode का उपयोग करेंगे, इसलिए सुनिश्चित करें कि यह इंस्टॉल और अप-टू-डेट है।
डेटासेट छवियों को लोड करना
अंत में, हमारे द्वारा अभी बनाई गई Python फ़ाइल के माध्यम से Turi को यह बताने का समय आ गया है कि उसे क्या करना है। यदि आप फ़ाइल पर डबल-क्लिक करते हैं, तो यह डिफ़ॉल्ट रूप से Xcode में खुलनी चाहिए, यदि आपने इसे इंस्टॉल किया है। यदि नहीं, तो आप किसी अन्य एडिटर या Python IDE का भी उपयोग कर सकते हैं।
1. फ्रेमवर्क आयात करें
import turicreate
फ़ाइल के शीर्ष पर, आपको Turi Create फ्रेमवर्क आयात करने की आवश्यकता होगी। यदि आप चाहें, तो as <your name> जोड़कर संदर्भ के लिए एक नाम बना सकते हैं। उदाहरण के लिए, यदि आप इसे अपने कोड में tc के रूप में संदर्भित करना चाहते हैं, तो आप लिख सकते हैं:
import turicreate as tc
यह आपको turicreate लिखने के बजाय tc कॉल करने की अनुमति देगा। इस ट्यूटोरियल में, मैं अस्पष्टता को कम करने के लिए पूर्ण संस्करण, turicreate को कॉल करूंगा।
आपको फ़ोल्डर नामों और अन्य OS-संबंधित कार्यों से निपटने की भी आवश्यकता होगी ताकि आपकी छवियों को वर्गीकृत किया जा सके। इसके लिए os नामक एक और Python लाइब्रेरी की आवश्यकता होगी। इसे आयात करने के लिए, बस निम्नलिखित जोड़ें:
import os
2. छवियों को लोड करना
data = turicreate.image_analysis.load_images("images/")
यहां, हम अपने डेटासेट की सभी छवियों को data नामक एक चर में संग्रहीत कर रहे हैं। चूंकि हमारी dog_breeds.py फ़ाइल images फ़ोल्डर के समान डायरेक्टरी में है, हम बस पथ के रूप में “images/” डाल सकते हैं।
3. लेबल परिभाषित करना
अब जब Turi Create के पास आपकी सभी छवियां हैं, तो आपको फ़ोल्डर नामों को एक लेबल नाम से जोड़ने की आवश्यकता है। ये लेबल नाम वे हैं जो आपके Core ML मॉडल में उपयोग किए जाने पर वापस किए जाएंगे।
data["label"] = data["path"].apply(lambda path: os.path.basename(os.path.dirname(path)))
यह आपको अपने सभी फ़ोल्डर नामों को एक "लेबल" नाम पर मैप करने की अनुमति देता है, जो Turi Create को बताता है कि "cocker_spaniel" फ़ोल्डर में मौजूद सभी छवियां वास्तव में Cocker Spaniels हैं, उदाहरण के लिए।
4. SFrame के रूप में सहेजें
यदि आप SFrame से परिचित नहीं हैं, तो सरल शब्दों में, यह आपके सभी डेटा (इस मामले में, एक छवि) और सभी लेबल्स (इस मामले में, डॉग ब्रीड) का एक डिक्शनरी है। अपने SFrame को इस तरह सहेजें:
data.save("dog_classifier.sframe")
यह आपको अगले चरण में उपयोग के लिए अपनी लेबल की गई छवियों को संग्रहीत करने की अनुमति देता है। यह मशीन लर्निंग उद्योग में एक काफी मानक डेटा प्रकार है।
प्रशिक्षण और परीक्षण
Turi Create के द्वारा आपकी सभी लेबल की गई छवियों को जगह में रखने के बाद, यह होम स्ट्रेच में प्रवेश करने और अंत में अपने मॉडल को प्रशिक्षित करने का समय है। हमें डेटा को विभाजित करने की भी आवश्यकता है ताकि 80% प्रशिक्षण के लिए उपयोग किया जाए, और 20% मॉडल के प्रशिक्षण समाप्त होने पर उसका परीक्षण करने के लिए सहेजा जाए — हमें मैन्युअल रूप से इसका परीक्षण नहीं करना पड़ेगा।
1. SFrame लोड करना
अब, हमें पिछले चरण में बनाए गए SFrame को लोड करने की आवश्यकता है। यह वही है जिसका उपयोग हम बाद में परीक्षण और प्रशिक्षण डेटा में विभाजित करने के लिए करेंगे।
data = turicreate.SFrame("dog_classifier.sframe")
यह data चर को असाइन करता है, जो अब SFrame प्रकार का है, पिछले चरण में सहेजे गए SFrame को। अब, हमें डेटा को परीक्षण और प्रशिक्षण डेटा में विभाजित करने की आवश्यकता होगी। जैसा कि ऊपर उल्लेख किया गया है, हम परीक्षण से प्रशिक्षण डेटा का 80:20 विभाजन करेंगे।
2. डेटा विभाजित करना
डेटा विभाजित करने का समय। अपने SFrame कोड के बाद, निम्नलिखित जोड़ें:
testing, training = data.random_split(0.8)
यह कोड डेटा को 80-20 में बेतरतीब ढंग से विभाजित करता है और इसे दो चर, testing और training, में क्रमशः असाइन करता है। अब, Turi स्वचालित रूप से आपके मॉडल का परीक्षण करेगा बिना आपको मैन्युअल रूप से टेस्ट इमेज सप्लाई करने और एक ऐप बनाने की आवश्यकता के — यदि आपको समायोजन करने की आवश्यकता है, तो आपको इसे पूरी तरह से लागू करने की आवश्यकता नहीं होगी, और इसके बजाय, आप उन्हें सीधे अपनी Python फ़ाइल में कर सकते हैं।
3. प्रशिक्षण, परीक्षण, और निर्यात
आपकी कड़ी मेहनत आखिरकार रंग लाई! Python कोड की इस लाइन में, आप बस Turi Create को अपना मॉडल प्रशिक्षित करने के लिए कहेंगे, जबकि उस आर्किटेक्चर को निर्दिष्ट करते हुए जिसका आप उपयोग करना चाहते हैं।
classifier = turicreate.image_classifier.create(testing, target="label", model="resnet-50")
आप बस Turi को अपने testing डेटा (पहले निर्दिष्ट) का उपयोग करने के लिए कह रहे हैं, और labels की भविष्यवाणी करने के लिए (पहले फ़ोल्डर संरचना के आधार पर), resnet-50 का उपयोग करते हुए, जो सबसे सटीक मशीन लर्निंग मॉडल आर्किटेक्चर में से एक है।
अपने टेस्टिंग डेटा का उपयोग करके और यह सुनिश्चित करने के लिए कि आपका मॉडल सटीक है, इसे जोड़ें:
testing = classifier.evaluate(training) print testing["accuracy"]
यह आपके द्वारा निर्दिष्ट training डेटा का उपयोग करता है और परीक्षण के बाद परिणामों को एक चर में संग्रहीत करता है जिसे (आपने अनुमान लगाया) testing कहा जाता है। आपकी जानकारी के लिए, यह सटीकता प्रिंट करता है, लेकिन पर्याप्त समय दिए जाने पर आप Turi Create के API को देखते हुए अन्य चीजों को भी प्रिंट कर सकते हैं।
अंतिम लेकिन कम से कम नहीं, आप अपने मॉडल को एक उपयोगी नाम देने के बाद इस वन-लाइनर के साथ सीधे अपनी फ़ाइल सिस्टम में सहेज सकते हैं:
classifier.save("dog_classifier.model") classifier.export_coreml("dog_classifier.mlmodel")
बेशक, आप अपने मॉडल को अन्य फॉर्मेट में भी सहेज सकते हैं, लेकिन इस उदाहरण के लिए, मैंने इसे Core ML मॉडल के रूप में सहेजा है।
चल रहा है और आउटपुट
आप सभी iOS डेवलपर्स के लिए — नहीं, यह एक Xcode प्रोजेक्ट नहीं है जो स्वचालित रूप से कंपाइल करता रहता है और त्रुटियों के लिए शिकायत करता है। आपके द्वारा अभी लिखे गए कोड को निष्पादित करने के लिए, हमें इसे टर्मिनल के माध्यम से करना होगा।
Python फ़ाइल चलाना
Python फ़ाइल चलाना आसान है! सुनिश्चित करें कि आप सही डायरेक्टरी में हैं, और आपको बस अपनी टर्मिनल विंडो में निम्नलिखित दर्ज करने की आवश्यकता है:
python dog_breeds.py
आउटपुट
कुछ मिनटों के प्रशिक्षण के बाद, आपका images फ़ोल्डर और dog_breeds.py फ़ाइल एक SFrame, एक मॉडल फ़ोल्डर, और एक .mlmodel फ़ाइल के साथ होगी, जो आपका Core ML मॉडल है!
आपको अपने टर्मिनल विंडो में आउटपुट भी प्रस्तुत किया जाएगा, जो ऐसा दिखेगा:
यह आपको प्रशिक्षण और प्रशिक्षण सटीकता, संसाधित छवियों की मात्रा, और अन्य उपयोगी जानकारी के बारे में जानकारी देता है, जिसका उपयोग आप अपने मॉडल का विश्लेषण करने के लिए बिना कभी इसका उपयोग किए कर सकते हैं।
निष्कर्ष
मुझे आशा है कि आपने इस ट्यूटोरियल को पढ़ने का उतना ही आनंद लिया जितना मुझे इसे बनाने में आया! यहां कुछ चरण हैं कि आगे कहां जाना है। यदि आप सीखना चाहते हैं कि अपने Core ML मॉडल का उपयोग iOS ऐप में कैसे करें, तो मेरे दूसरे ट्यूटोरियल को देखें:
Core ML में छवि पहचान के साथ शुरुआत करें
तकनीकी प्रगति के साथ, हम उस बिंदु पर हैं जहां हमारे डिवाइस अपने बिल्ट-इन कैमरों का उपयोग करके सटीक रूप से पहचान सकते हैं…कोड।
tutsplus.com
यह ट्यूटोरियल आपको दिखाएगा कि अपने परिणामी dog_classifier.mlmodel मॉडल को लेकर वास्तविक iOS ऐप में कैसे लागू किया जाए। यह आपको लाइव वीडियो फीड को पार्स करना और छवि वर्गीकरण के लिए अलग-अलग फ्रेम लेना भी सिखाएगा।
यदि इस ट्यूटोरियल के संबंध में आपके कोई प्रश्न या टिप्पणियां हैं, तो नीचे टिप्पणी अनुभाग में पूछने में संकोच न करें! मैं हमेशा फीडबैक, प्रश्न, या आपने इस ट्यूटोरियल से अपने ज्ञान का उपयोग कैसे किया, यह सुनने के लिए उत्सुक हूं।
मेरे काम का समर्थन करना आसान है!
उस "क्लैप" बटन को जितनी बार हो सके दबाएं, इस ट्यूटोरियल को सोशल मीडिया पर शेयर करें, और ट्विटर पर मुझे फॉलो करें।
Vardhan Agrawal (@vhanagwal) | Twitter
Vardhan Agrawal (@vhanagwal) के नवीनतम ट्वीट्स। पूरी तरह से सेल्फ-टॉट #iOS डेवलपर, #इंस्ट्रक्टर, और मानव…