এই নিবন্ধে, আমি আপনাকে বলব কিভাবে আমরা ব্যবহারকারীর গাড়ির যাচাইকরণ প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে পরিচালনা করি। আমরা যে উপাদানগুলি ব্যবহার করি এবং কীভাবে আমরা প্রক্রিয়াটি সংগঠিত করি তা আমি আপনার সাথে শেয়ার করব।
ইনড্রাইভে, আমরা প্রচুর ভিজ্যুয়াল কন্টেন্ট ব্যবহার করি। আমরা বিভিন্ন মানসিকতার দ্বারা চিহ্নিত বিভিন্ন অঞ্চলের বিস্তৃত পরিসরে উপস্থিত রয়েছি যেখানে প্রচুর পরিমাণে বিভিন্ন নথিপত্র ব্যবহার করা হয়: পাসপোর্ট, শংসাপত্র এবং গাড়ির নথি।
তা ছাড়া, চালকরা নিজেরাই এবং তাদের যানবাহনগুলিকে সামলানোর জন্য রয়েছে।
আমাদের ব্যবহারকারীদের জন্য ভ্রমণের স্বাচ্ছন্দ্য এবং পরিষেবার উন্নত মানের বিষয়ে কথা বলার সময়, নিরাপত্তা এবং অপ্রত্যাশিতগুলি নির্মূল করা পরম অপরিহার্য। উদাহরণস্বরূপ, যখন গাড়িটি উপরে উঠবে সেটি আপনার বুক করা নয়।
ইনড্রাইভে আমরা কীভাবে নিয়মিত যানবাহন যাচাইকরণ পরিচালনা করি তা আপনি খুঁজে পাবেন। একবার এটি হয়ে গেলে, আমাদের মডারেটররা ম্যানুয়ালি ফটোর আগে এবং পরে চেক করে। অবশ্যই, যাচাইকরণ প্রক্রিয়ার সাথে অন্যান্য বিষয়গুলিও জড়িত, তবে এখানে আমরা শুধুমাত্র এই দিকটির উপর ফোকাস করব।
বর্তমান পদ্ধতির সমস্যা হল যে পরিকাঠামো বৃদ্ধির চেয়ে মডারেটরের সংখ্যা বাড়ানো আরও কঠিন। বিশেষ করে যখন ব্যবহারকারীদের ব্যক্তিগত ডেটা নিয়ে কাজ করার কথা আসে।
আসুন সমস্যাটিকে খুব সহজভাবে বলা যাক, যেন একটি শিশুর জন্য: আমাদের কাছে একটি গাড়ির দুটি ছবি রয়েছে - তারা কি একই গাড়ি? স্পষ্টতই, যে কেউ এই প্রশ্নটি পরিচালনা করতে পারে, কিন্তু আমরা একটি তুলনা মানদণ্ড যোগ করার পরে জিনিসগুলি আরও জটিল হয়ে যায়।
উদাহরণস্বরূপ, নিশ্চিত করা যে এটি কোনও সেল ফোনের স্ক্রিনশট নয় বা লাইসেন্স প্লেট নম্বরগুলি একটি নিখুঁত মিল।
বিশ্বব্যাপী, এই সমস্যাটি বিভিন্ন উপায়ে সমাধান করা যেতে পারে: E2E মডেল এবং এই মডেলগুলির সেটগুলি ব্যবহার করে৷
E2E মডেল বলতে বোঝায় একটি বড় মডেল (সম্ভবত একটি নিউরাল নেটওয়ার্ক) যা একজোড়া ছবির উপর ভিত্তি করে আমাদের প্রশ্নের উত্তর দিতে পারে, যেমন "ছবিতে একই গাড়ি আছে নাকি?", "লাইসেন্স প্লেট নম্বরগুলি কি মিলছে? আপ নাকি?", ইত্যাদি
এই ধরনের মডেলগুলির সমস্যা হল যে তাদের কাছ থেকে শেখার জন্য প্রচুর ডেটার প্রয়োজন হয় এবং কেন উত্তরটি কী তা তাদের বোঝার অভাব রয়েছে।
উদাহরণস্বরূপ, যদি আমরা একটি মডেলকে এক জোড়া ফটোর উপর ভিত্তি করে "হ্যাঁ"/"না" উত্তর দিতে প্রশিক্ষণ দিই, তাহলে উত্তরের কারণ খুঁজে বের করা আর সম্ভব নয়।
সুতরাং ব্যবহারকারীরা বুঝতে অক্ষম হবে আমরা তাদের কাছ থেকে কী চাই এবং আমাদের মডারেটর আনতে হবে।
এই এন্ড-টু-এন্ড পদ্ধতি আমাদের জন্য উপযুক্ত নয়। কেন প্রদত্ত ফটোটি "বিলের সাথে খাপ খায় না" সে সম্পর্কে আমরা ব্যবহারকারীকে ক্লু দিতে চাই: "একটি আলোকিত স্থানে ফটো তোলা ভাল," "মনে হচ্ছে আমরা পুরো গাড়িটি দেখতে পাচ্ছি না ছবি," বা "লাইসেন্স প্লেট নম্বর দেওয়া তথ্যের সাথে মেলে না।"
এটা আমাদের কাছে খুবই গুরুত্বপূর্ণ যে মডেলটি "হ্যাঁ" উত্তর দেয় না যখন বিভিন্ন যানবাহন থাকে। আসুন এই মেট্রিকটিকে "FPR" (মিথ্যা ইতিবাচক হার) নাম দিই এবং সমস্ত নেতিবাচক উদাহরণের বিপরীতে "হ্যাঁ" প্রতিক্রিয়াগুলির শতাংশ দেখানোর জন্য এটি ব্যবহার করুন (যেখানে যানবাহনগুলি মেলে না)৷
এখন, সকল ইতিবাচক উত্তরের "হ্যাঁ" উত্তরের অনুপাত পরিমাপ করার জন্য আরেকটি মেট্রিক — TPR — প্রবর্তন করা যাক।
মূলত, মডেলটি অপ্টিমাইজ করার সময় এই দুটি মেট্রিক্স ইতিমধ্যেই আমাদের কাজ বর্ণনা করার জন্য যথেষ্ট: FPR কমিয়ে আনা এবং TPR যাতে খুব বেশি ক্ষয় না হয় তা নিশ্চিত করা।
আমরা মডেল সেট পদ্ধতি গ্রহণ. অতএব, আমরা আমাদের সমস্ত ধারণাগুলি সমাপ্ত সমাধানের কঙ্কালে যুক্ত করতে পারি (এই কঙ্কালটিকে "বেসলাইন" হিসাবে উল্লেখ করা হবে)। আসুন এটি দেখতে কেমন তা অন্বেষণ করুন এবং একে ভাগে ভাগ করুন।
প্রকৃতপক্ষে, এটি বেশ কয়েকটি মডেল নিয়ে গঠিত যা ইনপুটে দুটি ছবি স্বাধীনভাবে প্রক্রিয়া করে এবং আউটপুটে গাড়ির লাইসেন্স প্লেট নম্বর এবং এর ভেক্টর দেয়। ফলস্বরূপ, তুলনা করা বিশদ বিবরণের ভিত্তিতে, পর্যালোচনার অধীনে দুটি ফটো সম্পর্কে একটি যাচাইকরণের সিদ্ধান্ত নেওয়া হয়৷
এটি হল অ্যালগরিদমের কঙ্কাল যা আমরা আমাদের মডেলের বিভিন্ন নোডে রেখে একাধিক অন্যান্য মডেল যোগ করতে ব্যবহার করি। উদাহরণস্বরূপ, একটি ছবির গুণমান মূল্যায়ন করার সময়, এর স্বচ্ছতা, আলো এবং স্যাচুরেশন মাত্রা।
কখনও কখনও, আমাদের এমন ফটো জমা দেওয়ার প্রচেষ্টা সনাক্ত করতে হবে যা আসল নয়। এটি করার জন্য, আমরা একটি প্রিপ্রসেসর যুক্ত করি যা স্পুফিং আক্রমণের জন্য ফটো পরীক্ষা করে।
এই ধরনের পদ্ধতি ব্যবহার করার সময়, পরিষ্কার পণ্য পুনরাবৃত্তি চক্র থাকা এবং একটি ভাল পরীক্ষার ডেটা সেট তৈরি করা অত্যন্ত গুরুত্বপূর্ণ। এই দুটি বিষয়ের মূল্যায়ন করার জন্য আমরা একটি নতুন মডেল যোগ করি, "এটি কি নির্ধারিত সমস্যার সমাধান করে?" এবং "এটি পূর্ববর্তী সমাধানের মেট্রিক্স কতটা পরিবর্তন করে?"
এখন সমাধানের মৌলিক বিল্ডিং ব্লক সম্পর্কে কথা বলা যাক।
চলুন পরিভাষা দেখে নেওয়া যাক। নীচে, আমি "বাউন্ডিং বক্স" এবং "সেগমেন্টেশন মাস্ক" এর মতো পদগুলির অর্থ ব্যাখ্যা করব।
একটি বাউন্ডিং বাক্স হল একটি আয়তক্ষেত্রাকার আকৃতি যা আগ্রহের একটি নির্দিষ্ট বস্তুকে আবদ্ধ করতে ব্যবহৃত হয়। উদাহরণস্বরূপ, যদি আমরা বিড়ালের মুখ শনাক্ত করতে চাই, তাহলে আমরা লাল রঙে এটির রূপরেখা দিয়ে একটি বাউন্ডিং বক্সকে সংজ্ঞায়িত করব। এটি চিত্রের মধ্যে নীচের-বাম এবং উপরের-ডান বিন্দুগুলির স্থানাঙ্ক দ্বারা সংজ্ঞায়িত করা হয়।
সেগমেন্টেশন একটি ইনপুট ইমেজে প্রতিটি পৃথক পিক্সেলের জন্য একটি ক্লাস লেবেল বরাদ্দ করার কাজকে বোঝায়। আমাদের আলোচনার পরিপ্রেক্ষিতে, আমরা বিড়ালটিকে পটভূমি থেকে ভাগ করে বিচ্ছিন্ন করেছি।
আমাদের মডেলে, গাড়ির ব্যাকগ্রাউন্ড আমাদের কাছে কোন আগ্রহের বিষয় নয় কারণ এটি আমাদের লক্ষ্য সমাধানকে আকার দেওয়ার জন্য কোন প্রাসঙ্গিক তথ্য প্রদান করে না। কিন্তু এর অর্থ এই নয় যে ব্যাকগ্রাউন্ড ব্যবহার করে আমাদের মডেলগুলিকে কীভাবে উন্নত করা যায় সে সম্পর্কে আমাদের কোনও ধারণা নেই৷
ব্যাকগ্রাউন্ড থেকে যানবাহনকে আলাদা করার চ্যালেঞ্জ মোকাবেলা করার জন্য, আমরা YOLO পরিবারের একটি মডেল নেব (ইউ অনলি লুক ওয়ানস) এবং গাড়ির ছবি সেগমেন্ট করার জন্য প্রশিক্ষণ দেব। এখানে সমস্যা হল যে ছবিতে একাধিক গাড়ি সহ ব্যবহারকারীদের থেকে আমাদের কাছে বিপুল সংখ্যক ফটো রয়েছে৷
এই সমস্যাটি কাটিয়ে উঠতে, আমরা নিম্নলিখিত পদ্ধতি ব্যবহার করতে পারি:
দুর্দান্ত, আমরা আমাদের প্রথম ইনপুট পেয়েছি।
পরবর্তী ধাপ হল গাড়ির লাইসেন্স প্লেট নম্বর খুঁজে বের করা। প্রায় সব দেশে, লাইসেন্স প্লেট সামনের দিকে অবস্থিত। বিরল ক্ষেত্রে যেখানে গাড়ির রেজিস্ট্রেশন প্লেটগুলি অস্বাভাবিক জায়গায় অবস্থিত সেগুলি এই নিবন্ধের সুযোগের বাইরে।
লাইসেন্স প্লেট নম্বর স্থাপনের সবচেয়ে সাধারণ পদ্ধতি হল বাউন্ডিং বাক্স সনাক্ত করা এবং ফলাফল প্যাচে OCR প্রয়োগ করা।
কিন্তু যেমন আমাদের পরীক্ষায় দেখা গেছে, গাড়ির রেজিস্ট্রেশন নম্বর প্লেট দিগন্তের সমান্তরাল না হলে ওসিআর অনেক কম কার্যকর (এবং কিছু মডেলে বেশি সময় লাগে)।
এটি আমাদের ডেটার জন্য বিশেষভাবে প্রাসঙ্গিক, যেখানে আমরা চালকদের একটি কোণে ছবি তুলতে বলি৷
আমরা যে সমাধানের সিদ্ধান্ত নিয়েছিলাম তা হল সংখ্যাটি ভাগ করা এবং তারপর প্রাপ্ত কনট্যুর লাইনটি মসৃণ করা। আমাদের ক্ষেত্রে, নিম্নলিখিত ফলাফল সহ যানবাহনগুলিকে কীভাবে বিভক্ত করা হয় তার অনুরূপভাবে সেগমেন্টেশন কাজটি করা হয়েছিল:
এর পরে, আমরা মুখোশ ব্যবহার করে একটি কনট্যুর লাইন আঁকলাম এবং এটিকে মসৃণ করতে ConvexHull প্রয়োগ করেছি। এই সাধারণ অ্যালগরিদমটি আমাদের কনট্যুর লাইনের অবতলতাগুলিকে মসৃণ করে (সোজা করে) এটিকে আরও সোজা করে। এটি একটি কনট্যুর বহুভুজের একটি ছোট সংখ্যক কোণ হিসাবে বর্ণনা করা যেতে পারে।
একটি আদর্শ বিশ্বে, এই অপারেশনটি আমাদের চারটি পয়েন্ট দ্বারা সংজ্ঞায়িত একটি আয়তক্ষেত্র পাবে।
একবার আমরা সীমানা সারিবদ্ধ হয়ে গেলে, আমরা দৃষ্টিকোণ সহ একই ড্রিল পুনরাবৃত্তি করি, যাতে নিবন্ধন নম্বরটি মসৃণ, ভালভাবে উপস্থাপন করা হয় এবং স্পষ্টভাবে দৃশ্যমান হয়। এই পদ্ধতিটি বিশেষত সহায়ক যখন একটি গাড়ির খুব বেশি ছবি তোলা হয় এমন কোণে যেখানে লাইসেন্স প্লেট খুব কমই দেখা যায়।
একটি দৃষ্টিকোণ সংশোধন কি? আমি আমার বীজগণিত ক্লাস থেকে মনে করি কিভাবে একটি ঘূর্ণন ম্যাট্রিক্স কাজ করে। আপনি যদি কার্টেসিয়ান স্থানাঙ্ক সিস্টেমে একটি বর্গ নেন এবং প্রতিটি স্থানাঙ্ককে 30 ডিগ্রির একটি ঘূর্ণন ম্যাট্রিক্স দ্বারা গুণ করেন, তাহলে নতুন স্থানাঙ্ক ব্যবস্থায় আপনার বর্গটি 30 ডিগ্রি দ্বারা ঘোরানো হবে।
এখানে, আমরা একটি অনুরূপ কাজ নিয়ে কাজ করছি — আসুন কনট্যুর লাইনটি গ্রহণ করি এবং সমস্ত বিন্দুকে নতুন স্থানাঙ্ক সিস্টেমে নিয়ে যাই। সমস্যা হল একটি উপযুক্ত রূপান্তর ম্যাট্রিক্স খুঁজে বের করা।
এই সমস্ত অ্যালগরিদমগুলি ইতিমধ্যেই সুপ্রতিষ্ঠিত, তাই আমাদের একমাত্র জিনিসটি নিশ্চিত করতে হবে যে তারা হাতের কাজের জন্য সঠিকভাবে কনফিগার করা হয়েছে।
ফলাফল শুধু মহান ছিল. এটি TPR প্রায় 15 শতাংশ পয়েন্ট বৃদ্ধি করেছে। এর পরে, আমরা কিছু হালকা, উচ্চ-মানের OCR সফ্টওয়্যার প্রয়োগ করি, যেমন PARSeq আর্কিটেকচার৷
এখন পর্যন্ত, এটি গাড়ির ছবি প্রক্রিয়াকরণের জন্য সর্বশেষ নিউরাল নেটওয়ার্ক প্রযুক্তি। অনুসন্ধান, সুপারিশ এবং ডেটা কম্প্রেশন সহ বিভিন্ন মেশিন লার্নিং ক্ষেত্রে এমবেডিং একটি ব্যাপকভাবে গৃহীত কৌশল।
আমাদের কাজের পরিপ্রেক্ষিতে, যানবাহনের মধ্যে সাদৃশ্য মূল্যায়ন করতে এমবেডিং নিযুক্ত করা হয়।
আসুন একটি উদাহরণ দেখি যেখানে আমি প্রথমে ডান দিক থেকে এবং তারপরে বাম দিক থেকে আমার গাড়ির একটি ছবি তুলেছি। এখন, আমি এই ছবিগুলির জন্য এমবেডিং (ভেক্টর) গণনা করতে পারি, এবং যদি এই ভেক্টরগুলি মহাকাশে কাছাকাছি থাকে তবে এটি নির্দেশ করে যে এটি একই বাহন।
কিন্তু এমবেডিং অন্য একটি দরকারী সম্পত্তি প্রদান করে যা পণ্যে ব্যবহার করা যেতে পারে: যদি আপনার এম্বেডিং মডেলটি ভালভাবে কাজ করে, তাহলে আপনি এমবেডিং নমুনাগুলির মধ্যে সবচেয়ে কাছেরটি অনুসন্ধান করতে পারেন৷ উদাহরণস্বরূপ, সিস্টেমে অ-অনন্য যানবাহন খুঁজে বের করা।
ইনড্রাইভ ডেটা ব্যবহার করে আমাদের এমবেডিং মডেলের প্রশিক্ষণ দেওয়ার সময়, আমরা সতর্কতা অবলম্বন করেছি। আমরা যত্ন সহকারে ফটোগুলি থেকে কোনও ব্যক্তিগত ডেটা সরিয়ে দিয়েছি এবং নিশ্চিত করেছি যে ডেটাসেটটি স্বাভাবিক করা হয়েছে, যে সমস্ত দেশে আমরা কাজ করি এবং বিভিন্ন মানের স্তরের ছবিগুলিকে অন্তর্ভুক্ত করে৷
এই পদ্ধতির লক্ষ্য হল সেই ব্যক্তিদের প্রতি বৈষম্য প্রতিরোধ করা যাদের উচ্চ-মানের ছবি তোলার জন্য দামী স্মার্টফোনে অ্যাক্সেস নেই।
ফলস্বরূপ, গাড়ির ব্র্যান্ড এবং মেক দ্বারা গোষ্ঠীবদ্ধ একটি ডেটাসেট প্রাপ্ত। বেশ কয়েকটি পরীক্ষা চালানোর পরে, আমরা বুঝতে পেরেছি যে আপাতত গাড়ির রঙের তুলনা না করেই আমাদের করতে হবে।
আমাদের মডেলের জন্য আর্কিটেকচার নির্বাচন করার সময়, আমরা একটি মেরুদণ্ডের সন্ধান করেছি যা কর্মক্ষমতা এবং গণনাগত দক্ষতার মধ্যে ভারসাম্য বজায় রাখে। এটি একটি অত্যধিক বড় ব্যাকবোন ব্যবহার এড়াতে গুরুত্বপূর্ণ ছিল, কারণ এটি উল্লেখযোগ্যভাবে বেসলাইন চলমান সময় কমিয়ে দিতে পারে।
সতর্কতার সাথে বিবেচনা করার পরে, আমরা আমাদের মেরুদণ্ডের স্থাপত্য হিসাবে efficientnet_b2 বেছে নিয়েছি, যা মেশিন লার্নিংয়ের উদ্দেশ্যে সংযোজন কৌণিক মার্জিন লসের ব্যবহার দ্বারা পরিপূরক।
আমাদের মডেলের লক্ষ্য হল ভেক্টর উপস্থাপনা শেখা যেখানে একই মেক এবং মডেলের যানবাহন, যেমন সমস্ত অডি A4, ভেক্টর স্পেসে একসাথে অবস্থান করে।
বিপরীতে, অডি A5s অডি A4s থেকে কিছুটা দূরে অবস্থান করা হবে কিন্তু এখনও, উদাহরণস্বরূপ, একটি টয়োটা ক্যামেরির তুলনায় কাছাকাছি।
এখন, যানবাহনের তুলনার কয়েকটি উদাহরণের দিকে নজর দেওয়া যাক:
শীর্ষে, আমাদের দুটি অভিন্ন গাড়ি রয়েছে, যখন নীচে, আমাদের দুটি আলাদা গাড়ি রয়েছে। আসুন সাদৃশ্য স্কোরগুলি আবার দেখুন: শীর্ষ জোড়ার স্কোর 0.989, আর নীচের জুটির স্কোর 0.697। 0.98 একটি থ্রেশহোল্ড মান সেট করে, আমরা যানবাহনকে অভিন্ন হিসাবে শ্রেণীবদ্ধ করতে পারি।
যাইহোক, এটা মনে রাখা গুরুত্বপূর্ণ যে আমাদের মডেল এখনও নির্দোষভাবে কাজ করছে না। আমরা সংশ্লিষ্ট ফ্যাক্টর একটি পক্ষপাত আছে:
মডেলটি 0.751 এর ফলাফল তৈরি করে, যেখানে আমরা আদর্শভাবে বিভিন্ন যানবাহনের জন্য শূন্যের কাছাকাছি একটি মান চাই।
এখানে প্রধান সমস্যাটি মূলত গাড়ির মডেল এবং ব্র্যান্ডের উপর ফোকাস করা ডেটাসেটের উপর আমাদের মডেলকে প্রশিক্ষণের মাধ্যমে উদ্ভূত হয়। ফলস্বরূপ, মডেলটি বিভিন্ন যানবাহনের মধ্যে পার্থক্য করতে পারদর্শী হয়ে ওঠে, তবে গাড়ির ক্লাসের মধ্যে পার্থক্যগুলি মূল্যায়ন করার সময় এটি সংগ্রাম করে।
আমরা যে দ্বিতীয় সমস্যাটির সম্মুখীন হয়েছি তা হল গাড়িটিকে বিভিন্ন কোণে দেখানো হতে পারে, যা সীমিত ডেটা সেটের কারণে আমাদের এম্বেডিংয়ের গুণমানকে নেতিবাচকভাবে প্রভাবিত করে।
প্রথম পদক্ষেপ হিসাবে, ক্লায়েন্টের দিকে, আমরা মুখোশ যুক্ত করি এবং ড্রাইভারকে কীভাবে তাদের গাড়ির ছবি তুলতে হয় সে সম্পর্কে অনুরোধ করি। দ্বিতীয় ধাপে গাড়ির বিভিন্ন অংশ সনাক্ত করা হবে মহাকাশে অবস্থানের জন্য এবং এর ঘূর্ণন অনুমান করা।
ঘূর্ণনের সঠিক কোণ বেছে নিতে এখানে প্রচুর হিউরিস্টিকস তৈরি করা যেতে পারে। এবং সবচেয়ে গুরুত্বপূর্ণ, এই মডেলগুলি পরে গাড়ির অবস্থা মূল্যায়নের জন্য পুনরায় ব্যবহার করা যেতে পারে। কিন্তু এটা অন্য সময়ের জন্য একটি গল্প.
ইলিয়া কাফতানভ পোস্ট করেছেন।