- كيف يمكنك عملياً تحديد الوجوه ومقارنتها باستخدام خدمة Amazon Rekognition؟
- لماذا خدمة أمازون ريكوغنيشن؟
- البنية العامة وسير العمل
- الإعداد الأولي (AWS CLI، IAM، S3)
- أمثلة عملية باستخدام بايثون (boto3)
- نصائح عملية للنشر والأمان والخصوصية
- متى تستخدم خادم وحدة معالجة الرسومات (GPU) الخاص بك أو طرازه؟
- أفضل التكوينات ومقارنات المواقع لتقليل زمن الاستجابة
- المراقبة، والتسعير، والتحسين
- نسخة Docker ونشر بسيط
- الخلاصة - الفوائد والتحذيرات
- الأسئلة الشائعة
كيف يمكنك عملياً تحديد الوجوه ومقارنتها باستخدام خدمة Amazon Rekognition؟
يوضح هذا الدليل بطريقة عملية وتقنية كيفية استخدام أمازون ريكوغنيشن معالجة الصور والفيديوهات للتعرف على الوجوه، وتحليل السمات (مثل العمر التقريبي، وتعبيرات الوجه، والنظارات، والمشاعر)، ومقارنة الوجوه أو البحث عنها في مجموعة من الصور. كما تتناول هذه الدورة أساليب النشر، والأمان، والمقارنة مع التطبيقات المستضافة ذاتيًا على خوادم GPU، ونصائح لتحسين الشبكة (CDN، وBGP، وأكثر من 85 موقعًا).
لماذا خدمة أمازون ريكوغنيشن؟
أمازون ريكوغنيشن خدمة مُدارة من AWS للرؤية الآلية توفر واجهات برمجة تطبيقات جاهزة للتعرف على الوجوه، وتصنيف الصور، والتعرف على النصوص، وتحليل الفيديو، ومراجعة سلامة المحتوى.
- المزايا:
- جاهز للاستخدام، لا حاجة لتدريب النموذج الأساسي.
- التوسع التلقائي لخدمات AWS واتفاقيات مستوى الخدمة (SLAs).
- التكامل مع S3 و Lambda و SNS و CloudWatch و CloudTrail.
- قدرات مثل إندكس فيسز و البحث عن الوجوه بالصورة.
- العيوب المحتملة:
- التكلفة بكميات كبيرة.
- قضايا إدارة البيانات والحاجة إلى اختيار المنطقة المناسبة للامتثال التنظيمي.
البنية العامة وسير العمل
تتضمن البنية النموذجية لمعالجة الوجوه باستخدام برنامج Rekognition الخطوات التالية:
- قم بتحميل الصورة/الفيديو إلى S3 (أو أرسلها مباشرة إلى واجهة برمجة التطبيقات).
- استدعاء واجهة برمجة التطبيقات مثل كشف الوجوه، قارن الوجوه أو بدء عملية الكشف عن الوجه للفيديو.
- المعالجة غير المتزامنة للفيديو: يقوم برنامج Rekognition بتسليم المخرجات إلى SNS/SQS/Lambda.
- قم بتخزين النتائج في قاعدة البيانات (DynamoDB/Postgres) وعرضها في لوحة تحكم الويب.
يمكن تحسين هذا التدفق باستخدام شبكة توصيل المحتوى (CDN) ونقاط نهاية VPC ومسارات BGP عبر شبكة تضم أكثر من 85 موقعًا لتحسين زمن الاستجابة والأداء.
الإعداد الأولي (AWS CLI، IAM، S3)
تثبيت وتكوين واجهة سطر الأوامر AWS
أمثلة على الأوامر في توزيعات Debian/Ubuntu:
sudo apt update
sudo apt install -y awscli
aws configure
# Enter AWS Access Key, Secret Key, region, and output format (json)نموذج لسياسة إدارة الهوية والوصول (IAM) - أقل قدر من الوصول للتعرف
مثال على سياسة JSON التي توفر لـ Rekognition الأذونات المطلوبة وإمكانية الوصول للقراءة/الكتابة إلى حاوية محددة:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"rekognition:DetectFaces",
"rekognition:CompareFaces",
"rekognition:IndexFaces",
"rekognition:SearchFacesByImage",
"rekognition:StartFaceDetection",
"rekognition:GetFaceDetection"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}أمثلة عملية باستخدام بايثون (boto3)
ملحوظة: قم بتكوين awscli قبل التشغيل أو قم بتعيين متغيرات البيئة AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY.
الكشف عن الوجوه في الصور (DetectFaces)
نموذج كود بايثون لاستدعاء DetectFaces:
import boto3
rek = boto3.client('rekognition', region_name='us-east-1')
with open('person.jpg','rb') as img:
resp = rek.detect_faces(Image={'Bytes': img.read()}, Attributes=['ALL'])
print(resp)تُعيد هذه الطريقة معلومات مثل العمر المُقدّر، وموضع العين/الفم، والحالة العاطفية، وإحداثيات المربع المحيط.
قارن بين وجهين (CompareFaces)
مثال بسيط لمقارنة صورتين وقراءة قيمة التشابه:
import boto3
rek = boto3.client('rekognition')
with open('source.jpg','rb') as s, open('target.jpg','rb') as t:
resp = rek.compare_faces(SourceImage={'Bytes': s.read()}, TargetImage={'Bytes': t.read()})
for match in resp['FaceMatches']:
print(match['Similarity'], match['Face']['BoundingBox'])معيار هام: عتبة التشابه — رقم بين 0 و100 يحدد درجة التشابه.
إنشاء مجموعة والبحث (IndexFaces + SearchFacesByImage)
نموذج لإنشاء مجموعة، وإضافة صورة، والبحث عن الوجوه:
import boto3
rek = boto3.client('rekognition')
# Create collection
rek.create_collection(CollectionId='employees')
# Index a face
with open('employee1.jpg','rb') as img:
rek.index_faces(CollectionId='employees', Image={'Bytes': img.read()}, ExternalImageId='emp1')
# Search by image
with open('unknown.jpg','rb') as img:
resp = rek.search_faces_by_image(CollectionId='employees', Image={'Bytes': img.read()}, MaxFaces=5, FaceMatchThreshold=85)
print(resp['FaceMatches'])يُعد هذا النمط مفيدًا لأنظمة تسجيل الوصول/المغادرة أو أنظمة تعريف العملاء.
التعرف على الوجوه في الفيديو (Rekognition Video)
التدفق العام: تحميل الفيديو إلى S3، استدعاء start_face_detection، الحصول على JobId وقراءة النتائج باستخدام get_face_detection أو استخدام SNS للإشعارات.
import boto3
rek = boto3.client('rekognition')
job = rek.start_face_detection(Video={'S3Object':{'Bucket':'mybucket','Name':'video.mp4'}})
job_id = job['JobId']
# Poll for results or use SNS to receive completion notification
resp = rek.get_face_detection(JobId=job_id)
print(resp)نصائح عملية للنشر والأمان والخصوصية
بعض القواعد الأساسية:
- أقل الامتيازات: تقييد صلاحيات أدوار إدارة الهوية والوصول (IAM) إلى الحد الأدنى.
- نقطة نهاية الشبكة الافتراضية الخاصة (VPC): استخدم نقطة نهاية VPC للوصول إلى S3 و Rekognition بحيث لا تعبر حركة المرور الإنترنت العام.
- التسجيل والتدقيق: قم بتمكين CloudTrail لتسجيل مكالمات Rekognition والوصول إلى S3.
- بيانات حساسة: للامتثال للائحة العامة لحماية البيانات أو القوانين المحلية، حدد المنطقة المناسبة وقم بتقييد الاحتفاظ بالبيانات.
- خصوصية المستخدم: للاستخدام العام لتقنية التعرف على الوجوه، الموافقة المستنيرة استلام وتحديد سياسات حذف البيانات.
متى تستخدم خادم وحدة معالجة الرسومات (GPU) الخاص بك أو طرازه؟
يُعد Amazon Rekognition مناسبًا للمهام السريعة والقابلة للإدارة، ولكن من الأفضل تشغيل النموذج على خادم GPU في الحالات التالية:
- يتطلب تخصيصًا عاليًا (على سبيل المثال، ArcFace أو FaceNet مع ضبط دقيق على مجموعة البيانات الداخلية).
- الحاجة إلى السيطرة الكاملة على البيانات (موقع البيانات).
- التكلفة العالية عند الأحجام الكبيرة والحاجة إلى زمن استجابة منخفض للغاية (الاستدلال في الوقت الحقيقي على الحافة).
اقتراح بشأن الأجهزة:
- الاستدلال الحساس للتأخير: NVIDIA T4 أو RTX 4000/5000.
- التدريب أو الضبط الدقيق: NVIDIA A100 أو V100.
- القرص: محرك أقراص الحالة الصلبة NVMe ذو معدل إدخال/إخراج عالٍ.
- شبكة: بسرعة 10 جيجابت في الثانية أو أعلى، واستخدام بروتوكول BGP/CDN لتقليل زمن استجابة التحميل.
نقدم خوادم GPU وخوادم سحابية مع شبكة عالمية تضم أكثر من 85 موقعًا، وهي مناسبة لنشر نماذج مخصصة للتطبيقات في الوقت الفعلي.
أفضل التكوينات ومقارنات المواقع لتقليل زمن الاستجابة
نصائح عملية لتقليل زمن الاستجابة:
- بالنسبة للتطبيقات الحساسة للتأخير، انشر المستخدمين والخوادم في أقرب موقع. تتيح لك شبكتنا التي تضم أكثر من 85 موقعًا ومسارات BGP اختيار مركز البيانات الأقرب إلى عميلك.
- بالنسبة للتداول أو التطبيقات الحساسة: يوصى بنشر خادم معالجة الصور في موقع قريب من خادم التبادل/الوجهة واستخدام CDN و VPC Peering.
- بالنسبة للتطبيقات التي تعتبر فيها الخصوصية مهمة: تخزين البيانات ومعالجتها في موقع بلد المستخدم (موقع إقامة البيانات).
مقارنة عامة:
- الموقع القريب من المستخدم: أقل زمن استجابة وتكاليف أقل لعرض النطاق الترددي للإنترنت.
- موقع مزود بوحدة معالجة رسومية: مناسب للاستدلال/التدريب.
- موقع مزود بمسارات BGP مخصصة: استقرار أعلى وتحمل أكبر للأعطال.
المراقبة، والتسعير، والتحسين
- تخفيض التكاليف: استخدم وضع عدم الاتصال في برنامج Rekognition وجدولة خارج أوقات الذروة لمعالجة مقاطع الفيديو دفعة واحدة.
- التخزين المؤقت: قم بتخزين نتائج الكشف مؤقتًا في Redis لتقليل تكاليف واجهة برمجة التطبيقات للطلبات المتكررة.
- يراقب: استخدم مقاييس CloudWatch والتنبيهات لمراقبة معدلات الخطأ والتكاليف.
- ضبط الدقة: قم بضبط عتبات التشابه وفقًا لمعدل النتائج الإيجابية/السلبية الخاطئة؛ استخدم عتبات أعلى (>90) للأنظمة الحساسة أمنيًا.
نسخة Docker ونشر بسيط
مثال على ملف Dockerfile لتطبيق بايثون يستخدم Rekognition:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python","app.py"]يمكنك تشغيل هذه الحاوية على خادم افتراضي خاص أو خادم سحابي بشبكة سريعة وإدارة حركة المرور باستخدام موازن التحميل والتوسع التلقائي.
الخلاصة - الفوائد والتحذيرات
أمازون ريكوغنيشن يُعدّ هذا خيارًا سريعًا وقابلًا للتطوير للتعرف على الوجوه وتحليلها ومقارنتها. إذا كنت بحاجة إلى تخصيص البيانات، أو إدارة البيانات، أو زمن استجابة منخفض للغاية، فإن استخدام خادم وحدة معالجة الرسومات (GPU) والنماذج الأصلية (مثل ArcFace) يُعدّ خيارًا مناسبًا.
لاختيار أفضل مزيج (مثل خادم افتراضي خاص للتداول، أو خادم وحدة معالجة الرسومات للذكاء الاصطناعي، أو نشر آمن مع حماية من هجمات DDoS وشبكة توصيل المحتوى في أكثر من 85 موقعًا)، يمكنك تقديم طلب لمراجعة احتياجاتك للحصول على بنية وتسعير مخصصين.









