नि:शुल्क क्रोम एक्सटेन्सन — अन-डिभाइस कटआउटहरू

वेब कार्यकर्ता छवि प्रशोधन आधारभूतहरू

वेब वर्कर एउटा छुट्टै JavaScript कार्यान्वयन सन्दर्भ हो जसले सम्पादकको मुख्य थ्रेडलाई सबै काम नगरीकन महँगो गणना गर्न सक्छ। ब्राउजर छवि प्रशोधनका लागि, यसको मतलब मोडेल सेटअप र अनुमान बटनहरू, प्रगति सन्देशहरू, ब्रश इनपुट, र स्क्रिन अपडेटहरूको लागि जिम्मेवार थ्रेडबाट भाग्न सक्छ।

परिणाम “नि:शुल्क पृष्ठभूमि प्रशोधन” होइन। एउटै यन्त्रले अझै पनि गणना गर्दछ र मेमोरी प्रयोग गर्दछ। आर्किटेक्चरल फाइदा अलग छ: भारी मोडेल अपरेशनले प्रत्येक इन्टरफेस प्रतिक्रिया ब्लक गर्ने सम्भावना कम हुन्छ जब यो चल्छ।

मुख्य थ्रेडमा प्रयोगकर्ता-इन्टरफेस कार्य छ

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

अनुमान सुरु हुनु अघि छवि सम्पादकसँग धेरै मुख्य-थ्रेड जिम्मेवारीहरू छन्:

विभाजन मोडेलको संख्यात्मक कार्यलाई एउटै थ्रेडमा राख्नाले ती कार्यहरूलाई सीधै प्रतिस्पर्धा गर्नेछ। एक कार्यकर्ताले स्पष्ट सीमा बनाउँछ।

सन्देश-आधारित सीमा

सम्पादक र कार्यकर्ताले साधारण चरहरू साझा गर्दैनन्। तिनीहरू सन्देशहरू पठाएर सञ्चार गर्छन्। एक सरल प्रवाह यस्तो देखिन्छ:

  1. सम्पादकले कार्यकर्ता सिर्जना वा पुन: प्रयोग गर्दछ।
  2. यसले कार्यकर्तालाई अनुमान रनटाइम र मोडेल प्रारम्भ गर्न सोध्छ।
  3. यसले छवि डेटा तयार गर्दछ र एक अनुमान अनुरोध पठाउँछ।
  4. कार्यकर्ताले डेटालाई मोडेलको अपेक्षित इनपुटमा रूपान्तरण गर्दछ।
  5. कार्यकर्ताले मोडेल चलाउँछ र मास्क मानहरू उत्पादन गर्दछ।
  6. यसले मास्क वा परिणाम डेटा फिर्ता पठाउँछ।
  7. सम्पादकले पूर्वावलोकन कम्पोजिट गर्दछ र परिष्कृत वा निर्यात सक्षम गर्दछ।

सन्देशहरूमा सही अनुरोधमा प्रतिक्रिया मिलाउन पर्याप्त सन्दर्भ समावेश हुनुपर्छ। यदि प्रयोगकर्ताले अघिल्लो काम समाप्त हुनु अघि अर्को छवि छान्छ भने यो महत्त्वपूर्ण छ। इन्टरफेसले नयाँ स्रोतमा पुरानो नतिजा देखाउनबाट जोगिनै पर्छ।

छवि डेटा प्रतिलिपि र स्थानान्तरण गर्दै

सानो पाठ सन्देश पठाउन सस्तो छ। यदि ब्राउजरले सम्पूर्ण बफर प्रतिलिपि गर्नुपर्दछ भने लाखौं पिक्सेल मानहरू पठाउन महँगो हुन सक्छ। वेब API ले यसको सट्टा निश्चित बाइनरी बफरहरूको स्वामित्व हस्तान्तरण गर्न सक्छ। हस्तान्तरण गरिएको बफर प्रेषक पक्षमा प्रयोगयोग्य नक्कल नराखीकन प्रापकलाई उपलब्ध हुन्छ।

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

