कंप्यूटर विजन के साथ आभासी सीमाओं के माध्यम से खतरनाक क्षेत्रों से लोगों की रक्षा करना

स्रोत नोड: 807925

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

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

समाधान अवलोकन

वॉकथ्रू में निम्नलिखित चरण शामिल हैं:

  1. एमएल एल्गोरिदम में फीड करने के लिए अपना डेटासेट तैयार करें।
  2. Amazon SageMaker के साथ एक मॉडल को प्रशिक्षित करें।
  3. कस्टम प्रतिबंध क्षेत्रों के साथ परीक्षण मॉडल।
  4. समाधान को AWS DeepLens पर परिनियोजित करें।

हम वास्तविक दुनिया के अन्य उपयोग के मामलों पर भी चर्चा करते हैं जहां आप इस समाधान को लागू कर सकते हैं।

निम्नलिखित चित्र समाधान वास्तुकला को दर्शाता है।

.. पूर्वापेक्षाएँ

इस पूर्वाभ्यास को पूरा करने के लिए, आपके पास निम्नलिखित आवश्यक शर्तें होनी चाहिए:

एमएल एल्गोरिदम में फीड करने के लिए अपना डेटासेट तैयार करें

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

उदाहरण के लिए, निम्नलिखित छवियां एक निर्माण श्रमिक का पता लगाए जाने के उदाहरण हैं और यदि वे कस्टम प्रतिबंध क्षेत्र (लाल रूपरेखा) में हैं।

अपने मॉडल का प्रशिक्षण शुरू करने के लिए, सबसे पहले एक S3 बकेट बनाएं अपने प्रशिक्षण डेटा और मॉडल आउटपुट को संग्रहीत करने के लिए। AWS डीपलेंस परियोजनाओं के लिए, S3 बकेट नाम उपसर्ग से शुरू होने चाहिए deeplens-. आप इस डेटा का उपयोग सेजमेकर के साथ एक मॉडल को प्रशिक्षित करने के लिए करते हैं, जो एक पूरी तरह से प्रबंधित सेवा है जो एमएल मॉडल को जल्दी से बनाने, प्रशिक्षित करने और तैनात करने की क्षमता प्रदान करती है।

Amazon SageMaker के साथ एक मॉडल को प्रशिक्षित करें

आप मॉडल को प्रशिक्षित करने के लिए विकास परिवेश के रूप में सेजमेकर ज्यूपिटर नोटबुक का उपयोग करते हैं। ज्यूपिटर नोटबुक एक ओपन-सोर्स वेब एप्लिकेशन है जो आपको ऐसे दस्तावेज़ बनाने और साझा करने की अनुमति देता है जिनमें लाइव कोड, समीकरण, विज़ुअलाइज़ेशन और कथा पाठ शामिल हैं। इस पोस्ट के लिए, हम प्रदान करते हैं ट्रेन_ऑब्जेक्ट_डिटेक्शन_पीपल_डीपलेंस.ipynb, आपके अनुसरण के लिए एक पूर्ण नोटबुक।

एक कस्टम ऑब्जेक्ट डिटेक्शन मॉडल बनाने के लिए, आपको ग्राफिक प्रोसेसिंग यूनिट (जीपीयू)-सक्षम प्रशिक्षण जॉब इंस्टेंस का उपयोग करना होगा। जीपीयू तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए आवश्यक समानांतर गणनाओं में उत्कृष्ट हैं। हालाँकि नोटबुक स्वयं एक ml.t2.medium उदाहरण है, प्रशिक्षण कार्य विशेष रूप से ml.p2.xlarge उदाहरण का उपयोग करता है। GPU-सक्षम प्रशिक्षण कार्य उदाहरण तक पहुँचने के लिए, आपको यह करना होगा सेवा सीमा बढ़ाने के लिए अनुरोध सबमिट करें AWS सहायता केंद्र को।

अपनी सीमा वृद्धि प्राप्त करने के बाद, सेजमेकर नोटबुक इंस्टेंस बनाने के लिए निम्नलिखित चरणों को पूरा करें:

  1. SageMaker कंसोल पर, चुनें नोटबंदी के उदाहरण.
  2. चुनें नोटबुक उदाहरण बनाएँ.
  3. के लिए नोटबुक उदाहरण का नाम, अपने नोटबुक इंस्टेंस के लिए एक नाम दर्ज करें।
  4. के लिए उदाहरण प्रकार, चुनें t2.मध्यम.

