معرفی بخش‌های مختلف کد نمونه (Sample Code)

در این راهنما، بخش‌های مختلف کد نمونه (sample code) که در بخش دریافت محتوا در پروفایل تیم‌های شرکت‌کننده قرار داده شده است مورد بررسی قرار می‌گیرد. پوشه sample code شامل موارد نشان داده شده در شکل (1) است.

image

محتویات قرار داده شده در پوشه utils شامل کدهای توابع لازم جهت اجرا در کد نمونه (sample.py) می‌باشد. فایل Dockerfile در کنار کد نمونه جهت آپلود کد نمونه در پروفایل شرکت‌کنندگان الزامی است. محتویات فایل متنی ReadMe.txt شامل دستورات لازم جهت استفاده در اجرای کد نمونه در قالب docker می‌باشد. فایل متنی requirements.txt شامل پکیج‌های مورد نیاز اجرای کد می‌باشد که در زمان اجرای کد نمونه در قالب docker مورد نیاز است.
با توجه به اینکه کد نمونه از یک فایل کد اصلی به نام sample.py و سایر توابع که در کد اصلی فراخوانی می‌شوند (محتویات پوشه utils) تشکیل شده است، لذا در ابتدا به معرفی بخش‌های مختلف کد اصلی می‌پردازیم. شکل (2) نشان‌دهنده‌ی بخش اول در کد اصلی (sample.py) می‌باشد. در ابتدا کتابخانه‌ها و توابع مورد نیاز که در کد نمونه استفاده گردیده است فراخوانی می‌شوند. در این کد نمونه، سه تابع مختلف زیر که در پوشه utils قرار داده شده‌اند، فراخوانی شده است:
-FeatureExtraction.py
-Match.py
-Clustering.py
ذکر این نکته ضروری است که در هر یک از توابع کدهای فوق، تمامی توضیحات مراحل مختلف اجرای آنها بصورت کامنت در هر کد آورده شده است.
شکل (2) نشان‌دهنده‌ی بخش اول کد sample.py می‌باشد.

image

در ادامه‌ی کد نمونه، نحوه دریافت تصاویر پایگاه داده پیاده‌سازی شده است. در صورتیکه مایل به اجرای کد نمونه بر روی پایگاه داده نمونه (شامل 899 تصویر) هستید، خط 12 کد نمونه را از حالت کامنت خارج نموده و خط 14 کد را کامنت نمائید. در این حالت، می‌توانید مطابق آنچه که در فایل راهنمای ساخت داکر آمده است (قابل دانلود از پروفایل شرکت‌کنندگان)، مراحل مختلف اجرای کد نمونه بر روی پایگاه داده نمونه را انجام دهید. اما در صورتیکه بخواهید کد نمونه را بر روی تصاویر پایگاه داده اصلی اجرا نمائید، کد نمونه بطوریکه در شکل (3) نمایش داده شده است قابل اجرا می‌باشد. در ادامه، نام تصاویر موجود در پایگاه داده و نیز تعداد تصاویر پایگاه داده استخراج می‌گردد.

image

در ادامه‌ی فرایند اجرای کد نمونه، خطوط بعدی کد نمونه توضیح داده می‌شوند.
شکل (4) نشان‌دهنده‌ی بخش فراخوانی تصاویر پایگاه داده و سپس استخراج ویژگی از هر یک از تصاویر پایگاه داده می‌باشد. به این ترتیب که در ابتدا عناوین تمامی تصاویر فراخوانی شده در متغیر images_names ذخیره می‌گردد (از این متغیر در انتهای کد استفاده شده است)، سپس از هر یک از تصاویر فراخوانی شده بردار ویژگی استخراج می‌گردد (خط 33 کد نمونه). در واقع تابع Image_Feature معرف مدل استخراج ویژگی بکار گرفته شده می‌باشد که می‌بایست در این بخش از کد فراخوانی گردد تا در نهایت به ازای هر تصویر ورودی، یک بردار ویژگی حاصل گردد. در نهایت بردارهای ویژگی مستخرج از تمامی تصاویر پایگاه داده در متغیر Extracted_Features ذخیره می‌شوند تا در مرحله بعد از آن استفاده گردد. ذکر این نکته ضروری است که بردار ویژگی که پس از اجرای کد نمونه به ازای هر تصویر تولید می‌شود دارای مقادیر تصادفی می‌باشد. هر تیم شرکت‌کننده می‌بایست کد مربوط به مدل استخراج ویژگی خود را در این بخش جایگزین نماید.
لازم به ذکر است که الگوریتم تشخیص چهره نیز می‌تواند قبل از فرایند استخراج ویژگی در کد نهایی شرکت‌کنندگان اضافه گردد.