प्रत्येक कार्यान्वयनले ठ्याक्कै एउटै स्थानहरूमा स्थानान्तरण प्रयोग गर्दैन। सामान्य पाठ यो हो कि थ्रेड पृथक्करणले डाटा आन्दोलन गायब बनाउँदैन। छवि आयामहरू, बफर साइज, र रूपान्तरणहरूको संख्याले अझै पनि विलम्बता र मेमोरीलाई असर गर्छ।

के Easy Background Remover ले कार्यकर्तामा राख्छ

Easy Background Remover ले यन्त्र विभाजनको लागि ब्राउजर इन्फरेन्स रनटाइमको साथ वेब कार्यकर्ता प्रयोग गर्दछ। भारी स्वचालित कटआउट चरणले मास्क उत्पादन गर्दछ। सम्पादकले त्यसपछि कम्पोजिट नतिजा देखाउँछ र CPU-क्यानभास ब्रश रिफाइनमेन्टलाई समर्थन गर्दछ।

यो विभाजनले असफलताहरूलाई थप उपयोगी सीमा दिन्छ। यदि कार्यकर्ताले प्रारम्भ गर्न सक्दैन वा अनुमानको क्रममा क्र्यास हुन्छ भने, इन्टरफेसले स्थायी रूपमा जमेको ट्याबमा मात्र संकेतको रूपमा भर पर्नुको सट्टा कार्यकर्ता-सम्बन्धित त्रुटि रिपोर्ट गर्न सक्छ।

यसले स्थानीय-प्रशोधन दावीलाई पनि बुझ्न योग्य राख्छ। एक्स्टेन्सन पृष्ठबाट आफ्नो कार्यकर्तालाई पिक्सेल पठाउनु भनेको ब्राउजर वातावरण भित्रको सञ्चार हो, रिमोट कटआउट API मा अपलोड गर्नु होइन। पहिलो सत्रले पुन: प्रयोज्य मोडेल सम्पत्ति छुट्टै डाउनलोड गर्न सक्छ; हेर्नुहोस् किन पहिलो रन एक मोडेल डाउनलोड।

एक कार्यकर्ताले गणना तुरुन्तै बनाउँदैन

कार्यकर्ताहरूले प्रतिक्रियाशीलता सुधार गर्छन्, कच्चा उपकरण क्षमता होइन। मोडेलले अझै पनि CPU, GPU, वा ब्राउजरले प्रदान गर्न सक्ने अन्य रनटाइम स्रोतहरू खपत गर्दछ। ठूलो इनपुटले अझै लामो समय लिन सक्छ र सानो भन्दा बढी मेमोरी चाहिन्छ।

धेरै सीमाहरू बाँकी छन्:

पाँच तस्बिरहरूको लागि पाँच अनुमान कार्यकर्ताहरू सुरू गर्नु स्वचालित रूपमा पाँच गुणा छिटो हुँदैन। कामदारहरू एउटै मेसिन साझा गर्छन्। समानान्तर कार्यहरूले मेमोरी ब्यान्डविथ र कार्यान्वयन स्रोतहरूको लागि प्रतिस्पर्धा गर्न सक्छ, जबकि प्रत्येक मोडेल उदाहरणले आफ्नै मेमोरी लागत बोक्न सक्छ।

प्रगति रिपोर्टिङ सहकारी छ

एक कार्यकर्ताले स्थिति सन्देशहरू पठाउन सक्छ, तर यसले स्वचालित रूपमा कुन प्रगति प्रतिशत सही महसुस गर्नेछ थाहा छैन। मोडेल डाउनलोड, रनटाइम प्रारम्भिकरण, इनपुट तयारी, अनुमान, मास्क रूपान्तरण, र पूर्वावलोकन रेन्डरिङ फरक समयका साथ अलग-अलग चरणहरू हुन्।

केही चरणहरूमा मापन योग्य बाइट गणनाहरू छन्। एकल मोडेल कार्यान्वयन “सुरु” र “समाप्त” मात्र पर्दाफास गर्न सक्छ। एक समान रूपमा प्रगति गर्ने एक सहज प्रतिशत एक सटीक मापनको सट्टा कस्मेटिक हुन सक्छ।