यह सबसे कम खर्चीला इंस्टेंस प्रकार है जिसका नोटबुक इंस्टेंस समर्थन करता है, और यह इस ट्यूटोरियल के लिए पर्याप्त है।

  1. के लिए IAM भूमिका, चुनें एक नई भूमिका बनाएँ.

यह सुनिश्चित करें AWS पहचान और अभिगम प्रबंधन (IAM) भूमिका के पास आपके द्वारा पहले बनाए गए S3 बकेट (उपसर्ग) तक पहुंच है deeplens-).

  1. चुनें नोटबुक उदाहरण बनाएँ. आपके नोटबुक इंस्टेंस को प्रारंभ होने में कुछ मिनट लग सकते हैं।
  1. जब नोटबुक इंस्टेंस पेज पर स्थिति InService में बदल जाए, तो चुनें ज्यूपिटर खोलें अपने नव निर्मित ज्यूपिटर नोटबुक इंस्टेंस को लॉन्च करने के लिए।
  2. चुनें अपलोड अपलोड करने के लिए Train_Object_Detection_people_DeepLens.ipynb फ़ाइल जो आपने पहले डाउनलोड की थी।

  1. नोटबुक खोलें और अंत तक उसका अनुसरण करें।
  2. यदि आपसे कर्नेल सेट करने के बारे में पूछा जाए, तो चयन करें conda_mxnet_p36.

ज्यूपिटर नोटबुक में टेक्स्ट और कोड सेल का मिश्रण होता है। कोड का एक टुकड़ा चलाने के लिए, सेल चुनें और दबाएँ Shift + Enter. जब सेल चल रहा होता है, तो सेल के बगल में एक तारांकन चिन्ह दिखाई देता है। जब सेल पूरा हो जाता है, तो मूल सेल के नीचे एक आउटपुट नंबर और नया आउटपुट सेल दिखाई देता है।

  1. सार्वजनिक S3 बकेट से डेटासेट को स्थानीय सेजमेकर इंस्टेंस में डाउनलोड करें और डेटा को अनज़िप करें। यह नोटबुक में दिए गए कोड का पालन करके किया जा सकता है:
     !aws s3 cp s3://deeplens-public/samples/pedestriansafety/humandetection_data.zip . !rm -rf humandetection/ !unzip humandetection_data.zip -d humandetection 

  2. डेटासेट को एक प्रारूप में परिवर्तित करें (रिकॉर्डो) जिसे सेजमेकर एल्गोरिथम में फीड किया जा सकता है:
     !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/train_mask.lst $DATA_PATH/ !python $mxnet_path/tools/im2rec.py --pass-through --pack-label $DATA_PATH/val_mask.lst $DATA_PATH/ 

  3. रिकॉर्डआईओ फ़ाइलों को वापस अमेज़ॅन एस3 पर स्थानांतरित करें।

अब जब आपने सारी डेटा तैयारी पूरी कर ली है, तो आप ऑब्जेक्ट डिटेक्टर को प्रशिक्षित करने के लिए तैयार हैं।

ऑब्जेक्ट डिटेक्शन एल्गोरिदम कई अलग-अलग प्रकार के होते हैं। इस पोस्ट के लिए आप इसका उपयोग करें सिंगल-शॉट मल्टीबॉक्स डिटेक्शन एल्गोरिदम (एसएसडी). SSD एल्गोरिदम में गति बनाम सटीकता का अच्छा संतुलन है, जो इसे AWS DeepLens जैसे किनारे वाले उपकरणों पर चलाने के लिए आदर्श बनाता है।

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

  1. अपने हाइपरपैरामीटर और डेटा चैनल सेट करें। हाइपरपैरामीटर की निम्नलिखित उदाहरण परिभाषा का उपयोग करने पर विचार करें:
     od_model = sagemaker.estimator.Estimator(training_image, role, train_instance_count=1, train_instance_type='ml.p2.xlarge', train_volume_size = 50, train_max_run = 360000, input_mode= 'File', output_path=s3_output_location, sagemaker_session=sess) od_model.set_hyperparameters(base_network='resnet-50', use_pretrained_model=1, num_classes=2, mini_batch_size=32, epochs=100, learning_rate=0.003, lr_scheduler_step='3,6', lr_scheduler_factor=0.1, optimizer='sgd', momentum=0.9, weight_decay=0.0005, overlap_threshold=0.5, nms_threshold=0.45, image_shape=300, num_training_samples=n_train_samples) 

