বিনামূল্যে Chrome এক্সটেনশন — অন-ডিভাইস কাটআউট

Web Worker ইমেজ প্রসেসিং বেসিকস

Web Worker আলাদা JavaScript এক্সিকিউশন কনটেক্সট যা এডিটরের মেইন থ্রেডকে সব কাজ না দিয়ে ভারী হিসাব করতে পারে। ব্রাউজার ইমেজ প্রসেসিংয়ে মানে মডেল সেটআপ ও ইনফারেন্স ব্যাকগ্রাউন্ডে চলতে পারে।

ফল «ফ্রি ব্যাকগ্রাউন্ড প্রসেসিং» নয়। একই ডিভাইসই হিসাব করে ও মেমোরি ব্যবহার করে। আর্কিটেকচারাল সুবিধা আলাদাকরণ: ভারী অপারেশন প্রতিটি UI রেসপন্স ব্লক করার সম্ভাবনা কমায়।

মূল থ্রেডের একটি ইউজার-ইন্টারফেস কাজ আছে

একটি ব্রাউজার পৃষ্ঠা সাধারণত একটি প্রধান থ্রেডে জাভাস্ক্রিপ্ট চালায়। সেই থ্রেডটি লেআউট, পেইন্টিং এবং ইনপুটকেও সমন্বয় করে। যদি একটি দীর্ঘ গণনা এটি দখল করে, ক্লিকগুলি বিলম্বিত হতে পারে, অ্যানিমেশন বন্ধ হতে পারে এবং ব্রাউজারটি সতর্ক করতে পারে যে পৃষ্ঠাটি প্রতিক্রিয়াহীন।

অনুমান শুরু হওয়ার আগে একটি চিত্র সম্পাদকের প্রচুর প্রধান-থ্রেড দায়িত্ব রয়েছে:

একই থ্রেডে একটি সেগমেন্টেশন মডেলের সংখ্যাসূচক কাজ করা সেই কাজগুলিকে সরাসরি প্রতিযোগিতায় পরিণত করবে। একজন কর্মী একটি পরিষ্কার সীমানা তৈরি করে।

বার্তা ভিত্তিক সীমানা

সম্পাদক এবং কর্মী সাধারণ ভেরিয়েবল শেয়ার করেন না। তারা বার্তা পাঠিয়ে যোগাযোগ করে। একটি সরলীকৃত প্রবাহ এই মত দেখায়:

  1. সম্পাদক একজন কর্মী তৈরি করেন বা পুনরায় ব্যবহার করেন।
  2. এটি কর্মীকে অনুমান রানটাইম এবং মডেল শুরু করতে বলে।
  3. এটি ইমেজ ডেটা প্রস্তুত করে এবং একটি অনুমান অনুরোধ পাঠায়।
  4. কর্মী ডেটাকে মডেলের প্রত্যাশিত ইনপুটে রূপান্তর করে।
  5. কর্মী মডেল চালায় এবং মুখোশের মান তৈরি করে।
  6. এটি মাস্ক বা ফলাফলের ডেটা ফেরত পাঠায়।
  7. সম্পাদক পূর্বরূপ সংমিশ্রণ করে এবং পরিশোধন বা রপ্তানি সক্ষম করে।

সঠিক অনুরোধের প্রতিক্রিয়া মেলে বার্তাগুলিতে যথেষ্ট প্রসঙ্গ অন্তর্ভুক্ত করা উচিত। পূর্ববর্তী কাজ শেষ হওয়ার আগে একজন ব্যবহারকারী অন্য ছবি বেছে নিলে এটি গুরুত্বপূর্ণ। ইন্টারফেসটি অবশ্যই একটি নতুন উত্সের উপর একটি পুরানো ফলাফল প্রদর্শন এড়াতে হবে৷

ছবির ডেটা কপি এবং স্থানান্তর করা

একটি ছোট টেক্সট বার্তা পাঠানো সস্তা. ব্রাউজারকে সম্পূর্ণ বাফার কপি করতে হলে লক্ষ লক্ষ পিক্সেল মান পাঠানো ব্যয়বহুল হতে পারে। ওয়েব API এর পরিবর্তে নির্দিষ্ট বাইনারি বাফারের মালিকানা স্থানান্তর করতে পারে। একটি স্থানান্তরিত বাফার প্রেরকের পাশে একটি ব্যবহারযোগ্য ডুপ্লিকেট বজায় না রেখে রিসিভারের কাছে উপলব্ধ হয়ে যায়।

এই অপ্টিমাইজেশানটি একটি ডিজাইনের সীমাবদ্ধতার সাথে আসে: স্থানান্তরের পরে, প্রেরক একই বাফার ব্যবহার করতে পারে না যদিও এটি এখনও ডেটার মালিক। একজন সম্পাদক একটি পৃথক প্রদর্শন উপস্থাপনা বজায় রাখতে পারে, একটি উত্সর্গীকৃত অনুমান বাফার তৈরি করতে পারে, বা পরে যা প্রয়োজন তা পুনর্গঠন করতে পারে।

