Ail Ahmed نشر 21 يناير أرسل تقرير نشر 21 يناير هو ليه دكتور ديفيد ميلان في كور CS50 ما عملش face_locations ال صوره malan.png وعمل علي طول face_encodings ملحوظ صور malan.png تحتوي علي وجه واحد وليه فيه الصور التاني ولو تكون مثل Harvard.jpg عمل face_locations وبعد كده عمل face_encodings معه العلم انا Harvard.jpg تحتوي علي اكثر من وجه وليه عند صورة ميلان وعند face_encodings("malan.png") و حص index[0] ,ومعملش كده فيه صورة Harvard.jpg والكود اهو import face_recognition from PIL import Image , ImageDraw import numpy # File Image malan = face_recognition.load_image_file("Malan.png") harvard = face_recognition.load_image_file("Harvard.jpg") # encodings harvard_locations = face_recognition.face_locations(harvard) harvard_encodings = face_recognition.face_encodings(harvard , harvard_locations) malan_encodings = face_recognition.face_encodings(malan)[0] اقتباس
0 El Sayed El Tohamy نشر 21 يناير أرسل تقرير نشر 21 يناير (معدل) السطر المستخدم في تشفير صورة Malan يقوم بتشفير وجهًا واحدًا فقط، الذي هو صورة Malan ولكنه يقوم بالبحث عن جميع أماكن الأوجه بالصورة الثانية ويقوم بتشفيرها جميعًا هذا السيناريو يستخدم عندما تكون صورة Malan تحتوي على وجهٍ واحد (الذي هو وجه Malan)، لذلك لا نحتاج للبحث عن أماكن الأوجه حيث لا يوجد إلا وجه واحد نعرفه، والمفترض الذي سنستخدمه فيما بعد للتعرف عليه واستخراجه من الصورة الثانية Harvard باختصار، نستخدم صورة Malan لمعرفة تشفير وجهه، ثم نستخدم الصورة الثانية Harvard لاستخراج Malan من بين أصدقائه. # encodings # البحث عن جميع الأماكن التي يوجد بها أوجه harvard_locations = face_recognition.face_locations(harvard) # تشفير كل الأوجه الموجودة في هذه الأماكن harvard_encodings = face_recognition.face_encodings(harvard , harvard_locations) # تشغير وجهًا واحدًا وهو يعبر عن وجه مولان # (الذي في الغالب لن يوجد غيره بهذه الصورة، أو قد يكون هناك عدة أوجه ولكن كلها له) # تم استخدام [0] لأن الوظفية تعود بقائمة من المصفوفات، # list of arrays # فنحن نريد المصفوفة الأولى malan_encodings = face_recognition.face_encodings(malan)[0] لاحظ أن هذه الطريقة قد تسبب مشكلة إذا احتوت الصورة Malan على أوجه لأناس مختلفين، لأنه في هذه الحالة سيقوم بتشفير أول وجه بالصورة، وقد لا يكون وجه Malan. تم التعديل في 21 يناير بواسطة El Sayed El Tohamy 1 اقتباس
0 Ail Ahmed نشر 21 يناير الكاتب أرسل تقرير نشر 21 يناير بتاريخ 33 دقائق مضت قال El Sayed El Tohamy: السطر المستخدم في تشفير صورة Malan يقوم بتشفير وجهًا واحدًا فقط، الذي هو صورة Malan ولكنه يقوم بالبحث عن جميع أماكن الأوجه بالصورة الثانية ويقوم بتشفيرها جميعًا هذا السيناريو يستخدم عندما تكون صورة Malan تحتوي على وجهٍ واحد (الذي هو وجه Malan)، لذلك لا نحتاج للبحث عن أماكن الأوجه حيث لا يوجد إلا وجه واحد نعرفه، والمفترض الذي سنستخدمه فيما بعد للتعرف عليه واستخراجه من الصورة الثانية Harvard باختصار، نستخدم صورة Malan لمعرفة تشفير وجهه، ثم نستخدم الصورة الثانية Harvard لاستخراج Malan من بين أصدقائه. # encodings # البحث عن جميع الأماكن التي يوجد بها أوجه harvard_locations = face_recognition.face_locations(harvard) # تشفير كل الأوجه الموجودة في هذه الأماكن harvard_encodings = face_recognition.face_encodings(harvard , harvard_locations) # تشغير وجهًا واحدًا وهو يعبر عن وجه مولان # (الذي في الغالب لن يوجد غيره بهذه الصورة، أو قد يكون هناك عدة أوجه ولكن كلها له) # تم استخدام [0] لأن الوظفية تعود بقائمة من المصفوفات، # list of arrays # فنحن نريد المصفوفة الأولى malan_encodings = face_recognition.face_encodings(malan)[0] لاحظ أن هذه الطريقة قد تسبب مشكلة إذا احتوت الصورة Malan على أوجه لأناس مختلفين، لأنه في هذه الحالة سيقوم بتشفير أول وجه بالصورة، وقد لا يكون وجه Malan. تمام انا فهمت الجزاء الاول ممكن طيب كده افهم اليه الجزاء التاني اول هو اي الفرق بين Compare_faces و face_distance والجزاء التاني اهو for(top ,right, bottom , left) , face_encoding in zip(harvard_locations , harvard_encodings): matches = face_recognition.compare_faces([malan_encoding] , face_encoding) face_distance = face_recognition.face_distance([malan_encoding] , face_encoding) best_match_index = numpy.argmin(face_distance) وفيه السطر matches ليه اول قيمه موجود بين list وكمان هو اجاي فيه الخر كده وكتب del draw برد الحلقة forليه يعني اقتباس
0 El Sayed El Tohamy نشر 21 يناير أرسل تقرير نشر 21 يناير كما توقعنا، الجزء التالي مفترض يكون المقارنة بين الوجه المعروف والأوجه الغير معروفة. الآن لدينا تشفير لصورة Malan، ولدينا قائمة بأماكن وتشفيرات الصورة الموجودة بصورة Harvard الحلقة التكرارية تقوم بالدوران على كل صورة بالقائمة Harvard وتقوم بمقارنتها مع صورة Malan عن طريق الوظيفة compare_faces التي تعود بقيمة True or false في الحقيقة يجب أن نوضح الوظيفة compare_faces بشكل أعمق حتى نفهمها ونستطيع استخدامها بشكل صحيح، هذه الوظيفة تحتاج معاملين: الأول عبارة عن قائمة list تحتوي على تشفيرات الأوجه المعروفة (في حالتنا هذه تحتوي على عنصر واحد فقط وهو تشفير وجه Malan) الثاني عبارة عن تشفير للوجه المراد اختباره مقابل القائمة المعروفة وتعود هذه الوظيفة بقائمة من القيم المنطقية True/False التي تعبر عن تطابق أو عدم تطابق الوجه المختبر مع كل وجه من القائمة المعروفة، في حالتنا ستحتوي هذه القائمة على عنصر واحد فقط، ولكن إذا افترضنا أن لدينا ثلاثة أوجه معروفة، ففي هذه الحالة ستعود الوظيفة بقائمة تحتوي على ثلاثة عناصر. أما الوظيفة face_distance فهي تعمل بشكل مشابه للوظيفة face_compare ولكنها تعود بقائمة تحتوي على قيم عددية بين 0 و 1، هذه القيم تعبر عن البعد بين الصور المعروفة والصورة المختبرة، كلما قلّت القيمة كلما كان أكثر تشابهًا، لذلك القيمة 0 تعني لا توجد مسافة (أي تطابق تام). في حالتنا بالتأكيد ستعود بقيمة واحدة لأن لدينا صورة واحدة معروفة، أما لو كان هناك أكثر من صورة فستعود بقائمة بها عدد عناصر يساوي عدد الصور ويعبر عن مدى بعد الصورة المختبرة عن كل صورة معروفة. السطر الثالث يعود برقم العنصر الأقل مسافة (أي الأكثر تشابهًا) 1 اقتباس
0 Ail Ahmed نشر 21 يناير الكاتب أرسل تقرير نشر 21 يناير بتاريخ 29 دقائق مضت قال El Sayed El Tohamy: كما توقعنا، الجزء التالي مفترض يكون المقارنة بين الوجه المعروف والأوجه الغير معروفة. الآن لدينا تشفير لصورة Malan، ولدينا قائمة بأماكن وتشفيرات الصورة الموجودة بصورة Harvard الحلقة التكرارية تقوم بالدوران على كل صورة بالقائمة Harvard وتقوم بمقارنتها مع صورة Malan عن طريق الوظيفة compare_faces التي تعود بقيمة True or false في الحقيقة يجب أن نوضح الوظيفة compare_faces بشكل أعمق حتى نفهمها ونستطيع استخدامها بشكل صحيح، هذه الوظيفة تحتاج معاملين: الأول عبارة عن قائمة list تحتوي على تشفيرات الأوجه المعروفة (في حالتنا هذه تحتوي على عنصر واحد فقط وهو تشفير وجه Malan) الثاني عبارة عن تشفير للوجه المراد اختباره مقابل القائمة المعروفة وتعود هذه الوظيفة بقائمة من القيم المنطقية True/False التي تعبر عن تطابق أو عدم تطابق الوجه المختبر مع كل وجه من القائمة المعروفة، في حالتنا ستحتوي هذه القائمة على عنصر واحد فقط، ولكن إذا افترضنا أن لدينا ثلاثة أوجه معروفة، ففي هذه الحالة ستعود الوظيفة بقائمة تحتوي على ثلاثة عناصر. أما الوظيفة face_distance فهي تعمل بشكل مشابه للوظيفة face_compare ولكنها تعود بقائمة تحتوي على قيم عددية بين 0 و 1، هذه القيم تعبر عن البعد بين الصور المعروفة والصورة المختبرة، كلما قلّت القيمة كلما كان أكثر تشابهًا، لذلك القيمة 0 تعني لا توجد مسافة (أي تطابق تام). في حالتنا بالتأكيد ستعود بقيمة واحدة لأن لدينا صورة واحدة معروفة، أما لو كان هناك أكثر من صورة فستعود بقائمة بها عدد عناصر يساوي عدد الصور ويعبر عن مدى بعد الصورة المختبرة عن كل صورة معروفة. السطر الثالث يعود برقم العنصر الأقل مسافة (أي الأكثر تشابهًا) اول شكراا جدا علي المعلومات القيمه تاني حاجه انا ما بكتب الكود ده print(face_distance) برجع بقيمه 0 فا انا ما كنتش فاهم اي 0 ده بس الحمد الله دلوقتي فهمت وكمان انا كتب الكود ده print(matches) رجع لكو False ما فيش Ture خالص معني كده انا الصور التاني مش موجود فيه David Malan صح كده اقتباس
0 Ail Ahmed نشر 21 يناير الكاتب أرسل تقرير نشر 21 يناير بتاريخ 36 دقائق مضت قال Ail Ahmed: اول شكراا جدا علي المعلومات القيمه تاني حاجه انا ما بكتب الكود ده print(face_distance) برجع بقيمه 0 فا انا ما كنتش فاهم اي 0 ده بس الحمد الله دلوقتي فهمت وكمان انا كتب الكود ده print(matches) رجع لكو False ما فيش Ture خالص معني كده انا الصور التاني مش موجود فيه David Malan صح كده كان فيه مشكله فيه االصوره مش واضح خالص بس الحمد الله تمام دلوقتي وده الكود import face_recognition from PIL import Image , ImageDraw import numpy # File Image malan = face_recognition.load_image_file("Malan.png") harvard = face_recognition.load_image_file("Harvard.jpg") # encodings harvard_locations = face_recognition.face_locations(harvard) harvard_encodings = face_recognition.face_encodings(harvard , harvard_locations) malan_encoding = face_recognition.face_encodings(malan)[0] # file Image Pillow img = Image.fromarray(harvard) draw = ImageDraw.Draw(img) # for loop faces for(top ,right, bottom , left) , face_encoding in zip(harvard_locations , harvard_encodings): matches = face_recognition.compare_faces([malan_encoding] , face_encoding) face_distance = face_recognition.face_distance([malan_encoding] , face_encoding) best_match_index = numpy.argmin(face_distance) if matches[best_match_index]: draw.rectangle(((left , top) , (right , bottom)) , outline=(0,255,0) , width=5) else: draw.rectangle(((left , top) , (right , bottom)) , outline=(255,0,0) , width=5) del draw img.show() بس اخر سوال السطر القبل الاخير الهو del draw هو ليه عامل كده يعني 1 اقتباس
0 El Sayed El Tohamy نشر 21 يناير أرسل تقرير نشر 21 يناير السطر الأخير يقوم بحذف الكائن draw الذي تم تعريفه مسبقًا، وذلك لتحسين الأداء وتفريغ الذاكرة، بعدما قام بمهمته، وهو يستخدم لرسم أشكال بسيطة وكتابة نص بسيط على الصور. 1 اقتباس
0 Ail Ahmed نشر 21 يناير الكاتب أرسل تقرير نشر 21 يناير بتاريخ 5 دقائق مضت قال El Sayed El Tohamy: السطر الأخير يقوم بحذف الكائن draw الذي تم تعريفه مسبقًا، وذلك لتحسين الأداء وتفريغ الذاكرة، بعدما قام بمهمته، وهو يستخدم لرسم أشكال بسيطة وكتابة نص بسيط على الصور. تمام شكرااا اوي والله ربنا يخليك يارب انا اتعلم كثير اوي الحمد الله اقتباس
السؤال
Ail Ahmed
هو ليه دكتور ديفيد ميلان في كور CS50 ما عملش face_locations ال صوره malan.png وعمل علي طول face_encodings ملحوظ صور malan.png تحتوي علي وجه واحد
وليه فيه الصور التاني ولو تكون مثل Harvard.jpg عمل face_locations وبعد كده عمل face_encodings معه العلم انا Harvard.jpg تحتوي علي اكثر من وجه
وليه عند صورة ميلان وعند face_encodings("malan.png") و حص index[0] ,ومعملش كده فيه صورة Harvard.jpg
والكود اهو
7 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.