नोटबुक में कुछ डिफ़ॉल्ट हाइपरपैरामीटर हैं जिन्हें पूर्व-चयनित किया गया है। पैदल यात्री का पता लगाने के लिए, आप मॉडल को 100 युगों तक प्रशिक्षित करते हैं। एक ml.p2.xlarge उदाहरण का उपयोग करके इस प्रशिक्षण चरण में लगभग 2 घंटे लगने चाहिए। आप हाइपरपैरामीटर के विभिन्न संयोजनों के साथ प्रयोग कर सकते हैं, या प्रदर्शन में सुधार के लिए अधिक युगों तक प्रशिक्षण ले सकते हैं। नवीनतम मूल्य निर्धारण के बारे में जानकारी के लिए देखें अमेज़न SageMaker मूल्य निर्धारण.

  1. आप कोड की एक पंक्ति के साथ प्रशिक्षण कार्य शुरू कर सकते हैं और सेजमेकर कंसोल पर समय के साथ सटीकता की निगरानी कर सकते हैं:
    od_model.fit(inputs=data_channels, logs=True) 

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

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

जब कार्य समाप्त हो जाता है, तो आप प्रशिक्षित मॉडल फ़ाइलें S3 बकेट और पहले निर्दिष्ट फ़ोल्डर में पा सकते हैं s3_output_location:

s3_output_location = 's3://{}/{}/output'.format(BUCKET, PREFIX)

इस पोस्ट के लिए, हम 10वें युग और 100वें युग के पूरा होने पर सत्यापन सेट पर परिणाम दिखाते हैं। 10वें युग के अंत में, हम लगभग 0.027 का सत्यापन एमएपी देखते हैं, जबकि 100वां युग लगभग 0.42 था।

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

कस्टम प्रतिबंध क्षेत्रों के साथ परीक्षण मॉडल

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

आपको उसी इंस्टेंस प्रकार पर होस्ट करने की ज़रूरत नहीं है जिसे आप प्रशिक्षित करते थे। प्रशिक्षण एक लंबा और गणना-भारी काम है जिसके लिए गणना और मेमोरी आवश्यकताओं के एक अलग सेट की आवश्यकता होती है जो होस्टिंग आमतौर पर नहीं करती है। आप मॉडल को होस्ट करने के लिए किसी भी प्रकार का इंस्टेंस चुन सकते हैं। इस मामले में, हमने प्रशिक्षण के लिए ml.p3.2xlarge इंस्टेंस को चुना, लेकिन हम मॉडल को कम महंगे CPU इंस्टेंस, ml.m4.xlarge पर होस्ट करना चुनते हैं। निम्नलिखित कोड स्निपेट हमारी एंडपॉइंट परिनियोजन दिखाता है।

object_detector = od_model.deploy(initial_instance_count = 1, instance_type = 'ml.m4.xlarge') 

कस्टम प्रतिबंध क्षेत्र (रुचि का क्षेत्र) में पता लगाना

आउटपुट के प्रारूप को [क्लास_इंडेक्स, कॉन्फिडेंस_स्कोर, xmin, ymin, xmax, ymax] के रूप में दर्शाया जा सकता है। कम आत्मविश्वास वाली भविष्यवाणियों में अक्सर गलत सकारात्मक या गलत नकारात्मक होने की संभावना अधिक होती है, इसलिए आपको संभवतः कम आत्मविश्वास वाली भविष्यवाणियों को त्याग देना चाहिए। आप यह पता लगाने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं कि व्यक्ति का बाउंडिंग बॉक्स प्रतिबंधित क्षेत्र के साथ ओवरलैप होता है या नहीं।

