با اپلیکیشن [اسنپفود](https://snappfood.ir/) به راحتی میتوانید با چند کلیک ساده، رستورانها، کافهها و شیرینیفروشیهای نزدیک خودتان را جستوجو و از تجربه سفارش آسان اسنپفود لذت ببرید. 😋
![توضیح تصویر](/qbox/view/yNW9q5J7A7/Capture.PNG)
فروشندگان میتوانند اقلام خوراکی خود را در اسنپفود قرار دهند تا کاربران با بررسی قیمت و عکس خوراکیها و نظرات کاربران دیگر، خوراکی مورد نظر خود را انتخاب کنند.
با بررسی تصاویری که مردم در شبکههای اجتماعی به اشتراک میگذارند، میتوان ترتیب قرار گرفتن خوراکیها را ارتقا داد. برای مثال، خوراکیهایی که در شبکههای اجتماعی مورد توجه قرار گرفتهاند را در ابتدای سایت یا اپلیکیشن قرار داد. همچنین برای هر کاربر، یک لیست شخصیسازی شده از خوراکیهای مورد علاقهاش را پیشنهاد داد.
برای استقاده از این امکانات، در قدم اول باید بتوانیم نوع غذای موجود در یک عکس را شناسایی کنیم و این دقیقا کاری است که ما انتظار داریم شما در این سوال انجام دهید.
# دادگان
در این سوال شما به دادگان عکس خوراکیها دسترسی دارید. در این مجموعه، بیش از ۱۷ هزار عکس از ۲۱ نوع خوراکی وجود دارند که تعدادی از آنها را در عکس زیر میبینید:
![توضیح تصویر](/qbox/view/ydtSrgxQjX/Capture%DB%B2.PNG)
برای دریافت دادگان این سوال، از [اینجا](https://drive.google.com/file/d/1sr-3p_1GqCuXStSaz3__Lw4s3lbBtwSD/view?usp=sharing) اقدام کنید. بعد از `unzip` کردن آن، داخل پوشه `food` بروید و دادگان آموزش را در پوشه `train`، پیدا کنید. داخل این پوشه، برای هر نوع خوراکی، یک پوشه جدا وجود دارد که شامل تصاویر آن میباشد. همچنین تصاویر دادگان آزمایش این سوال، در پوشه `test` قرار دارند. روی هم رفته حجم کل عکسها حدود **یک گیگابایت** میباشد.
<details class="pink">
<summary>
**راهنمایی**
</summary>
**شاید** یکی از روشهای زیر (یا ترکیب آنها)، بتواند به شما در حل این مسئله کمک بکند:
+ **استفاده از روشهای یادگیری عمیق مانند `transfer learning` و `CNNs`**
+ **استفاده از روشهای افزایش تعداد عکس (`data augmentation`)**
+ **استفاده از هر روش مرتبط با بینایی ماشین، یادگیری ماشین و عمیق**
</details>
<details class="yellow">
<summary>
**توجه**
</summary>
در هنگام کار با این دادگان، به نکات زیر توجه داشته باشید:
+ هر عکس، تنها شامل یک نوع خوراکی میباشد.
+ ابعاد عکسها یکسان نیستند و طول و عرض هر عکس حداکثر ۵۱۲ پیکسل میباشد.
+ برچسبهای دادگان آموزش، توسط نیروی انسانی انجام شدهاست. به همین دلیل، شاید تعدادی از عکسهای هر نوع غذا، به اشتباه برچسب خورده باشند. مدیریت این مسئله، جزوی از چالش این سوال و بر عهده شما میباشد.
</details>
# ارزیابی
برای ارزیابی نتیجه کار، از معیار دقت (`accuracy`) در اعلام **نوع خوراکی** موجود در یک عکس استفاده میشود. یعنی تعداد عکسهای درست پیشبینی شده تقسیم بر تعداد کل تصاویر موجود میشود.
امتیاز نهایی مدل شما نیز، طبق رابطه زیر محاسبه میشود:
$$ score = ((accuracy\times100)-20)\times2.5$$
<details class="green">
<summary>
**توضیحات**
</summary>
با استفاده از رابطه بالا، افرادی که دقت مدلشان، ۲۰ درصد و یا کمتر از آن است، از این سوال، امتیازی کسب نمیکنند. توجه داشته باشید که بیشترین امتیاز ممکن از این سوال ۲۰۰ و کمترین امتیاز ممکن، صفر است.
</details>
# ارسال پاسخ
پیشبینیهای مدل خود بر روی دادگان آزمایش را در فایلی با نام `output.csv` قرار دهید. این فایل باید دارای دو ستون با نامهای `file` و `prediction` به ترتیب باشند. در هر ردیف، نام فایل را در `file` و پیشبینی خود از **نوع خوراکی** را در ستون `prediction` قرار دهید (دقت کنید که فایل `CSV` باید حتما دارای `header` باشد).
بعد از آمادهسازی فایل `output.csv`، آن را برای ما بارگذاری کنید.
## نمونه خروجی فایل `output.csv` (فقط سه خط اول به همراه نام ستونها)
```
file,prediction
005YYST06V93A.jpg,ice_cream
011VG8PFN3W2W.jpg,spaghetti
014XUHGNX7Z1M.jpg,spaghetti
```
<details class="yellow">
<summary>
**توجه**
</summary>
حتما فایل `output.csv` باید دارای ۴,۲۷۶ سطر (بدون در نظر گرفتن `header`) و دو ستون باشد.
همچنین نام ستونها بایستی بدون `space` در قبل و بعد از نام آن، باشند. در غیر این صورت، سیستم داوری نمرهای به شما نخواهد داد.
</details>
<details class="red">
<summary>
**هشدار 😱**
</summary>
فراموش نکنید که **قبل از پایان زمان مسابقه**، **بایستی** تمامی کدهای این مسابقه را از قسمت **بارگذاری کُد** برای ما ارسال کنید. در غیر این صورت، شما از این مسابقه، امتیازی کسب نمی کنید.
توجه داشته باشید که اگر از `jupter notebook` استفاده می کنید بایستی همانند توضیحات قسمت **بارگذاری کُد**، خروجی `.py` را دریافت و برای ارسال در نظر بگیرید. ارسال فایلهای `jupyter` همانند `.ipynb` مورد قبول واقع نخواهند شد.
</details>