সুচিপত্র:

মুখ সনাক্তকরণ+স্বীকৃতি: 8 টি ধাপ (ছবি সহ)
মুখ সনাক্তকরণ+স্বীকৃতি: 8 টি ধাপ (ছবি সহ)

ভিডিও: মুখ সনাক্তকরণ+স্বীকৃতি: 8 টি ধাপ (ছবি সহ)

ভিডিও: মুখ সনাক্তকরণ+স্বীকৃতি: 8 টি ধাপ (ছবি সহ)
ভিডিও: পৃথিবীর সবচেয়ে ভয়ংকর ৮ টি পোকা | এদের দেখলেই দৌড়ে পালান | 8 Most Dangerous Bugs in the World 2024, জুলাই
Anonim
Image
Image
মুখ সনাক্তকরণ+স্বীকৃতি
মুখ সনাক্তকরণ+স্বীকৃতি

এটি একটি ক্যামেরা থেকে ওপেনসিভি দিয়ে মুখ সনাক্তকরণ এবং স্বীকৃতি চালানোর একটি সহজ উদাহরণ। দ্রষ্টব্য: আমি সেন্সর প্রতিযোগিতার জন্য এই প্রকল্পটি তৈরি করেছি এবং ক্যামেরাটি ট্র্যাক এবং রেকগনিশন ফেসের জন্য একটি সেন্সর হিসাবে ব্যবহার করেছি। সুতরাং, আমাদের লক্ষ্য এই অধিবেশনে, 1. অ্যানাকোন্ডা ইনস্টল করুন 2. ওপেন সিভি প্যাকেজ ডাউনলোড করুন 3. এনভায়রনমেন্টাল ভেরিয়েবল সেট করুন 4. পরীক্ষা 5 নিশ্চিত করার জন্য মুখ সনাক্তকরণের জন্য কোড তৈরি করুন 6. ডেটা সেট তৈরির জন্য কোড তৈরি করুন 7. সনাক্তকারীকে প্রশিক্ষণের জন্য কোড তৈরি করুন 8. মুখ এবং ফলাফল চেনার জন্য কোড তৈরি করুন।

ধাপ 1: অ্যানাকোন্ডা ইনস্টল করুন

অ্যানাকোন্ডা ইনস্টল করুন
অ্যানাকোন্ডা ইনস্টল করুন

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

পদক্ষেপ 2: সিভি প্যাকেজ খুলুন

ওপেন সিভি প্যাকেজ ডাউনলোড করুন
ওপেন সিভি প্যাকেজ ডাউনলোড করুন

প্রথমত, সম্পূর্ণ ওপেনসিভি প্যাকেজ ডাউনলোড করতে অফিসিয়াল ওপেনসিভি সাইটে যান। আপনার পছন্দ মতো একটি সংস্করণ বাছুন (2.x বা 3.x)। আমি পাইথন 2.x এবং ওপেনসিভি 2.x এ আছি - প্রধানত কারণ এইভাবে ওপেনসিভি -পাইথন টিউটোরিয়াল সেটআপ/ভিত্তিক।

আমার ক্ষেত্রে, আমি সরাসরি আমার F ড্রাইভে প্যাকেজ (মূলত একটি ফোল্ডার) বের করেছি। (F: / opencv)।

ধাপ 3: পরিবেশগত ভেরিয়েবল সেট করুন

পরিবেশগত ভেরিয়েবল সেট করুন
পরিবেশগত ভেরিয়েবল সেট করুন

Cv2.pyd ফাইলটি কপি এবং পেস্ট করুন

অ্যানাকোন্ডা সাইট-প্যাকেজ ডিরেক্টরি (যেমন F: / Program Files / Anaconda2 / Lib / site-package in my case) রয়েছে পাইথন প্যাকেজ যা আপনি আমদানি করতে পারেন। আমাদের লক্ষ্য হল cv2.pyd ফাইলটি এই ডিরেক্টরিতে কপি এবং পেস্ট করা (যাতে আমরা আমাদের পাইথন কোডগুলিতে আমদানি cv2 ব্যবহার করতে পারি।)