उपयोगी प्रगति UI ले चरणको नाम दिन्छ जब सम्भव हुन्छ: मोडेल, प्रशोधन छवि, वा निर्माण परिणाम। यसले कुनै स्पष्टीकरण बिना स्पिनर छोड्नुको सट्टा असफलता र रद्दलाई पनि ह्यान्डल गर्दछ।

रद्द गर्नु भनेको स्पिनर लुकाउनु भन्दा बढी हो

यदि प्रयोगकर्ताले छवि बन्द गर्छ वा सुरु गर्छ भने, इन्टरफेसले पुरानो अनुरोधबाट अन्तिम प्रतिक्रियालाई बेवास्ता गर्न सक्छ। अन्तर्निहित गणना तुरुन्तै रोक्नको लागि रनटाइम वा कार्यकर्तालाई समाप्त गर्ने र पुन: सिर्जना गर्नबाट थप समर्थन चाहिन्छ।

कार्यकर्तालाई खारेज गर्नु निर्णायक हुन्छ, तर यसले यसको प्रारम्भिक अवस्थालाई खारेज गर्छ। अर्को काम लोड गर्न र मोडेल फेरि सुरु गर्न आवश्यक हुन सक्छ। छोटो अपरेशनको लागि, परिणाम बासी चिन्ह लगाउँदा सबै चीजहरू च्यात्नु भन्दा सस्तो हुन सक्छ।

सही छनौट मेमोरी दबाब, सञ्चालन अवधि, र रनटाइम क्षमताहरूमा निर्भर गर्दछ। प्रयोगकर्ताको दृष्टिकोणबाट, महत्त्वपूर्ण नियम यो हो कि बासी कामले हालको सम्पादनलाई अधिलेखन गर्नु हुँदैन।

गल्तीले पनि सीमा पार गर्न जरुरी छ

एक कार्यकर्ता भित्रको अपवाद सामान्य मुख्य-थ्रेड अपवाद बन्दैन। कार्यकर्ताले प्रयोगयोग्य त्रुटिहरू रिपोर्ट गर्नुपर्छ, र सम्पादकले कार्यकर्ता-स्तर विफलताहरूको लागि सुन्नुपर्छ।

राम्रो त्रुटि ह्यान्डलिंगले कम्तिमा फरक पार्छ:

यो सामान्य “केही गडबड भयो” भन्दा बढी कार्ययोग्य छ, विशेष गरी जब पहिलो-रन सेटअप र सामान्य छवि प्रशोधनमा फरक उपचार हुन्छ।

कार्यकर्ता आउटपुट अझै पनि पहिलो मास्क मात्र हो

थ्रेड वास्तुकलाले आफैंमा अस्पष्ट किनारा सुधार गर्दैन। कामदारले प्राविधिक रूपमा मान्य मास्क फिर्ता गर्न सक्छ जुन अझै पनि फर, पारदर्शी सामग्री, साँघुरो पट्टा, वा इच्छित छाया छुटेको छ। ती विभाजन र अभिप्राय प्रश्नहरू हुन्।

सम्पादकको काम निष्कर्ष पछि पुन: सुरु हुन्छ: मास्कलाई कार्य समन्वय प्रणालीमा मापन गर्नुहोस्, पूर्वावलोकन कम्पोजिट गर्नुहोस्, प्रयोगकर्तालाई यसलाई परिष्कृत गर्न दिनुहोस्, र हालको अवस्था निर्यात गर्नुहोस्। मास्क रिजोल्युसन बनाम पूर्वावलोकन आकार ले ती समन्वय प्रणालीहरू किन भ्रमित हुनु हुँदैन भनेर बताउँछ।

एक संक्षिप्त मानसिक मोडेल

सन्देश सञ्झ्याल पछाडि स्थानीय विशेषज्ञको रूपमा कार्यकर्तालाई सोच्नुहोस्:

पिक्सेलको मोडेलको दृश्यको लागि, अन-यन्त्र कटआउट मोडेलले के देख्छ सँग जारी राख्नुहोस्। अन्त-देखि-अन्त व्यावहारिक सिंहावलोकनको लागि, हेर्नुहोस् स्थानीय पृष्ठभूमि हटाउने कसरी काम गर्दछ।

अन्वेषण गरिरहनुहोस्

रोचक