পাইথন এবং ওপেনসিভি ব্যবহার করে মুখের স্বীকৃতি কার্যকর করুন

সূত্র: https://www.ariadnext.com/gesichtsicherung-neu-era-für-online-uthorfikation/

কম্পিউটার দৃষ্টিভঙ্গি আজকাল মেশিন লার্নিং এবং গভীর শেখার সম্প্রদায়ের সমস্ত ক্রোধ। এই ডোমেনটির সর্বাধিক জনপ্রিয় ব্যবহারগুলির মধ্যে একটি হ'ল মুখের স্বীকৃতি।

আমরা এই গভীরতর নিবন্ধটি শিখতে যাচ্ছি। তবে আমরা শুরু করার আগে আসুন দুটি বাস্তব-বিশ্বের ব্যবহারের ক্ষেত্রে একবার দেখে নেওয়া যাক:

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

মার্কিন পরিবহণ দফতর জানিয়েছে যে ড্রাইভিং-সংক্রান্ত ত্রুটিগুলি প্রায় 95% মারাত্মক সড়ক দুর্ঘটনার কারণ হয়ে দাঁড়ায়। মুখের আবেগ সনাক্তকরণ মুখের মাইক্রো এক্সপ্রেসনের সূক্ষ্ম পরিবর্তনগুলি সনাক্ত করতে পারে যা তন্দ্রা হওয়ার আগে এবং গাড়ি চালককে কফি বিরতি, সঙ্গীত বা তাপমাত্রা পরিবর্তন করতে ইত্যাদি জিজ্ঞাসা করে ড্রাইভারকে ব্যক্তিগত সতর্কতা প্রেরণ করে etc.

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

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

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

মুখের স্বীকৃতি কী?

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

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

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

মুখ স্বীকৃতি কিভাবে কাজ করে?

প্রক্রিয়াটি কিছুটা জটিল হলেও প্রায়শই মুখের স্বীকৃতি অ্যালগরিদমগুলি মানুষের চোখের সন্ধানে শুরু হয়। চোখগুলি তথাকথিত উপত্যকা অঞ্চল গঠন করে এবং এটি স্বীকৃতি দেওয়ার অন্যতম সহজ বৈশিষ্ট্য। একবার চোখ শনাক্ত হয়ে গেলে, অ্যালগরিদম মুখের অঞ্চলগুলি যেমন ভ্রু, মুখ, নাক, নাকের নাক এবং আইরিস সনাক্ত করতে পারে। একবার অ্যালগরিদম সন্দেহ করে যে এটি মুখের কোনও অঞ্চলকে স্বীকৃতি দিয়েছে, এটি আসলে একটি মুখকে চিনেছে কিনা তা যাচাই করতে এটি অতিরিক্ত পরীক্ষা চালাতে পারে। - https://www.facefirst.com/blog/face-detection-vs-face-recognition/

ওপেনসিভি

সূত্র: https://medium.com/@gsari/digit-recognition-with-opencv-and-python-cbf962f7e2d0

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

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

ইগেনফেজস - সিভি ২.ফেস.ক্রিটএইগেনফিজারিকনাইজার () ফিশারফ্রিজস - সিভি ২.ফেস.ক্রিটফিশারফ্রিজারিকনাইজার () বাইনারি প্যাটার্নের জন্য স্থানীয় হিস্টোগ্রাম (এলবিপিএইচ) - সিভি ২.ফেস.ক্রিটএলবিপিএইচবিজারিঙ্কাইজার ()

ওপেনসিভি সহ আমি কীভাবে মুখগুলি সন্ধান করব?

ওপেনসিভি সহ মুখগুলি খুঁজে পাওয়ার জন্য দুটি উপায় রয়েছে:

চুলের ক্লাসিফায়ার এলবিপি ক্যাসকেড ক্লাসিফায়ার

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

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

নির্ভরতা:

পাইপ ইনস্টল নম্পি পাইপ ইনস্টল ম্যাটপ্ল্লোলিব পাইপ ইনস্টল ওপেনসিভি-পাইথন