image

در ادامه، ماتریس ویژگی‌های استخراج شده جهت انجام فرایند matching به عنوان ورودی تابع Match_Matrix اعمال می‌گردد. شکل (5) نشان دهنده‌ی محاسبه ماتریس match از ماتریس ویژگی‌های استخراج شده از تصاویر پایگاه داده در کد نمونه می‌باشد. لازم به ذکر است که خروجی این بخش نیز در کد نمونه بصورت تولید اعداد تصادفی می‌باشد. مشابه با بخش قبل، شرکت‌کنندگان می‌بایست تابع match خود را جایگزین این بخش از کد نمونه نمایند.

image

در شکل (6) نحوه انجام خوشه‌بندی (Clustering) و تولید فایل .csv نهایی نشان داده شده است. به اینصورت که در خط 47، الگوریتم خوشه‌بندی فراخوانی شده بر روی ماتریس match حاصل از مرحله قبل اعمال می‌گردد. خروجی این مرحله شامل برچسب‌های (لیبل‌های) هر یک از تصاویر می‌باشد. مشابه با مراحل قبل در کد نمونه، برچسب‌های تولید شده در این بخش نیز بصورت اعداد تصادفی می‌باشند. تیم‌های شرکت‌کننده در مسابقه می‌بایست الگوریتم خوشه‌بندی خود را پس از فراخوانی، در خط 47 کد نمونه جایگذاری نمایند.

image

در خط 50 کد نمونه، اسامی کلیه‌ی تصاویر فراخوانی شده به همراه برچسب‌های حاصل از الگوریتم خوشه‌بندی تجمیع شده تا در نهایت در خطوط 51 تا 53، فایل .csv نهایی مطابق با فرمت بیان شده در قوانین فنی مسابقه تولید گردد. لازم به ذکر است که فایل نهایی در کد نمونه با عنوان TeamNameClustering.csv تولید و ذخیره می‌گردد، در حالی‌که در صورت اجرای کد نمونه توسط تیم‌های شرکت‌کننده در مسابقه، می‌بایست این نام (در خطوط 52 و 53 کد) به نام تیم مورد نظر تغییر یابد.
بخش نهایی کد نمونه در شکل (7) نشان داده شده است. در صورت اجرای کد نمونه بر روی تصاویر پایگاه داده نمونه، نیاز به اجرای این بخش از کد نمونه نیست. اما در صورتیکه شرکت‌کنندگان تمایل به اجرای کد نمونه بر روی تصاویر پایگاه داده اصلی و محاسبه نتایج آن باشند، می‌بایست این بخش از کد را در انتهای کد خود قرار داده و در خطوط 58 و 59 به ترتیب نام کاربری و رمز عبور پروفایل خود در سایت facecup.ir را جایگزین نمایند.

image

بعنوان مثال، در صورتیکه نام کاربری تیم شما code و رمز عبور شما 1234 باشد، خطوط 58 و 59 کد نمونه بصورت زیر تغییر می‌کنند.

"username": "code",
"password": "1234"

در نهایت، پوشه sample code که شامل تمامی محتویات نشان داده شده در شکل (1) است را به یک فایل فشرده (با فرمت .zip) تبدیل نمائید و جهت بارگذاری آن در بخش ارسال کد در پروفایل تیم خود اقدام نمائید.