| فایل اولیهی پروژه را میتوانید از این [لینک](https://drive.google.com/drive/folders/1H4DaaJjEEDJLMJAp-eZmrnKTxs5B4In9?usp=sharing) دانلود کنید.|
| :--: |
به مرحلهی نهایی رقابتهای **المپیک پردازش تصویر و بینایی کامپیوتر کوئرا** خوش آمدید!
جایی که پیکسلها معنا پیدا میکنند، مدلها تصمیم میگیرند و شما فرماندهی یک مأموریت علمی بزرگ هستید.
در این مرحله با یک **پروژهی چندبخشی** روبهرو میشوید؛ مأموریتی که هوش، دقت و خلاقیت شما را در **قطعهبندی، دستهبندی و تحلیل تصاویر پزشکی** به چالش میکشد. اکنون زمان آن رسیده است که دید ماشین را به نمایش بگذارید. به دنیایی خوش آمدید که در آن **هر تصویر، رازی پنهان دارد و هر مدل، کلیدی برای کشف آن است.**
شما آزادید تا در طول مسابقه **مدلهای خود را آموزش دهید، آزمایش کنید و بهبود ببخشید.**
همچنین استفاده از **مدلهای زبانی بزرگ (LLMs)** بهعنوان ابزار کمکی برای ایدهپردازی یا توسعهی کد **کاملاً مجاز** است.
توجه: شما باید **راهحل نهایی خود را برای داوران ارائه دهید**. ساختار پروژه علاوه بر صحت عملکرد و نتایج موفق، باید **قابل ارائه و تحلیل برای داوران** باشد.

------------------------------------------------------------------------
## مجموعه داده
در این مجموعهداده، تصاویر **X-ray** قرار دارند که شامل تصاویر بدون توده، تودههای خوشخیم و تودههای بدخیم هستند. بخشی از تصاویر هیچ تودهای ندارند. هدف، بررسی این تصاویر و انجام دو وظیفه اصلی بر روی مجموعهداده است:
1. **دستهبندی تصاویر:** تصاویر را به کلاسهایی که در ادامه معرفی خواهیم کرد، انتساب دهید..
2. **قطعهبندی تصاویر:** مشخص کردن ناحیه توده سرطانی به صورت **سفید** و سایر اجزا به صورت **سیاه**.
این مجموعه شامل تصاویر با **میانگین ابعاد ۵۰۰×۵۰۰ پیکسل** است. تمام تصاویر در قالب **PNG** ذخیره شده و برای هر تصویر، **تصویر مرجع (Ground Truth)** نیز در دسترس است.
تصاویر در سه دسته اصلی طبقهبندی شدهاند:
+ **عادی (Normal)**
+ **خوشخیم (Benign)**
+ **بدخیم (Malignant)**
برای **دادههای آموزش**، تمامی تصاویر همراه با تصاویر قطعهبندی شده در اختیار شما قرار گرفتهاند. **تصاویر تست** نیز در دسترس هستند، اما شما مسئول قطعهبندی و دستهبندی آنها خواهید بود.
### ساختار مجموعهداده
ساختار پوشههای این مجموعهداده بهگونهای طراحی شده است که در دو بخش **train** و **test** تقسیم شده. مجموعه آموزش شامل سه کلاس **benign**، **malignant** و **normal** است. درون هر کلاس دو پوشهی جداگانه به نامهای **images** و **masks** وجود دارد؛ پوشهی images شامل تصاویر اصلی سونوگرافی است و پوشهی masks شامل ماسکهای قطعهبندی شده متناظر با همان تصاویر میباشد. نام فایل ماسکها دقیقاً با نام تصویر اصلی یکسان است و تنها عبارت `_mask` به انتهای نام آن افزوده شده است (مثلاً تصویر `benign (1).png` دارای ماسک `benign (1)_mask.png` است). این ساختار باعث میشود که بتوانید بهراحتی به تصاویر و ماسکهای مربوط به هر کلاس در مجموعههای آموزشی دسترسی پیدا کنید و از آنها برای آموزش و ارزیابی مدلهای دستهبندی یا قطعهبندی استفاده نمایند.
ساختار فایلها به شرح زیر است:
```php
└── initial/
├── train/
│ ├── benign/
│ │ ├── images/
│ │ └── masks/
│ │
│ ├── malignant/
│ │ ├── images/
│ │ └── masks/
│ │
│ │ ├── normal/
│ │ ├── images/
│ │ └── masks/
│ │
│ └── train.csv
│
└── test/
├── images/
└── test.csv
```
<details class="yellow">
<summary>
\**توجه**
</summary>
در مجموعه آزمایش شما فقط به تصاویر دسترسی دارید. در ادامه باید مدلهایی آموزش دهید که تصاویر این مجموعهداده را دستهبندی کنید و سپس آنها را قطعهبندی کنید. در ادامه با شیوه ارائه نتایج آشنا خواهید شد.
</details>
------------------------------------------------------------------------
## دستهبندی با استفاده از مدلهای زبانی-تصویری
در مرحله اول، لازم است تصاویر را **دستهبندی** کنید. هدف این است که مشخص شود آیا هر تصویر شامل **توده سرطانی** است یا خیر. در صورتی که تصویر دارای توده باشد، باید نوع آن نیز مشخص شود: **خوشخیم (Benign)** یا **بدخیم (Malignant)**. هدف نهایی، توسعه یک سیستم دقیق و قابل اعتماد برای **دستهبندی تصاویر X-ray** است که توانایی تشخیص تودههای خوشخیم و بدخیم را داشته باشد و بتواند در کاربردهای بالینی یا تحقیقاتی مورد استفاده قرار گیرد.
در این مسابقه، ما انتظار داریم که شما **یک مدل زبانی-تصویری (Vision-Language Model)** یا به اختصار **VLM** طراحی و پیادهسازی کنید که بتواند اطلاعات تصویری و متنی مرتبط را برای دستهبندی تودهها به کار گیرد. استفاده از ویژگیها یا مکانیزمهای پیشرفته برای مقابله با نابرابری توزیع کلاسها و بهبود عملکرد مدل بسیار اهمیت دارد.
علاوه بر این، ضروری است که **فرآیند مدلسازی و روشهای مورد استفاده** در طراحی و آموزش مدل، **پس از پایان مسابقه** به صورت کامل ارائه شود. این شامل جزئیات پیشپردازش دادهها، معماری مدل، استراتژیهای مقابله با عدم تعادل دادهها، و روشهای اعتبارسنجی خواهد بود.
### معیار ارزیابی
برای ارزیابی مدل شما از معیار `F1 Score` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `F1 Score` حداقل ۰.۷ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(f1 score, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
<details class="red">
<summary>
\**توجه**
</summary>
در طول مسابقه امتیازی که مشاهده میکنید، فقط نتیجهی ارزیابی مدل شما روی ۳۰ درصد از دادههای آزمون است. بعد از پایان زمان مسابقه، **امتیاز نهایی** شما روی ۷۰ درصد مابقی محاسبه میشود.
این کار به منظور جلوگیری از بیشبرازش (`overfitting`) و حفظ عمومیت مدل انجام میشود تا مطمئن شویم مدلهایی که دچار بیشبرازش شدهاند، در امتیازدهی نهایی، افت میکنند.
</details>
### ثبت پاسخ
پس از طی کردن فرآیند ساختن مدل متنی-زبانی، نوبت به ارائه نتایج تست میباشد. شما باید تشخص دهید که هر تصاویر به کدام کلاس تعلق دارد. نام تصاویر در فایل **submission.csv** قرار دارند. در این فایل باید دسته هر تصویر را مشخص کنید و به شکل `One-Hot` آن را تعیین کنید. برای مثال جدول زیر میتوانید بخشی از فایل پیشبینی شما باشد:
| **image** || **class_benign** || **class_malignant** || **class_normal** |
|:---------:||:---------:||:---------:||:---------:|
|image1.png||0||1||0|
|image2.png||1||0||0|
|image3.png||0||0||1|
------------------------------------------------------------------------
## قطعهبندی مبتنی بر یادگیری عمیق
در این مرحله، باید با استفاده از **شبکههای عصبی عمیق**، مدلی طراحی و آموزش دهید تا بتواند تصاویر را **قطعهبندی (Segmentation)** کند. هدف اصلی این مرحله، مشخص کردن دقیق نواحی توده در تصاویر X-ray است.
در صورتی که تصویر **هیچ تودهای نداشته باشد**، مدل باید **ماسکی کاملاً سیاه** تولید کند که هماندازه تصویر اصلی باشد. این ماسک نشاندهنده عدم وجود توده در تصویر است.
در مقابل، اگر تصویر شامل **توده خوشخیم (Benign)** یا **توده بدخیم (Malignant)** باشد، مدل باید **تمام مساحت مربوط به توده را سفید** کند و سایر نواحی تصویر را **سیاه** نگه دارد. بدین ترتیب، ماسک تولید شده به وضوح محدوده توده را از سایر بخشهای تصویر تفکیک میکند.

### معیار ارزیابی
برای ارزیابی این سوال از معیار **Intersection of Union** یا به اختصار **IoU** استفاده میشود. این معیار بین ماسک ساخته شده بوسیله مدل شما و ماسکهای واقعی بررسی خواهد شد. این معیار، نشان میدهد که مدل تا چه حد نواحی موردنظر را به درستی شناسایی کرده است و به طور گسترده در مسائل **قطعهبندی تصاویر پزشکی و بینایی ماشین** استفاده میشود. این معیار به شکل زیر محاسبه میشود:
\[
\text{IoU} = \frac{|\text{Prediction} \cap \text{Ground Truth}|}{|\text{Prediction} \cup \text{Ground Truth}|}
\]
معیار `IOU` یک معیار استاندارد برای سنجش دقت **قطعهبندی تصاویر** است. این معیار، نسبت **مساحت اشتراک** بین ماسک پیشبینی شده و ماسک واقعی به **مساحت اتحاد** آنها را اندازهگیری میکند. مقدار `IoU` بین ۰ تا ۱ قرار دارد:
+ **۰**: هیچ همپوشانی بین ماسک پیشبینی و واقعی وجود ندارد.
+ **۱**: همپوشانی کامل بین ماسکها وجود دارد.
برای ارزیابی مدل شما از معیار `IOU` استفاده میشود. برای نمرهگیری در این سوال مدل شما باید دارای `IOU` حداقل ۰.۶ باشد و در این حالت نمرهی نهایی بر اساس فرمول زیر محاسبه میگردد:
$$round(IOU, 3) \times 100$$
اگر مدل شما به حدنصاب نرسد، نمرهی دریافتی **صفر** خواهد بود.
### ثبت پاسخ
تمامی تصاویر موجود در پوشه `test/images` را قطعهبندی کنید و در پوشهای به نام `segmentation` قرار دهید. دقت کنید که نام تصاویر و ابعاد آنها باید دقیقا مشابه با نام آنها در مجموعه `test/images` باشد.
توجه داشته باشید که **تمامی تصاویر مجموعهداده تست** باید قطعهبندی شوند و خروجیها در همین پوشه ذخیره شوند. همچنین دقت کنید که اگر تصویر فاقد توده باشد، مدل شما باید یک تصویر تماما سیاه هماندازه با تصویر ورودی را در خروجی خود تحویل دهد.
------------------------------------------------------------------------
## ثبتنهایی
در نهایت پس از اتمام هر دو بخش مسابقه، در یک پوشه به نام `result` نتایج را قرار دهید و بصورت `zip` در کوئرا ارسال کنید. فایل پاسخ شما باید شامل دو مورد زیر باشد:
+ **فایل submission.csv**: طبق قالب تعریف شده، در این فایل باید نتایج دستهبندی شما قرار بگیرد.
+ **پوشه segmentation**: محتویات این پوشه، تصاویر قطعهبندی شده هستند. دقت کنید که تمام آزمایش را باید قطعهبندی کنید و در این پوشه قرار دهید.
ساختار پوشه نهایی به شکل زیر است:
```php
result/
├── submission.csv
├── notebook.ipynb
└── segmentation/
├── test_0001.png
├── test_0002.png
...
├── test_0156.png
```