مسابقه همطراحی سختافزار/نرمافزار
پیادهسازی الگوریتم تخمین حرکت مورد استفاده در تصاویر ویدیویی
۱- مقدمه: سیستمهای نهفته، همطراحی سخت افزار/نرم افزار
امروزه در هزارهی سوم، بیش از ۹۶% سیستمهای کامپیوتری را سیستمهای نهفته (Embedded Systems) تشکیل میدهند [۱]. سیستم نهفته یک سیستم پردازش اطلاعات است که درون محصول فراگیرندهی آن نهفته است. بستر کاربرد چنین سیستمهایی بسیار گسترده است و از تلفنهای راه دور تا بسیاری از تجهیزات نظامی را در بر میگیرد. سیستمهای نهفته با مشخصههای متنوعی شناسایی میشوند. یکی از این مشخصهها که در بیشتر این سیستمها مشترک است، استفاده از همطراحی یا طراحی توأمان سختافزار و نرمافزار (Hardware-Software Co-design) است، یعنی سبکی از طراحی که بر طراحی ترکیبی نرمافزاری-سختافزاری دلالت دارد تا بتواند نیازهای پیچیده و گاه متعدد سیستمهای نهفته را برآورده کند. ایجاد تعادل بین هزینهی سختافزار-نرم افزار (از جمله مساحت، قیمت، توان مصرفی و …) و کارایی از جمله مهمترین اهداف همطراحی است. هدف این بخش از مجموعه مسابقات طراحی سختافزار، به رقابت گذاشتن تواناییهای شرکتکنندگان از نظر مهارتهای کاربردی ایشان در به کارگیری توانایی طراحی نرمافزار و سختافزار به صورت توأمان است.
با توجه به دشواریهای چند بعدی انتخاب سوال برای مسابقات هم طراحی سخت افزار/نرم افزار، موضوع سوال در نظر گرفته شده برای مسابقات امسال به گونهای است که علاوه بر پرهیز از پیچیدگیهای غیر ضروری، بتواند بیشتر بر روی ارزیابی راندمان معماریهای تلفیقی سخت افزاری/نرم افزاری پیشنهادی (و به عبارت دیگر کیفیت تقسیم بندی معماری مورد نظر به بخشهای نرم افزاری و سخت افزاری توسط شرکتکنندگان) تمرکز کند. همچنین در این دوره از مسابقات با ایجاد شفافیت و خودکار کردن فرایند ارزیابی راندمان طرحهای پیشنهادی، از هرگونه خطای انسانی یا ابزاری نیز جلوگیری بعمل خواهد آمد تا دقت بیشتری برای نتایج به دست آمده حاصل گردد.
در ادامه، ابتدا به منظور آشنایی بیشتر با مفاهیم مورد استفاده، به معرفی مختصری از فناوری ویدیو، ضرورت فشردهسازی آن و الگوریتم تخمین حرکت [۲] به عنوان یک روش افزایش بهینگی در شیوههای فشردهسازی ویدیوها پرداخته میشود. پس از آن، مساله مورد نظر این دوره از مسابقات مطرح خواهد شد و در انتها شیوه ارزیابی طرحهای شرکتکننده در مسابقه و همچنین روش برگزاری مسابقات ارائه میگردد.
۲- فناوری ویدیو و ضرورت استفاده از فشردهسازی
ویدیو یک فناوری الکترونیکی است که در آن تصاویر متوالی که توسط یک دوربین ثبت شدهاند، دریافت میگردند و پس از پردازش و بازسازی، بر روی حافظه ذخیره و یا از طریق صفحه نمایش نشان داده میشوند. فناوری ویدیو نخستین بار برای سامانههای تلویزیونی مورد استفاده قرار گرفت ولی بعد از آن امکان ذخیره ویدیوها بر روی حافظهها فراهم گردید و روز به روز با پدید آمدن کاربردهای جدید چالشهای بیشتری برای ذخیره و ارسال آن نیز پدید آمد. امروزه حجم دادههای خام ویدیویی برای ذخیره بر روی حافظهها و یا ارسال بر روی شبکه بسیار زیاد است. از این رو نیاز به فشردهسازی ویدیو اجتنابناپذیر است.
بررسیها نشان میدهند که در دنبالههای ویدیویی افزونگی اطلاعاتی بین فریمها بسیار زیاد هستند. یک فشردهساز ویدیو دنبالهی تصاویر ویدیویی را با استفاده از حذف این افزونگیها فشرده میکند. یکی از این افزونگیها افزونگی زمانی است. در اغلب تصاویر متحرک رایج، تفاوت بین فریمهای متوالی در یک دنباله ویدیویی به دلیل فاصلهی زمانی بسیار کوتاه بین آنها بسیار کم است که این همبستگی زیاد بین فریمهای متوالی، افزونگی زمانی نامیده میشود. یکی از راهکارهای حذف این نوع از افزونگی استفاده از انواع الگوریتمهای تخمین حرکت میباشد. معروفترین الگوریتم تخمین حرکت جستوجوی سرتاسری است که برای ارسال یک فریم، آن را به بلاکهای a X a تقسیمبندی میکند و سپس برای هر یک از این بلاکها شبیهترین بلاک در فریم ارسال شده قبلی را مییابد و بدین ترتیب بجای ارسال یا ذخیرهسازی تمامی بلاکهای فریم تصویر، تنها با ذخیره اطلاعات بردارهایی وزندار، میزان و جهت جابجایی بلوکهای فریمهای متوالی را ذخیره میکنند. تخمین حرکت به دلیل اهمیت و بار محاسباتی بسیار بالایی که دارد از بحرانیترین بخشهای فشردهسازی ویدیو به حساب میآید. در راستای کاهش حجم محاسبات الگوریتمهای سنتی و افزایش کارایی جستوجوهای سرتاسری که همه بلوکهای تصویر را پیمایش میکنند و سعی در یافتن بلوکهای کاملا یکسان را دارند، الگوریتمهای متنوعی معرفی گردیدند که با الگوهای جستوجوی مختلفی سعی در یافتن شبیهترین بلوک را دارند.
۳- صورت مساله
مساله مورد نظر این مسابقه با الهام از الگوریتم تخمین حرکت، که پیشتر توضیح داده شد، به صورت زیر تعریف میگردد:
هدف پیدا کردن شبیهترین بلوک یا بلوکهای تصویر از یک فریم کامل تصویر به بلوکی از پیش مشخصشده است. به طوری که بلوک یا بلوکهای شناساییشده دارای کمترین میزان تفاوت محتوایی بین تمام بلوکهای آن تصویر با بلوک تصویری مد نظر سوال را داشته باشند. به منظور تشخیص شباهت بین بلوک مدنظر با بلوکهای تحت جستوجو، از رابطه معروف Mean-Squared Error استفاده میگردد.
اطلاعات مورد نیاز برای آغاز کار:
- ابعاد تصویر مبنا: ۷۶۸ * ۱۲۸۰ (تصویر مورد نظر مسابقه را از اینجا دانلود نمایید)
- ابعاد بلوک مورد جست و جو: ۱۰۰ * ۱۰۰
- کیفیت تصویر: Grayscale 8-bit
توجه: کد ++C الگوریتم تشخیص بلوک مشابه مورد استفاده برای حل مسألهی مسابقه نیز در اختیار شرکتکنندگان قرار داده شده است که میتواند برای درک بهتر صورت مساله و بررسی صحت عملکرد سامانه طراحی شده توسط تیمها مورد استفاده قرار بگیرد. (کد نرمافزاری الگوریتم را از اینجا دانلود نمایید)
۴- نحوه اجرای مسابقه و ارزیابی پیادهسازیهای انجامشده
فایل مربوط به اطلاعات پیکسلهای تصویر مبنا پیش از شروع مسابقه (در روز برگزاری مسابقه) در اختیار شرکتکنندگان قرار میگیرد. در زمان برگزاری مسابقه، ابتدا سایر مقادیر اولیه مورد نیاز برای شروع کار نظیر سایز و مقادیر پیکسلهای بلوک مورد نظر (برای جستوجوی بلاکهای مشابه آن) از طریق درگاه UART سامانه داوری مسابقات در اختیار شرکتکنندگان قرار خواهند گرفت. بدین صورت که، پس از اتصال پورت UART سامانه شرکتکننده به سامانه داوری، سامانهی شرکتکننده با ارسال یک بایت دادهی مشخص (که تمامی بیتهای آن ۱ هستند) به سامانهی داوری، آمادگی خود را برای دریافت مقادیر اولیه اعلام میکند. پس از آن، سامانهی داوری به ترتیب ابتدا یک بایت دادهی مشخص (که تمامی بیتهای آن ۰ هستند)، پس از آن بلافاصله یک بایت شامل سایز بلاک مورد نظر (مقدار a که در این مسابقه ۱۰۰ انتخاب شده است)، سپس مجدد یک بایت دادهی مشخص (که تمامی بیتهای آن ۱ هستند) و در نهایت بایتهای مقادیر هر یک از a2 تا پیکسل بلوک مورد نظر برای جستوجو را (با شروع از بالاترین و چپترین پیکسل و بصورت ردیف به ردیف) به سامانه شرکتکننده ارسال خواهد کرد. توجه داشته باشید که فایل مربوط به اطلاعات پیکسلهای تصویر مبنا پیش از شروع مسابقه (در روز برگزاری مسابقه) در اختیار شرکتکنندگان قرار میگیرد و در زمان اجرای مسابقه و از طریق سامانه داوری اطلاعات تصویر مبنا منتقل نخواهد شد. برای مثال اگر a=5 باشد، سامانه داوری به تعداد ۲۸ بایت اطلاعات به سامانه شرکتکننده ارسال میکند که پس از دریافت این اطلاعات امکان آغاز فعالیت سامانههای شرکتکننده برای یافتن پاسخ مسابقه میسر خواهد شد. برای نمونه در صورتیکه a=6 باشد؛ شکل زیر ترتیب ارسال بایتهای شامل پیکسلهای بلاک ۶*۶ را توسط سامانه داوری نشان میدهد:
در پایان اجرای الگوریتم نیز پاسخ مورد نظر مسابقه (تعداد و مختصات بلاکهای مشابه یافته شده) باید توسط سامانهی شرکتکننده از طریق درگاه UART برای سامانه داوری ارسال گردد. بدین صورت که پس از ارسال یک بایت مشخص (که تمامی بیتهای آن ۱ هستند)، ابتدا بایت شامل تعداد بلاکهای مشابه و سپس به همین تعداد مختصات بلاکهای مشابه یافت شده را به سامانه داوری ارسال مینماید. منظور از مختصات هر بلوک مشابه یافته شده در واقع مختصات (x,y) پیکسل سمت چپ و بالای بلوک جواب (مثال نشان داده شده در شکل زیر) میباشد که به ترتیب اول مقدار x و بعد از آن مقدار y ارسال میگردد (هر کدام بصورت دو بایت ۸ بیتی، هشت بیت اول بعنوان بیتهای کمارزش و هشت بیت دوم بعنوان بیتهای پرارزش). برای مثال اگر در تصویر ۶*۶ نشان داده شده در شکل زیر بخواهیم مختصات بلاک ۳*۳ نشان داده شده را ارسال نماییم کافیست ابتدا یک بایت شامل مقدار ۱ و یک بایت شامل مقدار ۰ بعنوان x و سپس یک بایت شامل ۲ و یک بایت شامل ۰ بعنوان مقدار y ارسال شود.
نرخ ارسال و دریافت اطلاعات بر روی درگاه UART برابر ۹۶۰۰ بیت در هر ثانیه در نظر گرفته شده و اطلاعات بصورت کاراکترهای ۸ بیتی منتقل خواهند شد.
ارزیابی نتیجه مسابقه بر مبنای دو پارامتر “زمان اجرا و خاتمهی الگوریتم” و “هزینهی بستر پیادهسازی” الگوریتم خواهد بود. به طوری که زمان اجرا و هزینهی کمتر دو هدفی هستند که انتظار میرود شرکتکنندگان به بهترین شکل به تعادل برسانند. به عبارت دیگر بتوانند کمترین میزان را برای عبارت زیر حاصل کنند:
( زمان اجرا و خاتمهی الگوریتم X هزینهی بستر پیادهسازی )
۱-۴- محاسبهی “زمان اجرا“
بلافاصله پس از انتقال آخرین بیت از بلوک تصویر مورد نظر، تایمر سامانهی داوری شروع به شمارش میکند. این شمارش تا زمانی که آخرین بیت از مختصات آخرین بلاک مشابه یافت شده از UART سامانهی تیم شرکتکننده توسط سامانهی داوری دریافت گردد، ادامه خواهد داشت. پس از آن و با توجه به امکان محاسبهی زمان صرف شده برای دریافت پاسخ مسابقه از سامانهی شرکتکننده توسط سامانهی داوری، و کسر آن از زمان محاسبه شده توسط شمارنده، زمان دقیق اجرای الگوریتم توسط سامانهی شرکتکننده به طور خودکار محاسبه میگردد.
توجه: در روز مسابقه، سامانه داوری جهت ارسال و دریافت دادهها و همچنین محاسبهی زمان اجرای تیمهای مختلف شرکتکننده، در محل مسابقه تعبیه خواهد شد. قطعه کد طراحیشده جهت اجرا بر روی ریزپردازنده ARM Cortex-M3 LPC1768 بعنوان هستهی سامانه داوری، جهت ارسال و دریافت دادهها میان سامانههای شرکتکننده و داوری نیز در اختیار شرکتکنندگان قرار دارد. شرکتکنندگان میتوانند از قطعه کد مذکور جهت اطمینان از صحت انتقال اطلاعات بین سامانه خود و سامانه داوری و یا جهت ارزیابی زمان اجرای طرح خود استفاده کنند.
پروژه ی ایجاد شده در محیط برنامه ی Keil μvision 4 (همچنین قابل اجرا بر روی نسخه های جدیدتر Keil) برای بورد آزماینده LANDTIGER NXP ARM LPC1768 DEVBOARD، از اینجا قابل دانلود است.
تصویر بورد آزماینده مذکور به همراه تصویر کابلهای مورد استفاده (DB9 به USB و DB9 به DB9) را در ادامه میبینید. توجه داشته باشید که شرکتکنندگان در روز مسابقه مجاز هستند تا با استفاده از تنها یکی از کابلهای مذکور ارتباط بین سامانههای شرکتکننده و داوری را برقرار کنند.
۲-۴- محاسبهی “هزینه بستر پیادهسازی“
با توجع به قوانین مسابقات در بخش همطراحی سختافزار/نرمافزار، استفاده از کلیه بوردهای سخت افزاری و سخت افزاری/نرم افزاری تجاری رایج در بستر همطراحی مجاز است. برای محاسبهی هزینه بستر پیادهسازی، قیمت بوردهای مورد استفاده توسط شرکتکنندگان توسط تیم داوری مسابقات بر مبنای قیمتهای به روز و از سایت شرکت سازنده بورد استعلام خواهد شد. البته قابل ذکر است که در صورت عدم استفاده از بوردهای تجاری و ساخت بورد اختصاصی توسط شرکتکنندگان؛ تیم داوری مسابقات نسبت به تخمین هزینه آن اقدام خواهند نمود. علاوه بر آن قیمت هرگونه سیستم پردازشی دیگر مانند لپتاپ و یا کامپیوتر رومیزی، که در زمان اجرای الگوریتم نیاز به وجودشان باشد، جداگانه بر اساس مشخصات سختافزاری و نرمافزاری آنها محاسبه و به هزینه بورد اضافه میگردند.
توجه: به غیر از سامانه داوری که توسط تیم برگزاری مسابقات آماده خواهد شد، فراهم آوردن هرگونه سختافزار/نرمافزار مورد استفاده در بستر همطراحی شرکتکنندگان در روز مسابقه بر عهدهی تیمهای شرکتکننده است.
مراجع:
[۱] Marwedel, Embedded System Design, 2nd Ed., Springer, ISBN 9789400702578, 2011.
[۲] M. Bock, Video Compression Systems: From first principles to concatenated codecs. IET Digital Library, 2009.
برنامه اجرایی مسابقه
ضمن عرض خسته نباشید به شرکت کنندگان محترم مسابقه هم طراحی سخت افزار/نرم افزار، موارد زیر به استحضار میرسد:
- در روز چهارشنبه (۱۴ آذر) حضور تیم ها در محل مسابقات ضروری نیست هرچند که اگر تمایل به انجام زمان گیری و انجام تست طرح خود را داشته باشید می توانید از ساعت ۱۱ الی ۱۲:۳۰ در محل برگزاری مسابقات حاضر باشید و طرح خود را با سامانه داور مسابقات امتحان کنید.
- کلیه تیم های شرکت کننده میبایست در روز پنج شنبه (۱۵ آذر) رأس ساعت ۹ صبح به منظور تکمیل فرم مربوط به اطلاعات تیم ها حضور داشته باشند.
- شروع رکورد گیری اصلی مسابقات از ساعت ۱۱ روز پنج شنبه (۱۵ آذر) خواهد بود.
- ترتیب فراخوانی گروه ها به قید قرعه مشخص خواهد شد و تیم ها موظف هستند در هنگام فراخوانی در محل حضور داشته باشند.
- از هر تیم فقط یکبار رکوردگیری خواهد شد و نتایج بلافاصله به صورت آنلاین اعلام خواهد شد.
- پس از پایان رکوردگیری و محاسبه هزینه بسترهای طراحی، در صورت نیاز و به صلاحدید ناظر مسابقات، سه تیم برتر مسابقه میبایست نسبت به در اختیار گذاشتن اطلاعات مربوط به سامانه طراحی شده (اعم از کدها و سخت افزارهای مورد استفاده) و همچنین انجام تست های تکمیلی معین شده از طرف تیم داوری مسابقه هم طراحی اقدام نمایند. نتیجه مسابقه پس از اتمام این مرحله نهایی و اعلام خواهد شد.
- بدیهی است در صورت احساس نیاز به انجام تست های تکمیلی، هر تیمی از این امر امتناع کند از دور مسابقات کنار گذاشته خواهد شد.