Amazon SageMaker में TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल के लिए स्थानांतरण सीखना

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

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

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

नए TensorFlow ऑब्जेक्ट डिटेक्शन एल्गोरिदम का उपयोग कैसे करें

यह खंड वर्णन करता है कि TensorFlow ऑब्जेक्ट डिटेक्शन एल्गोरिदम का उपयोग कैसे करें सेजमेकर पायथन एसडीके. Studio UI से इसका उपयोग कैसे करें, इसकी जानकारी के लिए देखें सेजमेकर जम्पस्टार्ट.

एल्गोरिथ्म में सूचीबद्ध पूर्व-प्रशिक्षित मॉडल के लिए स्थानांतरण सीखने का समर्थन करता है टेंसरफ्लो मॉडल. प्रत्येक मॉडल को एक अद्वितीय . द्वारा पहचाना जाता है model_id. निम्न कोड दिखाता है कि किस प्रकार से पहचाने गए ResNet50 V1 FPN मॉडल को फाइन-ट्यून किया जाए model_id tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8 एक कस्टम प्रशिक्षण डेटासेट पर। प्रत्येक के लिए model_id, के माध्यम से एक सेजमेकर प्रशिक्षण कार्य शुरू करने के लिए क़ीमत लगानेवाला सेजमेकर पायथन एसडीके के वर्ग में, आपको सेजमेकर में प्रदान किए गए उपयोगिता कार्यों के माध्यम से डॉकर छवि यूआरआई, प्रशिक्षण स्क्रिप्ट यूआरआई, और पूर्व-प्रशिक्षित मॉडल यूआरआई लाने की आवश्यकता है। प्रशिक्षण स्क्रिप्ट URI में डेटा प्रोसेसिंग, पूर्व-प्रशिक्षित मॉडल को लोड करने, मॉडल प्रशिक्षण, और अनुमान के लिए प्रशिक्षित मॉडल को सहेजने के लिए सभी आवश्यक कोड होते हैं। पूर्व-प्रशिक्षित मॉडल URI में पूर्व-प्रशिक्षित मॉडल आर्किटेक्चर परिभाषा और मॉडल पैरामीटर शामिल हैं। ध्यान दें कि सभी TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल के लिए डॉकर छवि URI और प्रशिक्षण स्क्रिप्ट URI समान हैं। पूर्व-प्रशिक्षित मॉडल यूआरआई विशेष मॉडल के लिए विशिष्ट है। पूर्व-प्रशिक्षित मॉडल टैरबॉल को TensorFlow से पूर्व-डाउनलोड किया गया है और उपयुक्त मॉडल हस्ताक्षर के साथ सहेजा गया है अमेज़न सरल भंडारण सेवा (अमेज़ॅन S3) बकेट, जैसे कि प्रशिक्षण कार्य नेटवर्क अलगाव में चलता है। निम्नलिखित कोड देखें:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training")# Retrieve the pre-trained model tarball for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-od-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

इन मॉडल-विशिष्ट प्रशिक्षण कलाकृतियों के साथ, आप एक वस्तु का निर्माण कर सकते हैं क़ीमत लगानेवाला वर्ग:

# Create SageMaker Estimator instance
tf_od_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,)

इसके बाद, अपने कस्टम डेटासेट पर सीखने को स्थानांतरित करने के लिए, आपको प्रशिक्षण हाइपरपैरामीटर के डिफ़ॉल्ट मानों को बदलने की आवश्यकता हो सकती है, जो इसमें सूचीबद्ध हैं हाइपरपैरामीटर. आप कॉल करके इन हाइपरपैरामीटर के डिफ़ॉल्ट मानों के साथ पायथन डिक्शनरी प्राप्त कर सकते हैं hyperparameters.retrieve_default, उन्हें आवश्यकतानुसार अपडेट करें, और फिर उन्हें एस्टिमेटर क्लास में पास करें। ध्यान दें कि विभिन्न मॉडलों के लिए कुछ हाइपरपैरामीटर के डिफ़ॉल्ट मान भिन्न होते हैं। बड़े मॉडलों के लिए, डिफ़ॉल्ट बैच आकार छोटा होता है और train_only_top_layer हाइपरपैरामीटर पर सेट है True. हाइपरपैरामीटर train_only_top_layer परिभाषित करता है कि फ़ाइन-ट्यूनिंग प्रक्रिया के दौरान कौन से मॉडल पैरामीटर बदलते हैं। यदि train_only_top_layer is True, वर्गीकरण परतों के पैरामीटर बदल जाते हैं और शेष पैरामीटर फ़ाइन-ट्यूनिंग प्रक्रिया के दौरान स्थिर रहते हैं। दूसरी ओर, यदि train_only_top_layer is False, मॉडल के सभी पैरामीटर ठीक-ठाक हैं। निम्नलिखित कोड देखें:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