প্রতিটি বাস্তবায়ন ঠিক একই জায়গায় স্থানান্তর ব্যবহার করে না। সাধারণ পাঠ হল যে থ্রেড বিচ্ছেদ ডেটা আন্দোলনকে অদৃশ্য করে দেয় না। ছবির মাত্রা, বাফারের আকার এবং রূপান্তরের সংখ্যা এখনও লেটেন্সি এবং মেমরিকে প্রভাবিত করে।

কি Easy Background Remover শ্রমিকের মধ্যে রাখে

Easy Background Remover অন-ডিভাইস বিভাজনের জন্য ব্রাউজার ইনফারেন্স রানটাইম সহ একজন ওয়েব কর্মী ব্যবহার করে। ভারী স্বয়ংক্রিয় কাটআউট পদক্ষেপ একটি মুখোশ তৈরি করে। সম্পাদক তারপরে সংমিশ্রিত ফলাফল প্রদর্শন করে এবং CPU-ক্যানভাস ব্রাশ পরিমার্জন সমর্থন করে।

এই বিচ্ছেদ ব্যর্থতাকে আরও কার্যকর সীমানা দেয়। যদি কর্মী অনুমান করার সময় সূচনা করতে না পারে বা ক্র্যাশ করতে না পারে, তবে ইন্টারফেসটি একমাত্র সংকেত হিসাবে স্থায়ীভাবে হিমায়িত ট্যাবের উপর নির্ভর না করে একটি কর্মী-সম্পর্কিত ত্রুটি রিপোর্ট করতে পারে।

এটি স্থানীয়-প্রক্রিয়াকরণ দাবিকেও বোধগম্য রাখে। একটি এক্সটেনশন পৃষ্ঠা থেকে তার নিজস্ব কর্মীকে পিক্সেল পাঠানো হল ব্রাউজার পরিবেশের মধ্যে যোগাযোগ, দূরবর্তী কাটআউট API এ আপলোড নয়। প্রথম সেশন আলাদাভাবে পুনরায় ব্যবহারযোগ্য মডেল সম্পদ ডাউনলোড করতে পারে; দেখুন কেন প্রথম রান একটি মডেল ডাউনলোড করে।

একজন কর্মী তাৎক্ষণিক গণনা করে না

কর্মীরা প্রতিক্রিয়াশীলতা উন্নত করে, কাঁচা ডিভাইসের ক্ষমতা নয়। ব্রাউজার যা প্রদান করতে পারে সেই অনুযায়ী মডেলটি এখনও CPU, GPU, বা অন্যান্য রানটাইম সংস্থান গ্রহণ করে। একটি বড় ইনপুট এখনও বেশি সময় নিতে পারে এবং একটি ছোট থেকে বেশি মেমরির প্রয়োজন হয়৷

বেশ কয়েকটি সীমা রয়ে গেছে:

পাঁচটি চিত্রের জন্য পাঁচজন অনুমান কর্মী শুরু করা স্বয়ংক্রিয়ভাবে পাঁচগুণ দ্রুত হয় না। শ্রমিকরা একই মেশিন শেয়ার করে। সমান্তরাল কাজগুলি মেমরি ব্যান্ডউইথ এবং এক্সিকিউশন রিসোর্সের জন্য প্রতিদ্বন্দ্বিতা করতে পারে, যখন প্রতিটি মডেল উদাহরণের নিজস্ব মেমরি খরচ বহন করতে পারে।

অগ্রগতি প্রতিবেদন সহযোগিতামূলক

একজন কর্মী স্ট্যাটাস মেসেজ পাঠাতে পারে, কিন্তু এটা স্বয়ংক্রিয়ভাবে জানে না যে কত শতাংশ অগ্রগতি সঠিক মনে হবে। মডেল ডাউনলোড, রানটাইম ইনিশিয়ালাইজেশন, ইনপুট প্রস্তুতি, অনুমান, মুখোশ রূপান্তর এবং প্রিভিউ রেন্ডারিং বিভিন্ন সময় সহ পৃথক পর্যায়।

কিছু পর্যায় পরিমাপযোগ্য বাইট গণনা আছে। একটি একক মডেল এক্সিকিউশন শুধুমাত্র “শুরু” এবং “সমাপ্ত” প্রকাশ করতে পারে। একটি মসৃণ শতাংশ যা অভিন্নভাবে অগ্রসর হয় তাই একটি সুনির্দিষ্ট পরিমাপের পরিবর্তে প্রসাধনী হতে পারে।