def inRestrictedSection(ImShape = None, R1 = None, restricted_region = None, kclass = None, score = None, threshold = None): statement = 'Person Not Detected in Restricted Zone' if (kclass == 1) and (score > threshold): Im1 = np.zeros((ImShape[0],ImShape[1],3), np.int32) cv2.fillPoly(Im1, [R1], 255) Im2 = np.zeros((ImShape[0],ImShape[1],3), np.int32) if restricted_region is None: restricted_region = np.array([[0,ImShape[0]],[ImShape[1],ImShape[0]],[ImShape[1],0], [0,0]], np.int32) cv2.fillPoly(Im2, [restricted_region], 255) Im = Im1 * Im2 if np.sum(np.greater(Im, 0))>0: statement = 'Person Detected in Restricted Zone' else: statement = statement return statement 

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

restricted_region = None #restricted_region = np.array([[0,200],[100,200],[100,0], [10,10]], np.int32) 

निम्नलिखित नमूना कोड उन पैदल यात्रियों को दिखाता है जिन्हें प्रतिबंधित क्षेत्र के भीतर पहचाना गया है:

file_name = 'humandetection/test_images/t1_image.jpg' img = cv2.imread(file_name) img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB) thresh = 0.2 height = img.shape[0] width = img.shape[1] colors = dict() with open(file_name, 'rb') as image: f = image.read() b = bytearray(f) ne = open('n.txt','wb') ne.write(b) results = object_detector.predict(b, initial_args={'ContentType': 'image/jpeg'}) detections = json.loads(results) object_categories = ['no-person', 'person'] for det in detections['prediction']: (klass, score, x0, y0, x1, y1) = det if score < thresh: continue cls_id = int(klass) prob = score if cls_id not in colors: colors[cls_id] = (random.random(), random.random(), random.random()) xmin = int(x0 * width) ymin = int(y0 * height) xmax = int(x1 * width) ymax = int(y1 * height) R1 = np.array([[xmin,ymin],[xmax,ymin],[xmax,ymax], [xmin,ymax]], np.int32) cv2.polylines(img,[R1],True, (255,255,0), thickness = 5) cv2.polylines(img,[restricted_region],True, (255,0,0), thickness = 5) plt.imshow(img) print(inRestrictedSection(img.shape,R1 = R1, restricted_region= restricted_region, kclass = cls_id, score = prob, threshold=0.2)) 

निम्नलिखित छवियां हमारे परिणाम दिखाती हैं।

समाधान को AWS DeepLens पर परिनियोजित करें

परिनियोजन के लिए मॉडल को AWS DeepLens में कनवर्ट करें

सेजमेकर-प्रशिक्षित एसएसडी मॉडल को एडब्ल्यूएस डीपलेंस में तैनात करते समय, आपको पहले चलना होगा Deploy.py मॉडल आर्टिफैक्ट को परिनियोजन योग्य मॉडल में बदलने के लिए:

!rm -rf incubator-mxnet !git clone -b v1.7.x https://github.com/apache/incubator-mxnet MODEL_PATH = od_model.model_data TARGET_PATH ='s3://'+BUCKET+'/'+PREFIX+'/patched/' !rm -rf tmp && mkdir tmp rm -rf tmp && mkdir tmp !aws s3 cp $MODEL_PATH tmp !tar -xzvf tmp/model.tar.gz -C tmp !mv tmp/model_algo_1-0000.params tmp/ssd_resnet50_300-0000.params !mv tmp/model_algo_1-symbol.json tmp/ssd_resnet50_300-symbol.json !python incubator-mxnet/example/ssd/deploy.py --network resnet50 --data-shape 300 --num-class 2 --prefix tmp/ssd_ !tar -cvzf ./patched_model.tar.gz -C tmp ./deploy_ssd_resnet50_300-0000.params ./deploy_ssd_resnet50_300-symbol.json ./hyperparams.json !aws s3 cp patched_model.tar.gz $TARGET_PATH

अपने मॉडल को AWS DeepLens में आयात करें