हम प्रदान करते हैं PennFudanPed डेटासेट मॉडलों को ठीक करने के लिए एक डिफ़ॉल्ट डेटासेट के रूप में। डेटासेट में पैदल चलने वालों की छवियां शामिल हैं। निम्न कोड S3 बकेट में होस्ट किया गया डिफ़ॉल्ट प्रशिक्षण डेटासेट प्रदान करता है:

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/PennFudanPed_COCO_format/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

अंत में, मॉडल को ठीक करने के लिए सेजमेकर प्रशिक्षण कार्य शुरू करने के लिए, कॉल करें .fit प्रशिक्षण डेटासेट के S3 स्थान को पास करते समय, अनुमानक वर्ग की वस्तु पर:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

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

TensorFlow ऑब्जेक्ट डिटेक्शन एल्गोरिदम के लिए इनपुट/आउटपुट इंटरफ़ेस

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

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

इनपुट निर्देशिका निम्न उदाहरण की तरह दिखनी चाहिए:

input_directory
      | -- images
            |--abc.png
            |--def.png
      |--annotations.json

RSI annotations.json फ़ाइल के लिए जानकारी होनी चाहिए bounding_boxes और उनके वर्ग लेबल। इसमें चाबियों के साथ एक शब्दकोश होना चाहिए "images" और "annotations". के लिए मूल्य "images" कुंजी प्रविष्टियों की एक सूची होनी चाहिए, प्रपत्र की प्रत्येक छवि के लिए एक {"file_name": image_name, "height": height, "width": width, "id": image_id}। का मूल्य "annotations" कुंजी प्रविष्टियों की एक सूची होनी चाहिए, प्रपत्र के प्रत्येक बाउंडिंग बॉक्स के लिए एक {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}.

TensorFlow ऑब्जेक्ट डिटेक्शन एल्गोरिथम के साथ अनुमान

उत्पन्न मॉडल को अनुमान के लिए होस्ट किया जा सकता है और एन्कोडेड .jpg, .jpeg, और .png छवि प्रारूपों का समर्थन किया जा सकता है। application/x-image सामग्री प्रकार। इनपुट छवि स्वचालित रूप से आकार बदल जाती है। आउटपुट में प्रत्येक भविष्यवाणी के लिए बॉक्स, अनुमानित कक्षाएं और स्कोर शामिल हैं। TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल प्रति अनुरोध एक छवि को संसाधित करता है और JSON में केवल एक पंक्ति को आउटपुट करता है। JSON में प्रतिक्रिया का एक उदाहरण निम्नलिखित है:

accept: application/json;verbose

{"normalized_boxes":[[xmin1, xmax1, ymin1, ymax1],....], "classes":[classidx1, class_idx2,...], "scores":[score_1, score_2,...], "labels": [label1, label2, ...], "tensorflow_model_output":}

If accept इसके लिए सेट है application/json, तब मॉडल केवल अनुमानित बॉक्स, क्लास और स्कोर को आउटपुट करता है। प्रशिक्षण और अनुमान के बारे में अधिक जानकारी के लिए, नमूना नोटबुक देखें सेजमेकर टेंसरफ्लो का परिचय - ऑब्जेक्ट डिटेक्शन.

जम्पस्टार्ट यूआई के माध्यम से सेजमेकर बिल्ट-इन एल्गोरिदम का उपयोग करें

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