দরকারী অগ্রগতি UI যখন সম্ভব পর্যায়ের নাম দেয়: মডেল প্রস্তুত করা, চিত্র প্রক্রিয়াকরণ, বা ফলাফল তৈরি করা। এটি কোনো ব্যাখ্যা ছাড়াই একজন স্পিনার ছাড়ার পরিবর্তে ব্যর্থতা এবং বাতিলকরণ পরিচালনা করে।

বাতিল করা স্পিনারকে লুকানোর চেয়ে বেশি কিছু

যদি ব্যবহারকারী একটি ছবি বন্ধ করে বা আবার শুরু করে, ইন্টারফেসটি পুরানো অনুরোধ থেকে চূড়ান্ত প্রতিক্রিয়া উপেক্ষা করতে পারে। অন্তর্নিহিত গণনা অবিলম্বে বন্ধ করার জন্য রানটাইম থেকে অতিরিক্ত সহায়তার প্রয়োজন হতে পারে বা কর্মীকে শেষ করা এবং পুনরায় তৈরি করা হতে পারে।

একজন কর্মীকে বরখাস্ত করা সিদ্ধান্তমূলক, কিন্তু এটি তার প্রারম্ভিক অবস্থাকে বাতিল করে দেয়। পরবর্তী কাজের জন্য আবার মডেলটি লোড এবং আরম্ভ করার প্রয়োজন হতে পারে। একটি সংক্ষিপ্ত অপারেশনের জন্য, ফলাফল বাসি চিহ্নিত করা সবকিছু ছিঁড়ে ফেলার চেয়ে সস্তা হতে পারে।

সঠিক পছন্দ মেমরির চাপ, অপারেশনের সময়কাল এবং রানটাইম ক্ষমতার উপর নির্ভর করে। ব্যবহারকারীর দৃষ্টিকোণ থেকে, গুরুত্বপূর্ণ নিয়ম হল যে পুরানো কাজ বর্তমান সম্পাদনাকে ওভাররাইট করবে না।

ত্রুটিরও সীমানা অতিক্রম করতে হয়

একজন কর্মীর অভ্যন্তরে একটি ব্যতিক্রম একটি সাধারণ প্রধান-থ্রেড ব্যতিক্রম হয়ে ওঠে না। কর্মীকে অবশ্যই ব্যবহারযোগ্য ত্রুটির প্রতিবেদন করতে হবে এবং সম্পাদককে কর্মী-স্তরের ব্যর্থতার জন্য শুনতে হবে।

ভাল ত্রুটি পরিচালনা অন্তত আলাদা করে:

এটি একটি সাধারণ “কিছু ভুল হয়েছে” এর চেয়ে বেশি কার্যকরী, বিশেষ করে যখন প্রথম-চালিত সেটআপ এবং সাধারণ চিত্র প্রক্রিয়াকরণের বিভিন্ন প্রতিকার থাকে।

কর্মী আউটপুট এখনও শুধুমাত্র একটি প্রথম মুখোশ

থ্রেড আর্কিটেকচার নিজেই একটি অস্পষ্ট প্রান্ত উন্নত করে না। কর্মী একটি প্রযুক্তিগতভাবে বৈধ মুখোশ ফেরত দিতে পারেন যা এখনও পশম, স্বচ্ছ উপাদান, সরু স্ট্র্যাপ বা একটি পছন্দসই ছায়া মিস করে। সেগুলি হল বিভাজন এবং উদ্দেশ্য প্রশ্ন।

অনুমান করার পরে সম্পাদকের কাজ পুনরায় শুরু হয়: কার্যকারী স্থানাঙ্ক সিস্টেমে মুখোশটি স্কেল করুন, একটি পূর্বরূপ সংমিশ্রণ করুন, ব্যবহারকারীকে এটিকে পরিমার্জিত করতে দিন এবং বর্তমান অবস্থা রপ্তানি করুন। মাস্ক রেজোলিউশন বনাম প্রিভিউ সাইজ ব্যাখ্যা করে যে কেন এই স্থানাঙ্ক সিস্টেমগুলিকে বিভ্রান্ত করা উচিত নয়।

একটি সংক্ষিপ্ত মানসিক মডেল

একটি বার্তা উইন্ডোর পিছনে একজন স্থানীয় বিশেষজ্ঞ হিসাবে কর্মীকে ভাবুন:

পিক্সেলের মডেলের দৃশ্যের জন্য, একটি ডিভাইসে কাটআউট মডেল কী দেখে দিয়ে চালিয়ে যান। এন্ড-টু-এন্ড ব্যবহারিক ওভারভিউয়ের জন্য, কীভাবে স্থানীয় পটভূমি অপসারণ কাজ করে দেখুন।

অন্বেষণ করতে থাকুন

ইন্টারেস্টিং