در دستهبندی کنش[^Action] در ویدئو هدف تشخیص وجود یا عدم وجود یک کنش خاص در ویدئو است. کاربردهای بسیار زیادی برای این مسئله میتوان در نظر گرفت. موارد سادهای از این کنشها را میتوانید در تصویر زیر مشاهده کنید:
![simple actions](http://www.nada.kth.se/cvap/actions/actions.gif)
# مقدمه
مبحث تشخیص و بازشناسی کنش[^Activity Recognition] یکی از پرکاربردترین مباحث در زمینه هوش مصنوعی است. از جمله کاربردهای آن می توان به مبحث بازشناسی رفتار [^Behavior Recognition]اشاره نمود.
هدف در بازشناسی کنش این است که با مشاهده ی یک سری اعمال عامل و شرایط محیط تشخیص دهیم که عامل چه کاری را انجام می دهد، مثلا در حال دویدن ، راه رفتن و یا آشپزی است. این مبحث به دلیل کمکی که می تواند در زمینه های روانشناسی و جامعه شناسی، پزشکی و ارتباط بین انسان و رایانه کند از دهه 1980 توجه بسیاری را به خود جلب کرده است.
برای درک بهتر از کاربرد بازشناسی کنش به مثال زیر توجه کنید:
مرد مسنی را در نظر بگیرید که به تنهایی زندگی می کند . او صبح از خواب بیدار شده ، اجاق خود را برای درست کردن چای روشن کرده، تستر را نیز روشن کرده و مقداری نان هم از قفسه بر میدارد. پس از اینکه داروی صبحگاهی خود را مصرف کرد یک سیستم هوشمند به او یادآور می شود که اجاق را خاموش کند. شب همان روز دختر او از طریق یک سایت امن (که هر کسی نتواند به آن دسترسی داشته باشد) یک لیست چک را که توسط یک شبکه هوشمند در آپارتمان پدرش ایجاد شده است یررسی می کند تا متوجه شود که پدرش غذایش را به خوبی می خورد، داروهایش را به موقع مصرف می کند و مشکلی ندارد.
** انواع بازشناسی کنش** :
1. بر مبنای سنسور،تک کاربره
مثالی برای این مورد می تواند گوشی های هوشمند و سنسورهای موجود در آن ها باشند که می توانند مثلا تعداد گام های روزانه او را اندازه گیری کرده و بازشناسی کنش فیزیکی [^physical activity recognition] انجام داده تا به تخمین انرژی مصرفی روزانه او بپردازد.
2. بر مبنای سنسور، چند کاربره
در این بخش از مجموعه از سنسور ها برای بازشناسی کنش چند نفر استفاده می شود.
3. بر مبنای سنسور بازشناسی کنش گروهی
بازشناسی کنش در این مورد با دو مورد قبل تفاوت دارد، از این منظر که به کنش از دید گروه به عنوان کل افراد نگاه می کند که به مراتب از موارد قبلی سخت تر است، چرا که علاوه بر پیچیدگی دو مورد قبلی باید به عواملی مانند ارتباط و کنش بین افراد در همکاری با هم نیز توجه شود.
4. بر مبنای تصویر
در این مورد بررسی کنش و رفتار عامل با استفاده از ویدئو هایی که توسط دوربینهای مختلف ضبط می شوند انجام می شود. در این زمینه تحقیقات گسترده ای با استفاده از متودهایی همچون جریان نوری[^optical flow]،فیلترینگ کالمن[^Kalman filtering]،مدل مخفی مارکف[^ Hidden Markov] انجام شده است. تحقیقات اخیر از دوربین های RGBD مانند Kinect مایکروسافت برای ردیابی کنش های انسان استفاده کرده اند.
دوربین های دو بعدی در شناسایی عمق عاجز بودند حال آنکه این مهم با استفاده از دوربین های عمق [^Depth Camera]انجام شده است. اطلاعات سنسوری دریافتی از این دوربین ها برای بازسازی زمان واقع[^Real Time] از اسکلت بدن انسان در حالات مختلف استفاده می شود. این داده های اسکلت اطلاعات مهمی را در اختیار محققان قرار می دهد و به آن ها در بازشناسی کنش های نا آشنا در آینده کمک می کند.
این پروژه نیز شامل دریافت اطلاعات از ویدئو و بازشناسی کنش از طریق آن است.
در پردازش ویدئو علاوه بر مشکلات قدیمی پردازش تصویر ،مشکلات دیگری نیز وجود دارد که در ذیل به اختصار چند مورد از آن ها بیان شده است :
1. مقیاس متفاوت [^ Different Scaling] : افراد مختلف امکان دارد در ویدئو های مختلف دارای مقیاس های متفاوتی باشند حال آنکه کار یکسانی را انجام می دهند.
2. حرکت دوربین : امکان دارد دوربین فیلم برداری دوربین دستی همراه با لرزش باشد و یا دوربینی که بر روی پایه ی متحرک نصب شده است.
3. حرکت با دوربین : این امکان نیز وجود دارد که عامل مورد مطالعه در حال انجام عملی مانند اسکیت کردن باشد و در نتیجه همراه با دوربین و با سرعت یکسان با دوربین حرکت کند.
4. گرفتگی[^ Occulusion] در این حالت ممکن است عمل انجام شده به خوبی قابل تشخیص نباشد . به شکل زیر توجه کنید :
![توضیح تصویر](http://upload7.ir/imgs/2014-10/85600732779800794069.png)
5. در هم ریختگی پس زمینه [^Background Clutter ]: حاصل از بقیه اشیاء و یا انسان های موجود در ویدئو
6. انسان ها در اندازه ها و شکل های مختلفی هستند [^Human Variation]
7. انسان ها ممکن است عمل یکسانی را به اشکال مختلفی انجام دهند . [^Action Variation]
**روش های بازشناسی کنش :**
چهار مورد از روش های بازشناسی در ذیل آمده است. روش استدلال احتمالی که در این پروژه استفاده می شود توضیح بیشتری داده شده است :
1. از طریق منطق و استدلال[^logic and reasoning]
2. باز شناسی کنش مبتنی بر wif
3. بازشناسی کنش مبتنی بر داده کاوی
4. از طریق استدلال احتمالاتی[^probabilistic reasoning]
مدل گرافیکی یک مدل احتمالاتی است که وابستگی های شرطی بین متغیر های تصادفی در آن توسط گراف نمایش داده می شوند. مدل های گرافیکی یک چهارچوب منعطف برای مدلسازی مسائلی با تعداد زیاد متغیر و ارتباطات پیچیده بین آن ها فراهم می سازد. از جمله این مدل ها می توان به مدل مخفی مارکف و بیزین اشاره کرد.آقایان چارنیاک و گلدمن در سال نیز1993 در مقاله ای بیان کردند مدلی که شامل تئوری عدم قطعیت نباشد نمی تواند کامل باشد.
نمونه های ساده ای از مدل های گرافیکی را همانند آنچه در شکل زیر آمده است ، تا به حال زیاد دیده ایم :
![توضیح تصویر](http://mypage.uniserve.com/~zhzhou/MyPapers/BeliefNet/WetGrass.gif)
نمونه هایی از مدل های گرافیکی مسائل واقعی را در شکل زیر مشاهده می کنید :
![ ](http://img.my.csdn.net/uploads/201302/24/1361672124_1304.jpg)
شکل سمت چپ مربوط به مدل گرافیکی بیزین CPCS ،طراحی شده در دانشگاه استنفورد در تشخیص پزشکی بیماری داخلی با 480 گره و بیش از 900 یال است. شکل سمت راست نیز مثالی واقعی از مدل مارکف استفاده شده در بخش بندی تصویر [^Image Segmentation] است.
امروزه مدل های گرافیکی احتمالاتی از مهم ترین ابزار های مدلسازی و حل مسائل هوش مصنوعی هستند.
[برای اطلاعات بیشتر می توانید به درس PGM(Probabilistic Graphical Models) دانشگاه استنفورد مراجعه کنید]
در این پروژه نیز با کمک مدل های گرافیکی احتمالاتی به مدلسازی و بازشناسی کنش انجام شده توسط عامل هوشمند پرداخته می شود.
# کارهای مرتبط
در این پروژه به کمک مدل های گرافیکی احتمالاتی باید ابتدا مساله مدل شده، کار آموزش پارامتر ها [^Parameter Learning] انجام شده و در نهایت استنتاج [^Inference]انجام شود. در مدل پیشنهادی باید پارامتر های مورد نظر از میان زنجیره فریم ها استخراج می شوندتا در نهایت عمل انجام شده از آن ها استنتاج شوند.
کارهای کمابیش زیادی در این حوزه انجام شده است که به چند مورد از آن ها اشاره می شود .در حوزه اشارات و حرکات [^Gesture] مدل های تولیدی [^Generative] مانند مدل مخفی مارکف برای حالات بازو استفاده شده است [12].همچنین Kapoor و Picard مدل مبتنی بر HMM , به صورت زمان واقع برای ردیابی حرکات سر ارائه داده اند[13]. همچنین در [18] بر اساس مشاهدات دو بعدی 2D و مدل HMM به مدلسازی حرکت انسان پرداخته است.
در [`19]بر اساس مشاهدات سه بعدی 3D مدلسازی حرکت انسان انجام شده است.
جدای مدلهای تولیدی، مدل های تمایزی [^Discriminative] نیز برای حل مساله برچسب گذاری توالی [^Sequence Labling] استفاده می شود. مثلا در [14] از مدل ماکزیمم آنتروپی مارکف [^MEMM]برای استخراج اطلاعات[^Information Extraction] و قطعه بندی [^Segmentation]استفاده شده است.مزیت استفاده از مدل MEMM این است که میتواند مساله همپوشانی جزئیاتی که در زنجیره مشاهده وجود دارند را مدل کند. تفاوت بین این مدل ها در آن است که در مدلهای Generative مقدار احتمال توام محاسبه میشود اما در مدلهای Descriminative مقدار احتمال شرطی به شرط داشتن داده حساب می شود.
مدلهای میدان تصادفی شرطی[^Conditional Random Field ] اولین بار توسط [Lafferty et al. [15 معرفی شد. اخیرا استفاده از این مدل ها در بینایی ماشین[^Computer Vision] نیز زیاد شده است. برای مثال[ Sminchisescu [16 از این مدل برای دسته بندی فعالیت های حرکتی مانند راه رفتن،پریدن و ... استفاده کرده است. مدل معرفی شده در این مقاله میتواند علاوه بر مساله همپوشانی جزئیاتی که در زنجیره مشاهده است ،وابستگی هایی که بین مشاهدات در بازه های زمانی مختلف[^Different Timesteps] نیز وجود دارد را مدل کند .مدل CRF مورد استفاده آن ها در این مقاله همچنین توانایی تمیز دادن بین راه رفتن معمولی و پرسه زدن[^Normal Walk & Wander Walk] را دارد.
مدل های مخفی CRF نیز توسط [Quattoni [17 در بازشناسی شی برای مدل کردن وابستگی های فاصله ای [^Spatial Dependencies] در تصاویر Unsegmented Cluttered استفاده شده است.
# گزارش نتایج آزمایش
همانطور که در مراحل قبل نیز توضیح داده شد روش پایه مورد استفاده روش مدلهای گرافیکی است.در این مرحله از مقاله به ترتیب کارهای زیر انجام شده است :
۱. استخراج ویژگی ها با استفاده از STIP : یکی از روشهای استخراج ویژگی ها روش STIP است که در آن با استفاده از هسیتوگرام های HOG , HOF ویژگی های مد نظر بدست می آیند.مزیت استفاده از این روش توجه به زمان در کنار بعد مکان است و بنابراین برای کاربرد هایی مانند ویدئو به خوبی قابل استفاده است.
شکل زیر یک فریم از فریم ویدئوی دویدن با استفاده از STIP را نشان می دهد :
![توضیح تصویر](http://upload7.ir/uploads//69020e870c5f9bfc2a69050938cba53a51631436.jpg)
خروجی بالا از دستور زیر ایجاد شده است :
./bin/stipdet -i ./data/video-list.txt -vpath ./data/ -o ./data/walk-samples-stip.txt -det harris3d
که در آن به ترتیب اسامی ویدئو ها , آدرس دسترسی به دادگان, و خروجی و در نهایت روش مورد استفاده برای به دست آوردن Interest Point داده می شود.
۱.۱ مجموعه دادگان [^Dataset] : در این مرحله از داده های تهیه شده در [1]استفاده شده است.این مجموعه دادگان شامل ۶ کنشِ راه رفتن ,دویدن , آهسته دویدن , تکان دادن دست,مشت زدن و دست تکان دادن است که در ۴ سناریوی محیط بیرون, محیط بیرون با تغییر در مقیاس, محیط بیرون با لباس مختلف و محیط داخلی خانه و توسط ۲۵ نفر تهیه شده است(شکل ابتدای صفحه) که در این مرحله از ۴ کنش اول استفاده است.نرخ ویدئو در آنها ۲۵ فریم در ثانیه است که به طور میانگین ۴ ثانیه طول فیلمِ هر بخش است.تعداد کل دادگان در حالت ۶ کنش به ۲۳۹۱ عدد میرسد.در این مرحله آموزش با ۶ نفرو آزمایش با ۶ نفر دیگر انجام شده است.
مجموعه دادگان مورد استفاده در این مرحله از لینک زیر قابل دریافت است :
http://www.nada.kth.se/cvap/actions/
۲.به طور کلی در هر مساله که از مدل های گرافیکی استفاده کرده است, مدلی از مساله ایجاد می شود تا از آن برای استنتاج نهایی که همان استخراج مقدار احتمال است استفاده شود.یک مدل ساده شده برای مساله می تواند مدل زیر باشد :
![توضیح تصویر](http://upload7.ir/uploads//83580dc927b4e218b96f1c93aae2079c31f58953.jpg)
در این پروژه از مدل بالا که مثالی از مدل گرافیکی CRF است استفاده می شود. این مدل نمونه از مدلهای بدون جهت محسوب می شود.
شکل بالا مدل یک ویدئو مانند راه رفتن را نشان میدهد که از تعدادی فریم تشکیل شده است.این فریم ها دارای برچسب های L1 ,L2,...Ln هستند که در نهایت برچسب نهایی که Y است را منتج می شوند.
کاری که در این مرحله از پژوهش انجام شده است برای هر مورد ابتدا فیلم مورد استفاده فریم به فریم میشود کد مورد استفاده در این قسمت از لینک زیر قابل استفاده است :
http://upload7.ir/preview.php?user=&file=2e1e683ddc579c58d27d05cefe20caa2a5c90e5d
سپس با استفاده از روش STIP ویژگی های هر فریم از آن استخراج می شود و بردار ویژگی آن را می سازد.در این حالت یک مثال از بردار ویژگی به شکل زیر است :
0.575 0.708333 0.0619469 86 93 8 4 2 0.930706 0.0497958
که در آن به ترتیب مقادیر شامل y-norm x-norm t-norm y x t sigma2 tau2 hog hof است.
برای بدست آورد برچسب کلی کنش در هر ویدئو نیاز به برقراری ارتباط بین بردار ویژگی استخراج شده با برچسب هر فریم در گام اول
در این مرحله از پروژه از روش Bag of word یا Bag of feature استفاده می شود.مراحل انجام شده در مرحله آموزش در این بخش عبارتند از :
۱- فریم بندی ویدئو
۲- استخراج ویژگی ها از هر فریم با استفاده از روش SIFT
۳- خوشه بندی [^clustering ]توصیف کننده [^descriptor]های بدست آمده در مرحله قبل برای مقدار bag کشخص شده و آموزش bag ها با توصیف کننده های خوشه بندی شده با استفاده از الگوریتم K-means
۴- بدست آوردن کلمه تصویری [^visual vocabulary]
پیش از توضیح هر مرحله ابتدا اطلاعات اندکی درباره مجموعه دادگان مورد استفاده در این پروژه در زیر آمده است. در این پروژه از داده های تهیه شده در [1]استفاده شده است.این مجموعه دادگان شامل ۶ کنشِ راه رفتن ,دویدن , آهسته دویدن , تکان دادن دست,مشت زدن و دست تکان دادن است که در ۴ سناریوی محیط بیرون, محیط بیرون با تغییر در مقیاس, محیط بیرون با لباس مختلف و محیط داخلی خانه و توسط ۲۵ نفر تهیه شده است(شکل زیر) که در این مرحله از ۴ کنش اول استفاده است.نرخ ویدئو در آنها ۲۵ فریم در ثانیه است که به طور میانگین ۱۴ ثانیه طول فیلمِ هر بخش است.تعداد کل دادگان در حالت ۶ کنش به ۲۳۹۱ عدد میرسد.شکل زیر نمونه ای از فریم های کنش های مختلف را نشان میدهد: ![توضیح تصویر](https://boute.s3.amazonaws.com/125-1st.jpg)
.در این مرحله آموزش با ۱۷ نفر و آزمایش با ۸ نفر دیگر انجام شده است.به طور مثال برای آموزش دویدن از ویدئوهای ۱۷ نفر اول, هرکدام در ۴ موقعیت موجود استفاده شده است یعنی ۶۸ ویدئو برای هر کنش.
برای مرحله اول و دوم مانند قسمت بهبود نتایج عمل می کنیم.شرح کامل کار در مرحله ۱ و ۲ از بهبودنتایج آمده است.برای هر ویدئو در این قسمت با میانگیری یک بردار از توصیفکننده ها را بدست می آوریم.یعنی مثلا برای ویدئواول از دویدن person01_running_d1_uncomp با ۳۳۵ فریم یک بردار توصیف کننده میانگین در نظر میگیریم که از اینجا قابل دسترسی است .
در مرحله سوم descriptor های محاسبه شده برای هر فریم از هر ویدئو ُبه تعداد bag ها (disctionarySize در کد)خوشه بندی می شوند و سپس با آموزش واژگان [^ vocabulary]را تولید می کنند.پس از اجرای قطعه کد فایلی با نام dictionary.yml ایجاد می شود.کد این مرحله از [اینجا](https://github.com/rahimentezari/Activity-Recognition/blob/master/bog-s1.cpp) قابل دریافت است.
در مرحله بعد که مرحله آزمون است برای ویدئو داده شده ابتدا آن را فریم بندی میکنیم.برای هر فریم آن با استفاده از عملگر SIFT ویژگی های مد نظر یعنی توصیف کننده ها را بدست آورده میانگین آن را محاسبه می کنیم.سپس بردار توصبف کننده نماینده از این ویدئو را با واژگان بدست آمده از مرحله قبل تطابق می دهیم و هیستوگرام را می سازیم.کد این قسمت از[اینجا](https://github.com/rahimentezari/Activity-Recognition/blob/master/bog-s2.cpp) قابل دسترسی است.
نتایج بدست آمده از آزمون در این بخش به صورت زیر است :
![توضیح تصویر](https://boute.s3.amazonaws.com/125-2.jpg)
بهبود نتایج :
مراحل انجام شده در این بخش از پروژه به ترتیب عبارتند از :
۱- فریم بندی ویدئو
۲- استخراج ویژگی ها از هر فریم
۳- محاسبه میانگین و ماتریس کواریانس برای هر کنش
۴- استفاده از مدل گرافیکی احتمالاتی برای تعیین کنش در مرحله آموزش
۵- آزمون
مجموعه دادگان مورد استفاده در این پروژه از لینک زیر قابل دریافت است : http://www.nada.kth.se/cvap/actions
۱- فریم بندی :در مرحله آموزش (مثلا برای کنش دویدن)ابتدا ۶۸ ویدئو مورد نظر فریم بندی می شوند.برای فریم بندی از کد framing استفاده شده است که از [اینجا](https://github.com/rahimentezari/Activity-Recognition/blob/master/framing.cpp) قابل دسترسی است.هم چنین می توان از دستور زیر نیز در محیط لینوکس اوبونتو استفاده کرد :
ffmpeg -i inputfile.avi -r 25 -f image2 image-%3d.jpeg
که در آن فایل ویدیوی ورودی با نرخ ۲۵ فریم در ثانیه به فریم هایش شکسته میشود و در قالب تصاویری با پسوند jpeg ذخیره می شوند.یک مثال از فریم بندی ویدیوی اول برای دویدن از [اینجا](http://upload7.ir/preview.php?user=&file=2c6573bbef5717640e2f40016f28bccec002907e) قابل دسترسی است.
۲- استخراج ویژگی ها از هر فریم: در این مرحله با استفاده از عملگر SIFT ویژگی های مورد نظر از هر فریم استخراج می شوند.این عملگر بردارهای توصیف کننده ۱۲۸ تایی را تشکیل می دهد که از آنها در مرحله بعد استفاده می شود.کد استخراج کننده ویژگی ها با استفاده از SIFT از[اینجا](https://github.com/rahimentezari/Activity-Recognition/blob/master/sift-vector-drawpoint.cpp)قابل دریافت است.یک نمونه مجموعه بردار حاصل از SIFT نیز در اینجا قابل رویت است.در شکل زیر یک نمونه عملیات SIFT را بر روی یک فریم از کنشِ دویدن ملاحظه می کنید.
![توضیح تصویر](https://boute.s3.amazonaws.com/125-boute.jpg)
۳-محاسبه میانگین و ماتریس کواریانس برای هر کنش: در این مرحله بردار های ۱۲۸ تایی برای هر کنش باید در محاسبه ی میانگین و ماتریس کواریانس شرکت کنند.کد محاسبه میانگین و ماتریس کوواریانس از [اینجا](https://github.com/rahimentezari/Activity-Recognition/blob/master/Mu-Covariance.cpp) قابل دریافت است.
۴- استفاده از مدل گرافیکی احتمالاتی برای تعیین کنش در مرحله آموزش: همانطور که در مراحل قبل نیز توضیح داده شد روش پایه مورد استفاده روش مدلهای گرافیکی است.به طور کلی در هر مساله که از مدل های گرافیکی استفاده کرده است, مدلی از مساله ایجاد می شود تا از آن برای استنتاج نهایی که همان استخراج مقدار احتمال است استفاده شود.یک مدل ساده شده برای مساله می تواند مدل زیر باشد :
![توضیح تصویر](http://upload7.ir/uploads//83580dc927b4e218b96f1c93aae2079c31f58953.jpg)
در این پروژه از مدل بالا که مثالی از مدل گرافیکی CRF است استفاده می شود. این مدل نمونه ای از مدلهای بدون جهت محسوب می شود. شکل بالا مدل یک ویدئو مانند راه رفتن را نشان میدهد که از تعدادی فریم تشکیل شده است.این فریم ها دارای برچسب های L1 ,L2,...Ln هستند که در نهایت برچسب نهایی که Y است را منتج می شوند.
برای بدست آورد برچسب کلی کنش در هر ویدئو نیاز به برقراری ارتباط بین بردار ویژگی استخراج شده با برچسب هر فریم در گام دوم و سپس استفاده از آن در محاسبه برچسب کنش انجام شده طبق رابطه زیر است
P= 1/z Exp (-E)
که در آن E می تواند حاصل ضرب مقادیر تابع پتانسیل باشد.یک تعریف ساده از تابع پتانسیل می تواند رابطه بین متغیر ها باشد.
از آنجا که مقهوم تابع پتانسیل از اهمیت ویژه ای در این مقالهبحث برخوردار است به مثال زیر توجه کنید :
فرض کنید که ۴ دانشجو در مورد تمرینات درس الگوشناسی خود با هم بحث می کنند.تابع پتانسیل بین دو دانشجو C و B یاB,C)Phi )مانند زیر تعریف می شود:
![توضیح تصویر](http://upload7.ir/uploads//0b1fbe65ce22bd06b0e4ae4e65856227a38ceeea.png)
که در آن B , C با دو مقدار ۱ با هم اختلاف نظر داشته و با دو مقدار ۱۰۰ با هم, هم نظر هستند.
همانطور که در مدل بالا هم مشاهده می شود برچسب هر فریم با استفاده از ویژگی های استخراج شده و از طریق توابع پتانسیل بدست می آید. شایان ذکر است که در این مرحله از پروژه فرض دیگری استفاده شده است و آن اینکه نیازی به بدست آوردن برچسب های هر فریم نیست و برچسب هر فریم در مرحله آموزش از طریق مجموعه دادگان داده شده و همان برچسب کلی ویدئو است.
برای محاسبه تابع پتانسیل یک فرض ساده کننده استفاده از تابع توزیع نرمال است که رابطه آن به شکل زیر است :
![تابع توزیع نرمال](https://boute.s3.amazonaws.com/125-73ad15f79b11af99bd2477ff3ffc5a35.png)
رابطه مورد استفاده در این مرحله تابع توزیع دوتاشونده [^Bivariate] است که اندکی از رابطه بالا پیچیده تر است چرا که همبستگی بین ویژگی ها نیز در نظر گرفته شده است:
![توضیح تصویر](http://upload7.ir/uploads//2fb9058fc962762743bd7e4343326468b4b60745.jpg)
بنابراین برای استفاده از رابطه بالا نیاز به محاسبه میانگین و ماتریس کوواریانس است.ماتریس کواریانس که طبق شکل زیر محاسبه می شود بیانگر میزان وابستگی ویژگی ها به یکدیگر است .
![توضیح تصویر](http://upload7.ir/uploads//e499512a72229422c1d8f210d548cadcdbf4d860.png)
کد محاسبه کننده این مقادیر از لینک زیر قابل دسترسی است :
http://upload7.ir/preview.php?user=&file=c9c4a0305ffde35e6b68c6f4e1b01be4e1319e96
برای محاسبه Z در فرمول احتمال نهایی از جمع حاصلضرب توابع پتانسیل استفاده میشود
پس مثلا برای میانگین گیری برای هر ویدئومانند راه رفتن, بردارهای ویژگی, از همه فریم های همه ی ویدئو های مربوط به راه رفتن با هم میانگین گرفته می شود.هنگامی که داده جدید برای برچسب گذاری به سیستم داده میشود بردار ویژگی هر فریم از آن استخراج میشود و به جای x در رابطه بالا قرار میگیرد.سپس مقدار توابع پتانسیل با بردار ویژگی استخراج شده از ویدئو مدنظر, به ازای مقادیر مختلف mu و ماتریس کوواریانس که نماینده کنش های مختلف هستند محاسبه می شود.در مرحله نهایی مقدار احتمال به ازای این مقادیر مختلف بدست می آید.بیشترین مقدار احتمال به ازای این مقادیر مختلف میانگین ,کوواریانس و توابع پتانسیل نشانگر کنش تشخیص داده شده است.
بنابراین به طور خلاصه برای پیاده سازی با استفاده از مدل مطرح شده ابتدا فریم بندی برای هر ویدئو انجام شده, با استفاده از STIP ویژگی ها استخراج شده,با استفاده از این مقادیر و تابع توزیع Bivariate مقادیر پتانسیل و در نهایت احتمال محاسبه می شود.
//توضیح آنکه تمامی کد ها توسط بنده نوشته شده است.همچنین امکان آپلود عکس ها در سایت وجود نداشت!!
# کارهای آینده
در آینده می توان فرض ساده سازی مدل گرافیکی که در آن ارتباط میان برچسب های مختلف در نظر گرفته نشده است نیز مدنظر قرار گیرد تا دقت بیشتری بدست آید.
کار دیگری که می توان انجام داد استفاده از PCA برای انتخاب و کاهش ویژگی های مورد استفاده بر اساس بزرگی مقدار ویژه از روی ماتریس کووارینس محاسبه شده است.
هم چنین می توان مجموعه دادگان را پیچیده تر کرده و با مجموعه دادگان HollyWood کار کرد.بنابراین برای استفاده از رابطه بالا نیاز به محاسبه میانگین و ماتریس کوواریانس است.ماتریس کواریانس که طبق شکل زیر محاسبه می شود بیانگر میزان وابستگی ویژگی ها به یکدیگر است .(محاسبه این ماتریس در گام قبل انجام شده است.)
![توضیح تصویر](http://upload7.ir/uploads//e499512a72229422c1d8f210d548cadcdbf4d860.png)
برای محاسبه Z در فرمول احتمال نهایی از جمع حاصلضرب توابع پتانسیل استفاده میشود
۵-آزمون : هنگامی که داده جدید برای برچسب گذاری به سیستم داده میشود بردار ویژگی هر فریم از آن استخراج میشود. سپس مقدار میانگین و ماتریس کوواریانس به ازای تمامی این فریم ها محاسه می شود. .در مرحله چهارم مقدار توابع پتانسیل با بردار ویژگی استخراج شده از ویدئو مدنظر, به ازای مقادیر مختلف mu و ماتریس کوواریانس که نماینده کنش های مختلف هستند محاسبه می شود.در مرحله نهایی مقدار احتمال به ازای این مقادیر مختلف بدست می آید.بیشترین مقدار احتمال به ازای این مقادیر مختلف میانگین ,کوواریانس و توابع پتانسیل نشانگر کنش تشخیص داده شده است.
فرآیند یادگیری ویدئو ها در دو مرحله انجام می شود. در مرحله اول به صورت یک در مقابل همه[^one-versus-all] برای هر کدام از کلاس ها یک boosted decision tree classifier آموزش داده می شود تا هر کلاسیفایر بتواند کلاس مربوط به خود را با توجه به ویژگی فریح ها ها پیش بینی کند. در مرحله دوم یادگیری خروجی مرحله اول به یک کلاسیفایر لاجستیک رگرسیون چند کلاسه داده می شود.جهت ارزیابی مدل یادگرفته شده روی داده های تست، از الگوریتم Alpha expansion برای استنتاج استفاده می کنیم.
# نتایج
در مرحله آزمون از ویدیو های مربوط به ۸ نفر انتهایی استفاده شده است.یعنی برای هر کنش ۳۲ ویدیو مورد آزمون قرار گرفته اند.ماتریس درهم ریختگی[^Confusion Matrix] نتایج بدست آمده در جدول زیر آمده است. همان طور که از جدول مشخص است با روش ارائه شده به دقت ۷۸ درصد برای کنش دویدن رسیدیم.یک نمونه آزمایش دادگان پیچیده راه رفتن که سیستم به اشتباه دویدن تشخیص داده است را در [اینجا](http://mocap.cs.cmu.edu/subjects/08/08_07.mpg) می توانید ببینید
![توضیح تصویر](https://boute.s3.amazonaws.com/125-test.jpg)
# مراجع
[1] Laptev, Ivan. "On space-time interest points." International Journal of Computer Vision 64.2-3 (2005): 107-123. [لینک](ftp://ftp.nada.kth.se/CVAP/users/laptev/iccv03.pdf)
[2] Laptev, Ivan, et al. "Learning realistic human actions from movies." Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on. IEEE, 2008. [لینک](http://www.irisa.fr/vista/Papers/2008_cvpr_laptev.pdf)
[3] Marszalek, Marcin, Ivan Laptev, and Cordelia Schmid. "Actions in context." Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 2009. [لینک](http://www.irisa.fr/vista/Papers/2009_cvpr_marszalek.pdf)
[4] Ghazvininejad Marjan, Rabiee Hamid R., Pourdamghani Nima, Khanipour Parisa. "HMM Based Semi-Supervised Learning for Activity Recognition.
[5] Schuldt Christian, Laptev Ivan, Caputo Barbara , "Recognizing Human Actions: A Local SVM Approach"
[6] Aggarwal, J.K. Ryoo, M.S., "Human activity analysis", 2011,ACM Computing Surveys,2011
[7] Jhuang Hueihan, Zuffi Silvia ,Schmid Cordelia, Black, Michael J, "Towards understanding action recognition", 2013, ICCV, 2013
[8] Liu Jingen, Kuipers Benjamin, Savarese Silvio, "Recognizing Human Actions by Attributes"
[9] Maji Subhransu, Bourdev Lubomir, Malik Jitendra, "Action Recognition from a Distributed Representation of Pose and Appearance"
[10] Planck Max, Dhillon Paramveer S, Nowozin Sebastian, Lampert Christoph H, "Combining Appearance and Motion for Human Action Classification in Videos", 2008
[11] Weinland Daniel,Ronfard Remi,Boyer Edmond, "A Survey of Vision-Based Methods for Action Representation , Segmentation and Recognition", 2010
[12] L. R. Rabiner. A tutorial on hidden markov models and selected applications in speech recognition. In Proc. of the
IEEE, volume 77, pages 257–286, 2002.
[13] A. Kapoor and R. Picard. A real-time head nod and shake detector. In Proceedings from the Workshop on Perspective
User Interfaces, November 2001.
[14] A. McCallum, D. Freitag, and F. Pereira. Maximum entropymarkov models for information extraction and segmentation.
In ICML, 2000.
[15] J. Lafferty, A. McCallum, and F. Pereira. Conditional random fields: probabilistic models for segmenting and la-
belling sequence data. In ICML, 2001.
[16] C. Sminchisescu, A. Kanaujia, Z. Li, and D. Metaxas. Conditional models for contextual human motion recognition. In
Int’l Conf. on Computer Vision, 2005.
[17] A. Quattoni, M. Collins, and T. Darrell. Conditional random fields for object recognition. In NIPS, 2004.
[18] M. Brand, N. Oliver, and A. Pentland. Coupled HiddedMarkov models for complex action recognition. In CVPR, 1996
[19] D. Ramanan and D. Forsyth. Automatic annotation of everyday movements. In NIPS, 2003.
# پیوندهای مفید
+ [Dataset: KTH](http://www.nada.kth.se/cvap/actions/)
+ [Dataset: Hollywood1 - 2](http://www.di.ens.fr/~laptev/download.html)