এটি করার জন্য, cv2.pyd ফাইলটি অনুলিপি করুন …

এই OpenCV ডিরেক্টরি থেকে (শুরুর অংশটি আপনার মেশিনে কিছুটা ভিন্ন হতে পারে):

# পাইথন 2.7 এবং 64-বিট মেশিন: F: / opencv / build / python / 2.7 / x64# Python 2.7 এবং 32-bit মেশিন: F: / opencv / build / python / 2.7 / x84

এই অ্যানাকোন্ডা ডিরেক্টরিতে (শুরুর অংশটি আপনার মেশিনে কিছুটা ভিন্ন হতে পারে):

F: / Program Files / Anaconda2 / Lib / সাইট-প্যাকেজ

এই ধাপটি সম্পাদন করার পর আমরা এখন পাইথন কোডে আমদানি cv2 ব্যবহার করতে সক্ষম হব। কিন্তু, এফএফএমপিইজি (ভিডিও কোডেক) কাজ করার জন্য আমাদের এখনও একটু বেশি কাজ করতে হবে (আমাদের ভিডিও প্রসেস করার মত কাজ করতে সক্ষম করতে।)

"আমার কম্পিউটার" (অথবা উইন্ডোজ 8.1 এ "এই পিসি")--এ বাম-ক্লিক করুন "উন্নত" ট্যাব-> "পরিবেশগত ভেরিয়েবলস …" বোতামটি বাম-ক্লিক করুন। একটি নতুন ব্যবহারকারী ভেরিয়েবল যোগ করুন। OpenCV (32-বিট সিস্টেমের জন্য x86 অথবা 64-বিট সিস্টেমের জন্য x64।) আমি বর্তমানে 64-বিট মেশিনে আছি।

32-bitOPENCV_DIRC: / opencv / build / x86 / vc12

64-বিট OPENCV_DIRC: / opencv / build / x64 / vc12

%OPENCV_DIR %\ bin ইউজার ভেরিয়েবল PATH এ যোগ করুন।

উদাহরণস্বরূপ, আমার PATH ব্যবহারকারী ভেরিয়েবল এইরকম দেখায় …

আগে:

F: / Users / Johnny / Anaconda; C: ers Users / Johnny / Anaconda / Script

পরে:

F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin

এই যে আমাদের কাজ শেষ! FFMPEG ব্যবহারের জন্য প্রস্তুত!

ধাপ 4: নিশ্চিত করার জন্য পরীক্ষা করুন

নিশ্চিত করার জন্য পরীক্ষা
নিশ্চিত করার জন্য পরীক্ষা
নিশ্চিত করার জন্য পরীক্ষা
নিশ্চিত করার জন্য পরীক্ষা

আমরা এখন অ্যানাকোন্ডায় (স্পাইডার আইডিই এর মাধ্যমে) এটা করতে পারি কিনা তা পরীক্ষা করতে হবে:

  • OpenCV প্যাকেজ আমদানি করুন
  • FFMPEG ইউটিলিটি ব্যবহার করুন (ভিডিও পড়তে/লিখতে/প্রক্রিয়া করতে)

পরীক্ষা 1: আমরা কি OpenCV আমদানি করতে পারি?

অ্যানাকোন্ডা এখন ওপেনসিভি-পাইথন প্যাকেজ (যেমন, সিভি 2) আমদানি করতে সক্ষম তা নিশ্চিত করতে, আইপিথন কনসোলে এগুলি ইস্যু করুন:

আমদানি cv2

মুদ্রণ cv2._ সংস্করণ_

যদি প্যাকেজ cv2 আমদানি করা হয় ঠিক আছে কোন ত্রুটি ছাড়াই, এবং cv2 সংস্করণ ছাপানো হয়, তাহলে আমরা সবাই ভালো!