निम्नलिखित दो वीडियो हैं जो दिखाते हैं कि आप उसी फ़ाइन-ट्यूनिंग और परिनियोजन प्रक्रिया को कैसे दोहरा सकते हैं, जिसे हमने जम्पस्टार्ट UI के माध्यम से कुछ ही क्लिक में पूरा किया था।

पूर्व-प्रशिक्षित मॉडल को फाइन-ट्यून करें

यहां उसी पूर्व-प्रशिक्षित ऑब्जेक्ट डिटेक्शन मॉडल को फाइन-ट्यून करने की प्रक्रिया है।

परिष्कृत मॉडल परिनियोजित करें

मॉडल प्रशिक्षण समाप्त होने के बाद, आप एक क्लिक के साथ सीधे मॉडल को एक स्थायी, वास्तविक समय समापन बिंदु पर तैनात कर सकते हैं।

निष्कर्ष

इस पोस्ट में, हमने SageMaker TensorFlow ऑब्जेक्ट डिटेक्शन बिल्ट-इन एल्गोरिथम के लॉन्च की घोषणा की। हमने इस एल्गोरिथम का उपयोग करके TensorFlow से पूर्व-प्रशिक्षित मॉडल का उपयोग करके एक कस्टम डेटासेट पर स्थानांतरण सीखने के तरीके के बारे में उदाहरण कोड प्रदान किया है।

अधिक जानकारी के लिए, चेक आउट करें दस्तावेज़ीकरण और उदाहरण नोटबुक.


लेखक के बारे में

Amazon SageMaker प्लेटोब्लॉकचेन डेटा इंटेलिजेंस में TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल के लिए लर्निंग ट्रांसफर करें। लंबवत खोज. ऐ.डॉ विवेक मदनी के साथ एक अनुप्रयुक्त वैज्ञानिक है अमेज़न सेजमेकर जम्पस्टार्ट टीम. उन्होंने अर्बाना-शैंपेन में इलिनोइस विश्वविद्यालय से पीएचडी प्राप्त की और जॉर्जिया टेक में पोस्ट डॉक्टरेट शोधकर्ता थे। वह मशीन लर्निंग और एल्गोरिथम डिज़ाइन में एक सक्रिय शोधकर्ता हैं और उन्होंने EMNLP, ICLR, COLT, FOCS और SODA सम्मेलनों में पेपर प्रकाशित किए हैं।

Amazon SageMaker प्लेटोब्लॉकचेन डेटा इंटेलिजेंस में TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल के लिए लर्निंग ट्रांसफर करें। लंबवत खोज. ऐ.जोआओ मौरा Amazon वेब सर्विसेज में AI/ML स्पेशलिस्ट सॉल्यूशंस आर्किटेक्ट हैं। वह ज्यादातर एनएलपी उपयोग के मामलों पर केंद्रित है और ग्राहकों को गहन शिक्षण मॉडल प्रशिक्षण और तैनाती को अनुकूलित करने में मदद करता है। वह लो-कोड एमएल सॉल्यूशंस और एमएल-स्पेशलाइज्ड हार्डवेयर के सक्रिय प्रस्तावक भी हैं।

Amazon SageMaker प्लेटोब्लॉकचेन डेटा इंटेलिजेंस में TensorFlow ऑब्जेक्ट डिटेक्शन मॉडल के लिए लर्निंग ट्रांसफर करें। लंबवत खोज. ऐ.डॉ आशीष खेतानी के साथ एक वरिष्ठ अनुप्रयुक्त वैज्ञानिक हैं अमेज़ॅन सेजमेकर बिल्ट-इन एल्गोरिदम और मशीन लर्निंग एल्गोरिदम विकसित करने में मदद करता है। उन्होंने इलिनोइस विश्वविद्यालय अर्बाना चैंपियन से पीएचडी की उपाधि प्राप्त की। वह मशीन लर्निंग और सांख्यिकीय अनुमान में एक सक्रिय शोधकर्ता हैं और उन्होंने न्यूरआईपीएस, आईसीएमएल, आईसीएलआर, जेएमएलआर, एसीएल और ईएमएनएलपी सम्मेलनों में कई पत्र प्रकाशित किए हैं।

समय टिकट:

से अधिक AWS मशीन लर्निंग