मॉडल को AWS DeepLens डिवाइस पर चलाने के लिए, आपको एक AWS DeepLens प्रोजेक्ट बनाना होगा। अपने मॉडल को AWS DeepLens में आयात करके प्रारंभ करें।

  1. AWS DeepLens कंसोल पर, के अंतर्गत उपयुक्त संसाधन चुनें , चुनें मॉडल.
  2. चुनें आयात मॉडल.

  1. के लिए स्रोत आयात करें, चुनते हैं बाह्य रूप से प्रशिक्षित मॉडल.
  2. का Amazon S3 स्थान दर्ज करें पैच किया हुआ मॉडल जिसे आपने उपरोक्त चरण में Deploy.py चलाने से बचाया है।
  3. के लिए मॉडल ढाँचा, चुनें एमएक्सनेट.
  4. चुनें आयात मॉडल.

अनुमान फ़ंक्शन बनाएं

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

सबसे पहले, हमें AWS DeepLens पर तैनात करने के लिए एक लैम्ब्डा फ़ंक्शन बनाना होगा।

  1. डाउनलोड अनुमान लैम्ब्डा फ़ंक्शन.
  2. लैम्ब्डा कंसोल पर, चुनें कार्य.
  3. चुनें फ़ंक्शन बनाएं.
  4. चुनते हैं खरोंच से लेखक.
  5. के लिए कार्य का नाम, नाम डालें।
  6. के लिए क्रम, चुनें अजगर 3.7.
  7. के लिए निष्पादन भूमिका चुनें या बनाएं, चुनें किसी मौजूदा भूमिका का उपयोग करें.
  8. चुनें सेवा-भूमिका/AWSDeepLensLambdaRole.
  9. चुनें फ़ंक्शन बनाएं.

  1. फ़ंक्शन के विवरण पृष्ठ पर, पर क्रियाएँ मेनू, चुनें .Zip फ़ाइल अपलोड करें.

  1. अपलोड करें अनुमान लैम्ब्डा फ़ाइल जो आपने पहले डाउनलोड की थी।
  2. चुनें सहेजें आपके द्वारा दर्ज किए गए कोड को सहेजने के लिए।
  3. पर क्रियाएँ मेनू, चुनें नया संस्करण प्रकाशित करें.

फ़ंक्शन को प्रकाशित करने से यह AWS DeepLens कंसोल पर उपलब्ध हो जाता है ताकि आप इसे अपने कस्टम प्रोजेक्ट में जोड़ सकें।

  1. संस्करण संख्या दर्ज करें और चुनें प्रकाशित करना.

अनुमान फ़ंक्शन को समझना

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

  • लेबल.txt - इसमें तंत्रिका नेटवर्क (पूर्णांक) से मानव पठनीय लेबल (स्ट्रिंग) तक आउटपुट की मैपिंग शामिल है
  • लैम्ब्डा_फंक्शन.py - प्रत्येक कैमरा फ्रेम पर पूर्वानुमान उत्पन्न करने और परिणाम वापस भेजने के लिए बुलाए जा रहे फ़ंक्शन के लिए कोड शामिल है

Lambda_function.py में, आप पहले मॉडल को लोड और ऑप्टिमाइज़ करते हैं। GPU के साथ क्लाउड वर्चुअल मशीनों की तुलना में, AWS DeepLens में कम कंप्यूटिंग शक्ति होती है। AWS DeepLens अपने हार्डवेयर पर चलने के लिए SageMaker में प्रशिक्षित मॉडल को अनुकूलित करने के लिए Intel OpenVino मॉडल ऑप्टिमाइज़र का उपयोग करता है। निम्नलिखित कोड आपके मॉडल को स्थानीय रूप से चलाने के लिए अनुकूलित करता है:

client.publish(topic=iot_topic, payload='Optimizing model...') ret, model_path = mo.optimize('deploy_ssd_resnet50_300', INPUT_W, INPUT_H) # Load the model onto the GPU. client.publish(topic=iot_topic, payload='Loading model...') model = awscam.Model(model_path, {'GPU': 1}) 

फिर आप कैमरे से छवियों पर मॉडल फ़्रेम-प्रति-फ़्रेम चलाएँ। निम्नलिखित कोड देखें:

while True: # Get a frame from the video stream ret, frame = awscam.getLastFrame() if not ret: raise Exception('Failed to get frame from the stream') # Resize frame to the same size as the training set. frame_resize = cv2.resize(frame, (INPUT_H, INPUT_W)) # Run the images through the inference engine and parse the results using # the parser API, note it is possible to get the output of doInference # and do the parsing manually, but since it is a ssd model, # a simple API is provided. parsed_inference_results = model.parseResult(model_type, model.doInference(frame_resize)) 

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