পরীক্ষা 2: আমরা কি FFMPEG কোডেক ব্যবহার করতে পারি?

একটি নমুনা রাখুন

input_video.mp4

একটি ডিরেক্টরিতে ভিডিও ফাইল। আমরা পরীক্ষা করতে চাই কিনা আমরা:

  • এই.mp4 ভিডিও ফাইল পড়ুন, এবং
  • একটি নতুন ভিডিও ফাইল লিখুন (.avi বা.mp4 ইত্যাদি হতে পারে)

এটি করার জন্য আমাদের একটি পরীক্ষা পাইথন কোড থাকতে হবে, এটিকে test.py বলে। নমুনার মতো একই ডিরেক্টরিতে রাখুন

input_video.mp4

ফাইল

এই কি

test.py

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

আমদানি cv2

cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = সফলভাবে ভিডিও পড়ুন। মিথ্যা - ভিডিও পড়তে ব্যর্থ। fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) প্রিন্ট আউট। মিথ্যা - ভিডিও লিখতে ব্যর্থ। cap.release () out.release ()

এই পরীক্ষাটি খুবই গুরুত্বপূর্ণ। আপনি যদি ভিডিও ফাইলগুলি প্রসেস করতে চান, তাহলে আপনাকে নিশ্চিত করতে হবে যে Anaconda / Spyder IDE FFMPEG (ভিডিও কোডেক) ব্যবহার করতে পারে। এটি কাজ করতে আমার কয়েক দিন লেগেছে। তবে আমি আশা করি এটি আপনাকে অনেক কম সময় নেবে!:) দ্রষ্টব্য: অ্যানাকোন্ডা স্পাইডার আইডিই ব্যবহার করার সময় আরও একটি গুরুত্বপূর্ণ টিপ। আপনি বর্তমান কাজ ডিরেক্টরি (CWD) চেক নিশ্চিত করুন !!!

ধাপ 5: মুখ সনাক্তকরণের জন্য কোড তৈরি করুন

মুখ সনাক্তকরণের জন্য কোড তৈরি করুন
মুখ সনাক্তকরণের জন্য কোড তৈরি করুন
মুখ সনাক্তকরণের জন্য কোড তৈরি করুন
মুখ সনাক্তকরণের জন্য কোড তৈরি করুন

লক্ষ্য

এই অধিবেশনে,

  • আমরা হার ফিচার-ভিত্তিক ক্যাসকেড ক্লাসিফায়ার ব্যবহার করে মুখ সনাক্তকরণের মূল বিষয়গুলি দেখতে পাব
  • আমরা চোখ সনাক্তকরণ ইত্যাদির জন্য একই প্রসারিত করব

ওপেনসিভিতে হার-ক্যাসকেড সনাক্তকরণ

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

np হিসাবে numpy আমদানি করুন

আমদানি cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2।.xml ') টুপি = cv2 x, y, w, h) মুখে: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = ধূসর [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] চোখ = eye_cascade.detectMultiScale (roi_gray) জন্য (ex, ey, ew, eh) চোখে: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) প্রিন্ট "পাওয়া" +str (লেন (মুখ)) +"মুখ (গুলি)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff যদি k == 27: break cap.release () cv2.destroyAllWindows ()

ধাপ 6: ডেটা সেট তৈরি করতে কোড তৈরি করুন

ডেটা সেট তৈরির জন্য কোড তৈরি করুন
ডেটা সেট তৈরির জন্য কোড তৈরি করুন
ডেটা সেট তৈরির জন্য কোড তৈরি করুন
ডেটা সেট তৈরির জন্য কোড তৈরি করুন