ছবি লিখুন:

সোর্স কোড:

প্ল্যাট ইম্পোর্ট গ্লোব হিসাবে ম্যাটপ্ল্লোলিব পাইপ্লট থেকে এনপি আমদানি হিসাবে সিভি 2 আমদানি নম্পটি
txtfiles = [] glob.glob ("*। jpg") ফাইলের জন্য: txtfiles.append (ফাইল) ix এর জন্য txtfiles: img = cv2.imread (ix, cv2.IMREAD_COLOR) imgtest1 = img.copy () imgtest = cv2.cvtColor (imgtest1, cv2.COLOR_BGR2GRAY)
ফেসক্যাসেকেড = সিভি 2. ক্যাসকেডক্লাসিফায়ার ('ডি: \\ কেজে \\ নাগেশ \\ ডাউনলোডগুলি \\ মুখ সনাক্তকরণ \\ চুলচেরা_ফ্রন্টালফেস_ডিফাল্ট.এক্সএমএল')
চক্ষু_ক্যাসকেড = সিভি 2. ক্যাসকেডক্লাসিফায়ার ('ডি: \\ কেজে \\ নাগেশ \\ ডাউনলোডগুলি \\ মুখ সনাক্তকরণ \\ চুলচলা
মুদ্রণ ("পাওয়া সমস্ত মুখের সংখ্যা", লেন (মুখ)) এর জন্য (x, y, ডাব্লু, এইচ) মুখগুলিতে: ফেস_ডিটেক্ট = সিভি 2. সত্যক্ষেত্র (অনিমূলক, (x, y), (x + ডাব্লু, ওয়াই + এইচ) , (255, 0, 255), 2) রোই_গ্রি = imgtest [y: y + h, x: x + w] রো_ক্লোর = অনাদায়ী [y: y + h, x: x + w] plt.imshow (face_detect) চোখ = চোখ_ক্যাসেড.ডেটেক্ট্ট মাল্টিস্কেল (রই_ গ্রে) চোখের জন্য (উদাঃ ey, ew, eh) এর জন্য: চক্ষু_ডেসটেক্ট = সিভি 2. সত্যক্ষেত্র (রই_ক্লোর, (প্রাক্তন, আই), (প্রাক্তন + ইও, আই + এ), (255,0,255), 2 ) plt.imshow (চোখের_পরিচালনা)

এখন আসুন এই সহজ প্রোগ্রামটি বুঝতে:

পদক্ষেপ 1: নম্পি, ম্যাটপ্লোটিলিব, ওপেন-সিভি এবং গ্লোব আমদানি করুন

প্লাট আমদানি সিভি 2 আমদানি গ্লোব হিসাবে ম্যাটপ্ল্লোলিব আমদানি পাইপ্লট থেকে এনপি হিসাবে নম্পিকে আমদানি করুন

পদক্ষেপ 2: আপনার বর্তমান কার্যনির্বাহী ডিরেক্টরিতে সমস্ত জেপিজি ফাইলের মধ্য দিয়ে লুপ করুন এবং এগুলিকে একটি "টেক্সটফায়ালস" তালিকায় সংরক্ষণ করুন। আপনি যদি গ্লোব দিয়ে ফাইলগুলি পড়তে চান তা জানতে এখানে ক্লিক করুন।

txtfiles = [] glob.glob ("*। jpg") এ ফাইলের জন্য: txtfiles.append (ফাইল)

পদক্ষেপ 3: প্রতিটি জেপিজি ফাইল সিভি 2.আইম্রেড () সহ পড়ুন। Cv2.imread () ফাংশনটি দুটি আর্গুমেন্ট গ্রহণ করে: প্রথমটি হ'ল চিত্রের নিজস্ব পথ এবং দ্বিতীয়টি চিত্রটি কীভাবে পড়তে হবে তা নির্দিষ্ট করে। আমরা নিম্নলিখিত তিনটির মধ্যে একটিটিকে দ্বিতীয় যুক্তি হিসাবে ব্যবহার করতে পারি।

cv2.IMREAD_COLOR - একটি রঙের চিত্র লোড করতে ব্যবহৃত হয়। এটি চিত্রের স্বচ্ছতা উপেক্ষা করে এবং এটি আদর্শ পতাকা flag আলফা চ্যানেল ছাড়া 8-বিট চিত্রগুলির জন্য। cv2.IMREAD_GRAYSCALE - গ্রেস্কেলে আমাদের চিত্রগুলি লোড করার জন্য দায়ী। cv2.IMREAD_UNCHANGED - আলফা চ্যানেল (আরজিবিএ) ব্যবহার করে একটি চিত্র লোড করে।

আপনি যখন ওপেনসিভি দিয়ে কোনও চিত্র লোড করেন, এটি ডিফল্টরূপে বিজিআর রঙের জায়গায় লোড হয়।

তারপরে জমা দেওয়া চিত্রটির একটি অনুলিপি তৈরি করুন যাতে জমা দেওয়া চিত্রটি পরিবর্তন না হয়।

img = cv2.imread (ix, cv2.IMREAD_COLOR) imgtest1 = img.copy ()

পদক্ষেপ 4: ওপেনসিভি ফেস ডিটেক্টর ধূসর চিত্রের প্রত্যাশা করায় চিত্রটিকে ধূসর চিত্রে রূপান্তর করুন।

imgtest = cv2.cvtColor (imgtest1, cv2.COLOR_BGR2GRAY)

পদক্ষেপ 5: এখন ইনপুট হিসাবে চুলের শ্রেণিবদ্ধ প্রশিক্ষণ ফাইল ব্যবহার করে আমাদের মুখের স্বীকৃতি এবং চোখের স্বীকৃতির জন্য আমাদের চুলের শ্রেণিবদ্ধ (ডাউনলোড করা এক্সএমএল ফাইলগুলি) লোড করতে হবে।

ফেসক্যাসেকেড = সিভি 2. ক্যাসকেডক্লাসিফায়ার ('ডি: \\ কেজে \\ নাগেশ \\ ডাউনলোডগুলি \\ মুখ সনাক্তকরণ \\ চুলচেরা_ফ্রন্টালফেস_ডিফাল্ট.এক্সএমএল')
চক্ষু_ক্যাসকেড = সিভি 2. ক্যাসকেডক্লাসিফায়ার ('ডি: \\ কেজে \\ নাগেশ \\ ডাউনলোডগুলি \\ মুখের স্বীকৃতি \\ চুলচেরা_আয়ে.এক্সএমএল')

পদক্ষেপ:: ক্যাসকেডক্লেসিফায়ার সহ কোনও চিত্র থেকে আমরা কীভাবে মুখকে চিনতে পারি?

ওয়েল, ওপেনসিভি থেকে ক্যাসকেডক্ল্যাসিফায়ারটি এখানে আমাদের কাজ আরও সহজ করে তুলেছে, এটি মাল্টিটস্কেল () সনাক্তকরণের জন্য ধন্যবাদ, যা আপনাকে যা প্রয়োজন তা ঠিক করে দেয়।

মাল্টিস্কেল সনাক্ত করুন (চিত্র, স্কেলফ্যাক্টর, মিনিনেইবার্স)

নিম্নলিখিতটি আর্গুমেন্টগুলি যা মাল্টিমেস্কেল () সনাক্ত করতে পাস করা উচিত।

এটি অবজেক্টগুলি সনাক্ত করার জন্য একটি সাধারণ ফাংশন। এই ক্ষেত্রে, আমরা মুখকে ক্যাসকেড বলার পর থেকেই মুখগুলি স্বীকৃত। যখন এটি কোনও মুখ খুঁজে পায়, এটি "আয়তক্ষেত্রাকার (x, y, w, h)" আকারে মুখের অবস্থানগুলির একটি তালিকা ফেরত দেয়। যদি তা না হয় তবে "কিছুই না" ফিরিয়ে দেওয়া হয়।

  • চিত্র: প্রথম ইনপুটটি গ্রেস্কেল চিত্র।
  • স্কেলফ্যাক্টর: এই বৈশিষ্ট্যটি ক্যামেরার কাছাকাছি থাকার কারণে এক মুখের থেকে অন্য মুখের চেয়ে বড় প্রদর্শিত হলে আকারের একটি মিথ্যা উপলব্ধির ক্ষতিপূরণ দেয়।
  • মিনিনিবার্স: সনাক্তকরণ অ্যালগরিদম যা বস্তুগুলি সনাক্ত করতে চলন্ত উইন্ডো ব্যবহার করে। এটি নির্ধারণ করে যে সন্ধানের মুখটি ঘোষণার আগে বর্তমানের নিকটে কতটি বস্তু পাওয়া যায়।
ফেসস = ফেসক্যাসকেড.ডেটেক্ট মাল্টিস্কেল (অনাক্রম্য, স্কেলফ্যাক্টর = 1.2, মিনিটনিবাস = 5)

পদক্ষেপ:: এখন প্রতিটি ছবি থেকে মুখের সংখ্যা মুদ্রণ করুন:

মুদ্রণ ("পাওয়া মুখের মোট সংখ্যা", লেন (মুখ))

পদক্ষেপ 8: মুখের তালিকার মধ্য দিয়ে যান এবং ছবিগুলিতে আয়তক্ষেত্রগুলি আঁকুন। এখানে আমরা মূলত মুখগুলি পাই, মুখগুলি, তাদের আকারগুলি ভাঙ্গি এবং আয়তক্ষেত্র আঁক

(x, y, w, h) মুখের জন্য:
face_detect = cv2.rectangle (imgest, (x, y), (x + w, y + h), (255, 0, 255), 2) রোই_গ্রাই = অনিমূলক [y: y + h, x: x + w] roi_color = imgtest [y: y + h, x: x + w] plt.imshow (face_detect)

পদক্ষেপ 9: পরবর্তী আমরা চোখের সনাক্তকরণ করব এবং মজার অংশটি হ'ল সম্ভবত কোনও চোখের বল খুঁজে পাওয়া যাবে না। বেশিরভাগ চক্ষু সনাক্তকরণের অ্যালগরিদমগুলি পাশাপাশি সনাক্তকরণের জন্য পার্শ্ববর্তী ত্বক, চোখের পাতা, আইল্যাশ এবং ভ্রু ব্যবহার করে।

চোখ = চোখ_ক্যাসকেড.ডিটেক্ট মাল্টিস্কেল (রই_ গ্রে)
চোখের জন্য (উদাঃ ey, ew, eh):
চক্ষু_দেখা = সিভি 2. সত্যরেখা (রই_কালার, (প্রাক্তন, আই), (প্রাক্তন + ইও, ই + এএইচ), (255,0,255), 2)
plt.imshow (চোখের_পরিচালনা)

শেষ পর্যন্ত আমাদের সংস্করণ:

আউটপুট ফাইল: বন্ধুরা.পিএনজিআউটপুট ফাইল: লিওনার্দো.পিএনজিআউটপুট ফাইল: নাগেশ.পিএনজিআউটপুট ফাইল: রাহুল.পিএনজিআউটপুট ফাইল: আমার.পিএনজিআউটপুট ফাইল: শচীন.পিএনজিআউটপুট ফাইল: বিশাক.পিএনজিআউটপুট ফাইল: শাহরুখ.পিএনজিআউটপুট ফাইল: ডগ.পিএনজিআউটপুট ফাইল: download1.PNG

কুল !!! এটা কি তাই না?

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

উপসংহার:

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

মানব দেহের বিভিন্ন অংশ চিহ্নিত করার জন্য অনেকগুলি চুলের শ্রেণিবদ্ধ রয়েছে। এটি এখানে দেখুন।

ঠিক আছে, এই ব্লগে এই সব। পড়ার জন্য আপনাকে ধন্যবাদ :)

আপনার পড়াশুনার সাথে মজা করুন !!!

আপনি লিঙ্কডইনে আমার কাছে পৌঁছাতে পারেন।