# Send results to the cloud client.publish(topic=iot_topic, payload=json.dumps(cloud_output)) 

एक कस्टम AWS डीपलेंस प्रोजेक्ट बनाएं

एक नया AWS DeepLens प्रोजेक्ट बनाने के लिए, निम्नलिखित चरणों को पूरा करें:

  1. AWS डीपलेंस कंसोल पर, पर परियोजनाओं पृष्ठ, चुनें प्रोजेक्ट बनाएं.
  2. के लिए प्रोजेक्ट का प्रकार, चुनते हैं एक नया रिक्त प्रोजेक्ट बनाएं.
  3. चुनें अगला.

  1. अपने प्रोजेक्ट का नाम बताइए yourname-pedestrian-detector-.
  2. चुनें मॉडल जोड़ें.
  3. आपके द्वारा अभी बनाया गया मॉडल चुनें.
  4. चुनें फ़ंक्शन जोड़ें.
  5. आपके द्वारा पहले बनाए गए लैम्ब्डा फ़ंक्शन को नाम से खोजें।
  6. चुनें प्रोजेक्ट बनाएं.
  7. पर परियोजनाओं पेज, उस प्रोजेक्ट का चयन करें जिसे आप तैनात करना चाहते हैं।
  8. चुना डिवाइस पर तैनात करें.
  9. के लिए लक्ष्य डिवाइस, अपना उपकरण चुनें।
  10. चुनें समीक्षा.
  11. अपनी सेटिंग्स की समीक्षा करें और चुनें तैनाती.

आपका AWS DeepLens जिस नेटवर्क से जुड़ा है, उसकी गति के आधार पर परिनियोजन को पूरा होने में 10 मिनट तक का समय लग सकता है। जब परिनियोजन पूरा हो जाएगा, तो आपको पृष्ठ पर एक हरे रंग का बैनर देखना चाहिए जिसमें संदेश होगा, "बधाई हो, आपका मॉडल अब स्थानीय रूप से AWS DeepLens पर चल रहा है!"

टेक्स्ट आउटपुट देखने के लिए, डिवाइस विवरण पृष्ठ पर नीचे स्क्रॉल करें प्रोजेक्ट आउटपुट अनुभाग। विषय की प्रतिलिपि बनाने के लिए अनुभाग में दिए गए निर्देशों का पालन करें और पर जाएँ AWS IoT कोर विषय की सदस्यता लेने के लिए सांत्वना दें। आपको निम्नलिखित स्क्रीनशॉट के अनुसार परिणाम देखना चाहिए।

वीडियो स्ट्रीम या टेक्स्ट आउटपुट देखने के चरण-दर-चरण निर्देशों के लिए देखें AWS DeepLens से परिणाम देखना.

वास्तविक-विश्व उपयोग के मामले

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

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

निष्कर्ष

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

इस ट्यूटोरियल और AWS DeepLens के साथ अन्य ट्यूटोरियल, नमूने और प्रोजेक्ट विचारों के अधिक विस्तृत विवरण के लिए, देखें एडब्ल्यूएस डीपलेंस रेसिपी.


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

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

फु नगुयेन AWS पैनोरमा के लिए उत्पाद प्रबंधक है। वह ऐसे उत्पाद बनाता है जो किसी भी कौशल स्तर के डेवलपर्स को मशीन लर्निंग का आसान, व्यावहारिक परिचय देता है।

स्रोत: https://aws.amazon.com/blogs/machine-learning/प्रोटेक्टिंग-पीपल-थ्रू-वर्चुअल-बाउंडरीज-कंप्यूटर-विजन/

समय टिकट:

से अधिक एडब्ल्यूएस मशीन लर्निंग ब्लॉग

टॉकडेस्क और एडब्ल्यूएस: संपर्क केंद्रों के भविष्य और बेहतर ग्राहक अनुभव के लिए एआई और भाषण-टू-टेक्स्ट का क्या मतलब है

स्रोत नोड: 748573
समय टिकट: फ़रवरी 23, 2021