هدف کلی این پروژه ایجاد دیتاست با کمک یک کد پایتون می باشد. دیتاست خام شامل ۲۰۰ ویدیوی ۵-۱۰ ثانیه ای می باشد. ویدیو ها شامل چند اتفاق فوتبالی مثل پاس و شوت می باشند. با کمک یک کد پایتون لحظه شروع و پایان و نوع اتفاق برای هر ویدیو باید انتخاب شود.
آدرس فایل ها: https://drive.google.com/file/d/11mcs2lDKsMMTgWBahtDEv80bkPznLRzN/view?usp=sharing
توضیحات فایل ها: یک کد پایتون- یک پوشه با ۲۰۰ ویدیو- یک پوشه با ۵ نمونه کار انجام شده
جزییات و روش انجام پروژه:
۱- ابتدا نیاز هست لایبری های لازم نصب شوند مخصوصا pip install opencv-python pillow.
۲- وقتی کد پایتون اجرا شود مسیری که ویدیو ها هستند درخواست می شود و پوشه ویدیو ها باید انتخاب شود.
۳- برای شروع و یادگرفتن جزییات کار٬ پوشه sample_Karlancer انتخاب شود ولی بعدا پوشه 200videos باید انتخاب شود و دیتاست ایجاد شود.
۴- وقتی پوشه مد نظر انتخاب شد٬ کد یک فایل labels.json را تولید می کند اگر قبلا تولید نشده. این فایلی هست که نهایتا به عنوان خروجی کار برای ۲۰۰ ویدیو باید تحویل داده شود.
۵- بعد از ان٬ یک محیط گرافیکی ظاهرا می شود. در این موقع٬ باید اتفاق های مختلف که لیست ان ها در محیط گرافیکی نوشته شده و زمان شروع و پایان آن ها انتخاب شوند. جزییات اتفاق ها در پایین شرح شده است.
۶- برای هر اتفاق ابتدا روی Start Frame کلیک شود. بهتر است چند فریم قبل از شروع دقیق اتفاق برای استارت فریم انتخاب شود. اگر پوشه sample_Karlancer انتخاب شده باشد٬ با عقب جلو کردن سلایدر می توان جزییات کار را متوجه شد.
۷- بعد از ان٬ سلایدرو برای به انتهای اتفاق باید برد. دقت شود که اینجا هم چند فریم بعد از پایان دقیق اتفاق انتخاب شود. مثلا اگر پاس اتفاق افتاده٬ چند فریم قبل از پاس برای استارت فریم و چند فریم بعد از پایان پاس برای End frame باید انتخاب شود.
۸-دقت شود که وقتی وقتی اند فریم مشخص شد٬ روی اند فریم کلیک نشود. قبل از اون باید نوع اتفاق انتخاب شود. بعد از اون روی اند فریم کیلک شود. اگر احیانا قبل از انتخاب نوع اتفاق٬ اند فریم انتخاب شد٬ مشکل خاصی نیست. فقط نیاز است از اول استارت فریم رو انتخاب کرده و بعد نوع اتفاق انتخاب شود و بعد روی اند فریم کلیک شود.
۹- اگر اشتباهی نوع اتفاق انتخاب شد و نتایج سیو شد٬ می توان سلایدر روی به بازه اتفاق برد و اتفاق رو با گزینه Delete label حذف کرد.
۱۰- وقتی همه اتفاق ها انتخاب شدند٬ می توان با گزینه Next video به ویدیو بعدی رفت. قبل از ان هم می توان با حرکت سلایدر اتفاق های انتخاب شده را جهت تایید دید.
۱۱- در پایان کار گزینه Close and save انتخاب شد. نیازی نیست همه ویدیو ها با هم انجام شوند. بعد از انجام هر تعداد ویدیو می توان نتایج رو ذخیره کرد و بعدا با اجرای دوباره کد پایتون٬ کار را برای بقیه ویدیو ها انجام داد.
توضیحات اتفاق ها:
۱- شوت shot. برای هر شوت انجام شده یکی از چهار گزینه باید اتفاق شود. گزینه اول Shot: blocked by defender می باشد. این به این معنی هست که شوت توسط دفاع دفع شده است. گزینه دوم Shot: saved by keeper است و به این معنی که دروازبان توپ را مهار کرده است. گزینه سوم Shot: missed (post or outside ) به این معنی که توپ به تیر دوازه خورده یا بیرون رفته است. گزینه چهارم Shot: goal و به این معنی که شوت گل شده است.
۲- پاس pass. هر پاس می تواند موفق pass: Success یا ناموفق pass: fail باشد. دقت شود که اگر بازیکی توپ را دریافت کند (پاس موفق) ولی نتواند گل بزند یا پاس بدهد٬ باز پاس موفق حساب می شود. یعنی نتیجه اتفاق بعد از پاس تاثیری در نتیجه پاس قبلی ندارد.
۳- Multi-label: برای پاس و شوت همچنین باید با پا By foot یا با سر By Head انتخاب شود. همچنین برای پاس و شوت باید توپ هوایی in the air یا زمینی on the ground انتخاب شود. این قسمت فقط برای پاس و شوت نیاز به انتخاب است.
۴- Other: اتفاق های دیگر شامل possession به این معنی که بازیکن توپ را در اختیار دارد ولی کار خاصی با توپ انجام نمی دهد. Dribbling به این معنی هست که بازیکن در حال حرکت با توپ می باشد و ممکن است٬ نه لزوما٬ بازیکن حریف را دریب کند. Dual on ball به این معنی هست که توپ مثلا به دفاع خورده و سر گردان می باشد و بازیکن هر دو تیم در تلاش برای مالیک توپ هستند ولی در ان بازه زمانی کسی مالیکت توپ را ندارد. Corner همون کرنر در فوتبال هست. Throw in اوتی می باشد. penalty پنالتی هست. free kick ضربه ازاد است. اگر اتفاقی رخ دهد که جز هیچ کدام از موارد ذکر شده نیستند مثل خطا٬ نیاز به کار خاصی برای اون بازه زمانی نیست.
نکات مهم دیگر پروژه:
۱- پایان یک اتفاق لزوما نقطه شروع اتفاق بعدی نیست. شروع و پایان هر اتفاق مجزا از اتفاق های دیگر باید دیده شود. حتی لازم است مواقعی که چند اتفاق پشت سر هم رخ می دهد٬ چند فریم اورلپ داشته باشند. به نکته ۷ قسمت ؛جزییات و روش انجام پروژه؛ مراجعه شود.
۲- کد یک سری باگ ممکن هست داشته باشد و صرفا طراحی شده که ساخت دیتاست اسان شود. یک نرم افزار کامل نیست.
۳- با نگاه کردن به ۵ نمونه ویدیو انجام شده در پوشه sample_Karlancer تمام جزییات کار باید واضح شود.
۴- برای شروع پروژه٬ نیاز است که کار را برای ۵ تا از ویدیو ها انجام دهید (جهت اطمینان از درک نحوه انجام پروژه) و فایل labels.json برای ۵ ویدیو انجام شده به من ارسال شود.
۵- در صورتی که در مورد قسمتی مطمین نیستید٬ به بنده پیام دهید
جهت انجام پروژه لطفا با پشتیبانی تلگرام در تماس باشید:
ای دی تلگرام: omid_ahmadyani@