আমরা ফেস রিকগনিশন করছি, তাই আপনার কিছু ফেস ইমেজ লাগবে! আপনি হয় আপনার নিজস্ব ডেটাসেট তৈরি করতে পারেন অথবা উপলব্ধ ফেস ডেটাবেসগুলির মধ্যে একটি দিয়ে শুরু করতে পারেন, https://face-rec.org/databases/ আপনাকে একটি আপ-টু-ডেট ওভারভিউ দেয়। তিনটি আকর্ষণীয় উপাত্ত হল (বর্ণনার অংশগুলি https://face-rec.org থেকে উদ্ধৃত করা হয়েছে):

  • AT&T Facedatabase
  • ইয়েল ফেসডাটাবেস এ
  • বর্ধিত ইয়েল ফেসডাটাবেস খ

এখানে আমি আমার নিজের ডেটাসেট ব্যবহার করছি…। কোডের সাহায্যে নিচে দেওয়া হল:

np হিসাবে numpy আমদানি করুন

আমদানি করুন cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('user id' লিখুন) যখন 1: ret, img = cap.read () ধূসর = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (ধূসর, 1.3, 5) এর জন্য (x, y, w, h) মুখে: নমুনা N = নমুনা N+1; cv2.imwrite ("F:/Program Files/project/face_rec/facesData/User।"+str (id)+"।"+str (sampleN)+".jpg", ধূসর [y: y+h, x: x+w]) cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) যদি sampleN> 20: break cap.release () cv2.destroyAllWindows ()

ধাপ 7: শনাক্তকারীকে প্রশিক্ষণের জন্য কোড তৈরি করুন

সনাক্তকারীকে প্রশিক্ষণের জন্য কোড তৈরি করুন
সনাক্তকারীকে প্রশিক্ষণের জন্য কোড তৈরি করুন

প্রশিক্ষণ সেট প্রস্তুত করতে ফাংশন তৈরি করুন

এখন, আমরা একটি ফাংশন সংজ্ঞায়িত করব

getImagesWithID (পথ)

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

এখন নীচে দেওয়া কোডের সাহায্যে ডেটাসেট মুখগুলি (যা ধাপ 6 এ তৈরি করা হয়েছে).yml ফাইলে রূপান্তর করুন:

আমদানি ওএস

পিআইএল আমদানি চিত্র থেকে np আমদানি cv2 হিসাবে numpy আমদানি করুন # মুখ সনাক্তকরণের জন্য আমরা LBPH ফেস রেকগনাইজার সনাক্তকারী = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/facesData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (path) face = IDs = imagePath in imagePaths: # ছবিটি পড়ুন এবং গ্রেস্কেল faceImg = Image.open (imagePath).convert ('L') faceNP = np.array (facesImg, 'uint8') # ইমেজ আইডি = int এর লেবেল পান (ID) cv2.imshow ("ট্রেনিং এর জন্য মুখ যোগ করা", faceNP) cv2.waitKey (10) np.array (IDs), face id, face = getImagesWithID (path) identizer.train (face, Ids) identizer.save ("F:/Program Files/project/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()

এই কোডটি ব্যবহার করে সমস্ত ফেস ডেটাসেট একক.yml ফাইলে রূপান্তরিত হয়…..পথের অবস্থান হল ("F:/Program Files/project/face_rec/faceREC/trainingdata.yml")

ধাপ 8: মুখ এবং ফলাফল চিনতে কোড তৈরি করুন

গাইজ এটিই চূড়ান্ত ধাপ যেখানে আমরা আপনার ওয়েবক্যামের সাহায্যে মুখগুলি চিনতে কোড তৈরি করতে পারি এই পদক্ষেপটি দুটি অপারেশন যা পারফর্ম করতে যাচ্ছে…। 1. ক্যাম থেকে ভিডিও ক্যাপচার করা 2. আপনার.yml ফাইলের সাথে তুলনা করুন

npimport cv2 face_cascade = cv2 হিসাবে numpy আমদানি করুন। rec.load ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) যখন 1: ret, img = cap। img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (ধূসর [y: y+h, x: x+w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "gaurav" if id = = 5: id = 'rahul' যদি id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255) cv2.imshow ('img', img) যদি cv2.waitKey (1) == ord ('q'): break cap.release ()

cv2.destroyAllWindows ()

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

প্রস্তাবিত: