دسته‌بندی کنش‎های انسان بر اساس مکان مفاصل

تغییرات پروژه از تاریخ 1393/11/14 تا حالا
هر اقدام یا کنش یک انسان با استفاده از حرکت دادن مفصل‌هایش انجام می‌گیرد. بنابراین بین انجام یک کنش و نحوه حرکات مفصل‌ها رابطه وجود دارد. هدف از این پروژه تشخیص کنش‌های انسان با استفاده از مسیر حرکت سه‌بعدی مفصل‌ها است. به عبارت دیگر با داشتن اطلاعات مکان مفصل‌های یک فرد در یک بازه زمانی، کنشی که این فرد انجام داده است باید تشخیص داده شود.

# مقدمه
تشخیص کنش‌های انسان یکی از بخش‌های مهم در بینایی ماشین است و بسیاری از سامانه‌های مختلف (مانند سامانه خلاصه سازی ویدئو، تشخیص خودکار حرکات ورزشی، نظارت خودکار در مکان‌های عمومی، تعامل انسان با کامپیوتر بدون استفاده از صفحه کلید و موشواره و ... ) نیاز به تشخیص کنش انسان دارند. بعضی از سامانه‌ها کنش‌های جدیدی برای خود تعریف می‌کنند مثلا در بسیاری از برنامه‌های ارتباط با کامپیوتر یک حرکت خاص با دست، چشم یا سر باعث عملکرد خاصی در برنامه می‌شود. در مقابل این گروه سامانه‌های دیگری هستند که حرکات طبیعی انسان را شناسایی و تحلیل می‌کنند مثلا سامانه نظارت خودکار، نیاز به فهمیدن کنش‌های طبیعی انسان مانند دویدن، توقف، راه رفتن و .. دارد. 
یک راه حل برای تشخیص کنش، استفاده از پردازش تصاویر دو بعدی در ویدئو است [4][3][2][1]. اما با پیشرفت فناوری بسیاری از ابزارهای اندازه‌گیری عمق در دسترس قرار گرفتند (مانند کینکت[^kinect]) و همچنین استفاده از چند دوربین نیز ممکن شد. روش دیگر استفاده از این اطلاعات سه بعدی برای تشخیص کنش است [9][8][7][6][5]. برای محاسبه اطلاعات سه بعدی می‌توان اطلاعات عمق را به صورت مستقیم اندازه‌گیری کرد [5] یا با استفاده از چند دوربین این اطلاعات را به دست آورد.
قسمت اول تشخیص کنش‌های انسان پیدا کردن قسمت‌های مختلف بدن انسان و ردیابی آنها در اطلاعات و ویدئو‌های ورودی است که در این پروژه فرض شده این قسمت انجام شده است. این کار یا با استفاده از چند دوربین و  محاسبه ارتباط بین آنها یا با استفاده از حسگرهای اندازه گیری مکان یا با هر روش دیگری ممکن است انجام شده باشد. حتی اگر این اطلاعات به صورت کاملا دقیق محاسبه شوند هنوز تشخیص کنش‌های انسان پیچیده و دشواره خواهد بود. یکی از دلایل آن ابعاد زیاد اطلاعات بدست آمده است که باعث افزایش محاسبات و خطا در تشخیص کنش می‌شود.
ورودی این پروژه  اطلاعات محاسبه شده سه‌بعدی مکان مفصل‌های یک انسان در یک بازه زمانی هستند و با استفاده از این اطلاعات، کنش مرتبط تشخیص داده خواهد شد. کنش‌های مورد نظر، کنش‌های طبیعی انسان مانند راه رفتن، نشستن، دویدن و ... هستند.


# کارهای مرتبط
اگر رده‌بندی مثل SVM و شبکه بیز [^Bayesian Networks] فقط با مکان مفاصل بدن کنش‌ها را تشخیص دهد، نمی‌تواند به خوبی عمل کند. زیرا کنش‌های متفاوتی هستند که این الگو برای آنها یکسان است. فنگجان  [6]  برای یادگیری کنش‌ها، یک مدل فضایی زمانی [^spatiotemporal] جدید ارائه می‌دهد و در ادامه برای پیدا کردن یک کنش جدید، آن را با مدل‌های قبلی مقایسه می‌کند. در مدل آنها برای اندازه‌گیری فاصله ابتدا برای هر مفصل فاصله تا مدل محاسبه می‌شود و سپس مجموع وزن‌دار فاصله‌های اندازه‌گیری شده به عنوان فاصله‌ی نهایی در نظر گرفته می‌شود. در نهایت مدل با کمترین فاصله به عنوان نتیجه نهایی اعلام می‌شود.
ایلماز [10] روشی برای استفاده از حجم تصویر یک شی در طول زمان   [^spatio temporal volumes]   (STV) برای تشخیص کنش‌های مختلف ارائه کرده‌  است. تصویر یک شی را در نظر بگیرید. این تصویر در طول زمان به صورت یک حجم است. آنها ویژگی‌های مختلف هندسی از STV‌‌‌‌ استخراج کردند. در اینجا مسئله رده‌بندی کنش به مسئله پیدا کردن یک شی سه بعدی صلب [^rigid] تبدیل می‌شود. برای تعیین شباهت بین دو شی، که از دو کنش استخراج شده‌اند، دوران و انتقالی را پیدا می‌کنند که فاصله اقلیدسی بین دو شی را حداقل کند.
![شکل 1- تصویر کنش‌های حرکت پروانه، راه رفتن و دویدن در طول زمان[11]](http://s6.uplod.ir/i/00475/4cc65gbdwly1.png)
گورلیک  هم از حجم تصویر شی در طول زمان استفاه کرده است[11]. چند نمونه از STV در شکل بالا نشان داده شده است. دراین روش پس زمینه حذف شده است و سپس حبابهای[^blob] استخراج شده برای تشکیل حجم شی بر روی هم قرار گرفته‌اند. برای هر کنش دو نوع ویژگی محلی [^local]  و کلی [^global] در نظر می‌گیرند. حل معادله پواسون [^Solution to the Poisson equation] را برای استخراج ویژگی‌های محلی به کار می‌برند. برای استخراج ویژگی کلی STV از ممان وزن‌دار ،که از رابطه 1 محاسبه می‌شود، استفاده می‌کنند. در این رابطه x,y,t نشان‌دهنده مکان،‌w یک تابع وزن و g اندازه تصویر را نشان می‌دهند. در نهایت  این ویژگی‌ها را برای رده‌بندی کنش‌ها به کار می‌برند. 
رابطه 1)                        $$m_{pqr}=\int_{-\infty}^{\infty}{\int_{-\infty}^{\infty}{\int_{-\infty}^{\infty}{w(x,y,t) g(x,y,t) x^p y^q t^r dxdydt}}}$$

در روشی که چیا ارائه کرده است [5] ابتدا برای حذف خطا  از فیلتر گوسی [^Gussian]  در حوزه مکان استفاده کرده است. سپس برای استخراج نقاط ویژگی[^Feature point] فیلتر گابور [^Gabor] را در حوزه زمان به کار برده است. الگوریتم ارائه شده توسط آنها نقاط ویژگی وابسته به مکان و زمان [^Space Time Interest Point (STIP)] را استخراج می‌کند و یک مدل محلی سه بعدی می‌سازد.
لی از شار نوری [^Optical flow] به عنوان ویژگی استفاده کرده است[12]. آنها شار نوری را از قسمت‌های مختلف تصویر در فضای رنگی rgb استخراج کرده‌اند.  لی همچنین برای کاهش ابعاد PCA را به کار برده و پس از آن برای نشان دادن هر کنش در هر دید از مدل مخفی مارکف [^Hidden Markov Model] کمک گرفته است.
![محیط سیاه‌نمای استخراج شده و سیگنال ویژگی یک بعدی [13]](http://s1.freeupload.ir/i/00052/iu4urfbz52nk.png)
در روشی که ونگ ارائه کرده است [13] برای تشخیص کنش‌ها ابتدا سیاه‌نمای [^Silhouette] تصویر استخراج می‌شود. سپس محیط سیاه‌نمای استخراج شده با فاصله‌های ثابت نمونه برداری می‌شود. درادامه فاصله این نقاط تا مرکز ثقل [^center of gravity]‌ شی به عنوان ویژگی‌ها محاسبه می‌شوند. این ویژگی برای مستقل بودن از بزرگنمایی نسبت به اندازه و تعداد نرمال‌سازی می‌شوند. مطابق شکل بالا ویژگی‌های استخراج شده یک سیگنال یک بعدی را تشکیل می‌دهند. تعداد این نقاط زیاد هست و اطلاعات آنها همپوشانی دارد بنابراین از PCA برای کاهش این نقاط استفاده‌ می‌کنند. در اینجا برای رده‌بندی کنش‌ها از روش نزدیکترین همسایه[^Nearest neighbor]  استفاده شده است.  آنها مجموع فاصله اقلیدسی نقاط ویژگی متناظر را به عنوان معیار فاصله به کار برده‌اند. همچنین معیار فاصله دیگری که بررسی کرده‌اند فاصله اقلیدسی نرمال شده است.
شلاپا [8]یک مدل مستقل از دید[^view] برای شناسایی کنش‌ها طراحی کرده است. در مدل آنها هر کنش یک دنباله از مکان‌های بدن هست. در اینجا فرض شده است که مسیر حرکت یکی از نقاط کلیدی بدن در یک صفحه در فضای سه بعدی هست. مثلا در کنش راه رفتن محل سر، شانه‌ها و پا در یک تناوب در یک صفحه قرار دارند. آنها با این فرض یک ویژگی مستقل از دید ارائه داده‌اند.
![گراف وزن‌دار مدل کننده یک کنش](http://s1.freeupload.ir/i/00052/09y5yqskpnmf.png)
برندل[1]  مدلی را ارائه داده‌است که می‌تواند کنش‌های یک ویدئو را تشخیص دهد. روش ارائه شده می‌تواند یک کنش را با استفاده از قطعه‌بندی‌کردن[^segmentation] یک ویدئو، به صورت یک گراف وزن‌‌دار مدل کند. آنها فرض کرده‌اند قسمت‌های مختلف در یک کنش دارای رابطه ثابتی هستند. آنها ابتدا ویدئو ورودی را قطعه‌بندی میکنند و سپس در مدل ساخته شده، هر بخش را با یک گره و رابطه بین بخش‌های مختلف را با یال‌ها نشان می‌دهد. یک نمونه از گراف ساخته شده در شکل بالا نشان داده شده است.
جمالی‌فر  [9]برای رده‌بندی کنش‌ها از مکان سه‌بعدی مفصل‌ها در یک بازه زمانی استفاده می‌کند. آنها ویژگی جدیدی برای تشخیص کنش‌ها ارائه داده‌اند. برای محاسبه ویژگی از پارامترهای مدل پویای فرآیند گوسی [^Gaussian process dynamical model] استفاده می‌کنند. در روش ارائه شده، با استفاده از پارامترهای به دست آمده توسط این مدل برای هر نمونه داده،‌ ویژگی‌های مناسب استخراج می‌شود و از این ویژگی‌ها برای رده‌بندی استفاده می‌کنند. آنها برای رده‌بندی کنش‌ها با استفاده از ویژگی جدید خود از رده‌بند SVM استفاده کرده‌اند. دلیل استفاده از این رده‌بند، بردن بردار ویژگی‌ها به فضاهای بالاتر است. همچنین روش KNN را برای این کار مناسب دانسته‌اند.

# آزمایش‌ها
در این پروژه با داشتن مسیر حرکت سه بعدی قسمت‌هایی از بدن در یک بازه زمانی، کنشی که فرد انجام داده است تشخیص داده می‌شود. در ادامه ابتدا روش ارائه شده بیان می‌شود و سپس در قسمت نتایج به بررسی عملکرد روش ارائه شده پرداخته می‌شود.
#روش ارائه شده 
در دیتاست مورد استفاده مسیرهای حرکت قسمت‌های مختلف بدن با استفاده از حسگرهایی به صورت سه بعدی در فضای XYZ اندازه‌گیری شده‌اند. محل قرار گیری حسگرها را در تصویر زیر می‌توانید مشاهده کنید. مسیر حرکت هر کدام از این قسمت‌ها می‌تواند برای  دو یا چند کنش، متفاوت باشد. بنابراین با مقایسه مسیر حرکت این قسمت با داده‌های آموزشی می‌توان کنش مربوطه را تشخیص داد. در ردیابی هر قسمت از بدن در فضای سه‌بعدی سه عدد (x,y,z) وجود دارد که هر کدام در طول زمان یک سیگنال یک بعدی می‌سازند. بنابراین با داشتن مسیر حرکت هر حسگر در یک کنش، در واقع سه سیگنال یک بعدی برای توصیف آن کنش وجود دارد.
![توضیح تصویر](http://s6.uplod.ir/i/00500/7yssog8yug3l.png)
 در شکل زیر برای قسمت‌های مختلف بدن این سیگنال‌ها نشان داده شده است(شکل از [6]). دو تصویر سمت چپ مربوط به سیگنال‌های کنش راه رفتن در دو اجرای متفاوت و دو شکل سمت راست مربوط به کنش نشستن در دو اجرا هستند. هر سیگنال در 4 تصویر به یک رنگ است. با مشاهده تصاویر می‌توان شباهت بین این سیگنال‌ها در یک کنش را فهمید.
 ![توضیح تصویر](http://s6.uplod.ir/i/00500/8vpwy75rp3jf.bmp)
 زمانی که دو کنش در یک جهت و از یک حالت اولیه شروع به فعالیت می‌کنند، در آن‌ها سیگنال‌های مرتبط مشابه هستند. دو مشکل اصلی در اینجا وجود دارد. مسئله اول اینکه یک کنش می‌تواند در جهت‌های مختلف انجام شود و بنابراین مقادیر اندازه‌گیری شده توسط حسگرها متفاوت خواهد بود. مثلا کنش راه‌رفتن می‌تواند در جهت  محور X یا در جهت محور Y باشد. در حالت اول سیگنال مختصات X  از حسگر قرار گذاشته شده روی سر نسبت به سیگنال مختصات Y‌‌ از همین حسگر، در زمان تغییرات زیادی خواهد داشت و در حالت دوم سیگنال مرتبط به Y‌تغییرات بیشتری خواهد داشت. برای بر طرف کردن این ایراد،  می‌توان محورهای مختصات را در جهتی قرار داد که برای موردهای مختلف تقریبا یکسان باشد. برای این کار محورهای جدیدی با توجه به محل قرار گیری و جهت فرد تعریف می‌کنیم. برای هر فرد در فریم اول شروع کنش یک دستگاه مختصات جدید می‌سازیم و تمام مختصات‌های موجود را به این دستگاه مختصات جدید منتقل می‌کنیم.
با توجه به شکل‌های بالا، محل قرارگیری سه حسگر LBWT، RBWT و T10 را بر روی بدن  در نظر بگیرید.  صفحه‌ای که از این سه نقطه می‌گذرد را صفحه YZ دستگاه مختصات جدید و محور X را برابر با محور عمود بر این صفحه در نظر می‌گیریم. بنابراین محورهای جدید مختصات با توجه به روابط زیر محاسبه می‌شوند‌: 

$$vy^i=RBWT^i (1)-LBWT^i (1)$$
$$vt^i=T10-LBWT^i (1)$$
$$vx^i=  vy^i×vt^i$$
$$vz^i= vx^i×vy^i$$

که بردار‌های vy، vx‌و vz‌ سه محور جدید برای این داده هستند. اندیس i نشان دهنده این است که این بردارها برای هر داده به صورت جداگانه محاسبه می‌شوند. عدد 1 داخل پرانتز جلوی اسم سه حسگر RBWT و  LBWT و LBWT  نشان‌دهنده این است که برای هر داده فقط یکبار بردار جدید با توجه به مختصات این حسگرها در لحظه 1 محاسبه می‌شود و برای بقیه لحظات و فریم‌ها از همین مختصات استفاده می‌شود. دقت کنید که مقدار این حسگرها یک بردار سه بعدی است و بردارهای بدست آمده برای محورهای مختصات نیز سه بردار سه بعدی عمود بر هم هستند. پس از محاسبه بردارها، آنها را با تقسیم  به صورت بردارهای یکه در می‌آوریم. همچنین مبدا مختصات جدید را برابر با نقطه T10 در فریم اول قرار می‌دهیم. بنابران اگر X مختصات یک نقطه در فضای قبل باشد، مختصات این نقطه در فضای جدید Y به صورت زیر محاسبه می‌شود. R ماتریس دوران بین دو دستگاه مختصات است:
$$Y=R*(X-T10)$$
$$R=[vx  ;  vy   ;   vz]$$

مورد دوم که تشخیص کنش را با مشکل روبرو می‌کند این است که کنش‌ها دقیقا حالت اولیه یکسانی ندارند. مثلا ممکن است برای کنش پریدن، داده‌های فرد از حالت ایستاده شروع شده باشند یا از حالتی که فرد تا حدی نشسته است و نیم خیز است شروع به پریدن و جهش کند. این دو حالت دارای سیگنال‌های متفاوتی هستند. همچنین در کنش "راه رفتن" هر شخص می‌تواند با پای راست یا چپ شروع به حرکت کند ک این باعث تغییر در سیگنال اندازه گیری محل پاها می‌شود. این تغییر باعث می‌شود تا برای بعضی سیگنال‌ها در زمان یک جابه‌جایی داشته باشیم. برای حذف این جابه‌جایی از سیگنال‌ها تبدیل فوریه می‌گیریم و مقدار سیگنال‌ها را در فضای فوریه برای یافتن کنش مورد نظر بررسی می‌کنیم. برای حذف خطاهای اندازه‌گیری و نویز می‌توان فرکانس‌های بالا را با یک فیلتر پایین گذر حذف کرد.
#مقایسه فاصله دو داده
پس از برطرف کردن مشکلات گفته شده در قسمت قبل به رابطه‌ای برای تشخیص تشابه دو سیگنال مشابه از دو کنش نیاز داریم. برای این کار از مجموع مربعات تفاوت بین دو سیگنال استفاده می‌کنیم. همان‌طور که در قسمت قبل گفته شد، سیگنال‌ها را در فضای فوریه بررسی می‌کنیم. برای محاسبه فاصله دو سیگنال حسگر c‌  از دو نمونه داده i و j‌ّ  یعنی ( d(i,j از رابطه زیر استفاده می‌کنیم:
$$d_{i,j}^c=∑_{f=1}^L{(s_i ^c (f)-s_j^c(f))^2} $$
که در این رابطه s ها مقدار دو سیگنال i و j را برای فرکانس f ام در فضای فوریه را بیان می‌کنند. L تعداد نمونه‌های انتخاب شده است که برای تمام سیگنال‌ها مشابه است.  
پس از محاسبه اختلاف بین دو سیگنال می‌توان با توجه به مقدارهای بدست آمده، یک معیار فاصله برای دو داده ورودی تعیین کرد. این معیار را با مجموع وزن‌دار فاصله بین سیگنال‌های مرتبط محاسبه می‌کنیم. نحوه محاسبه توسط رابطه زیر نشان داده شده است که در آن(D(i,j برابر با فاصله دو داده i و j است. C برابر با تعداد حسگرهای مورد استفاده قرار گرفته و w وزن مرتبط با هر حسگر است. 
$$D_{i,j}= ∑_{c=1}^Cw_c d_{i,j}^c $$
#مراحل کلی  و نتایج
برای تشخیص یک کنش، ابتدا هر داده از مجموعه داده آموزشی را با توجه به تبدیل گفته شده در قسمت‌های قبل به فضای جدید مرتبط به همان داده آموزشی انتقال می‌دهیم. پس از آن برای تشخیص کنش مرتبط با یک داده جدید ابتدا داده‌های این کنش جدید را هم به دستگاه جدید منتقل می‌کنیم و پس از آن برای تشخیص کنش مربوطه از دسته‌بند KNN‌استفاده می‌کنیم. معیار فاصله مورد استفاده در این دسته‌بند در  بخش‌های قبلی توضیح داده شد.
برای بررسی روش ارائه شد از مجموع داده MoCap استفاده شد. این مجموعه داده برای کنشهای مختلف، مسیر حرکت قسمت‌های بدن را با استفاده از حسگرهایی ذخیره کرده است. تصویر محل حسگرها در شکل نشان داده شده است. در اینجا از حسگرهای CLAV،‌ RELB ، LELB، RKNE‌و LKNE استفاده کردیم. برای یکسان نمودن جهت انجام کنش‌ها همان‌طور که در قسمت‌های قبل توضیح داده شد از مختصات سه حسگر LBWT، RBWT و T10 استفاده شد. این مجموعه داده شامل 6 دسته اصلی و 23 دستی فرعی است. ما از دسته LOCOMOTION  استفاده کردیم. این دسته سه کنش راه رفتن، دویدن و پریدن را دارد. برای آزمایش از 76 کنش شامل 39 کنش راه رفتن، 22 کنش دویدن و 15 کنش پریدن استفاده کردیم.
برای آزمایش از روش leave-one-out و برای دسته‌بند از 1NN استفاده کردیم.  ماتریس درهم ریختگی[^CONFUSION MATRIX]  نتایج بدست آمده در جدول زیر آمده است. همان طور که از جدول مشخص است با روش ارائه شده به دقت[^accuracy]  79 درصد رسیدیم. جمالی فر [17] و فنگجان [1] دقت خود را بر روی این مجموعه داده به ترتیب 90.69درصد و 90.7 درصد اعلام کرده‌اند. تعداد کنش‌های مورد بررسی جمالی فر 4 کنش از جمله راه رفتن، دویدن و پریدن است اما فنگجان کنش‌های بیشتری (16 کنش) را مورد بررسی قرار داده است.
یک  نمونه از راه رفتن که روش ارائه شده به اشتباه دویدن تشخیص داده است را می‌توانید در [اینجا](http://mocap.cs.cmu.edu/subjects/08/08_07.mpg)ببیند. همچنین یک نمونه از دویدن که به اشتباه راه رفتن تشخیص داده شده است را در [اینجا](http://mocap.cs.cmu.edu/subjects/09/09_05.mpg) ببینید.

![توضیح تصویر](http://s6.uplod.ir/i/00500/ql2ouwdes5uo.bmp)

#بهبو د نتایج با استفاده از یادگیری تجمعی
در قسمت قبل از  یک دسته‌بند برای یادگیری و دسته‌بندی کنش‌ها استفاده شد. حال می‌توان چندین دسته‌بند آموزش داد و سپس نتایج آنها را ترکیب کرد. برای رسیدن به این هدف،‌برای هر یک از حسگرها یک دسته بند 1NN  طراحی و آموزش داده‌شد و برای به دست آوردن نتیجه نهایی بین دسته‌بندها رای‌گیری شد. به تمام دسته‌بندها وزن مساوی داده شد یعنی هر کدام یک رای داشتند. هنگام تشخیص یک حرکت جدید، کنشی که بیشترین رای را توسط دسته‌بندها آورد به عنوان نتیجه نهایی انتخاب شد.
برای بررسی نتایج یادگیری تجمعی از همان داده‌های قسمت قبل استفاده کردیم و در اینجا هم مانند قسمت قبل از روش leave-one-out‌ استفاده شد.در دیتاست استفاده شده، تعداد حسگرها 41 عدد است بنابراین 41 دسته‌بند1NN  به صورت جداگانه،‌هر کدام با استفاده از یک حسگر آموزش داده شدند. معیار فاصله مورد استفاده در این دسته‌بندها در بخش‌ مقایسه فاصله دو داده توضیح داده شد. دقت هر کدام از دسته‌بندها که با استفاده از از یک حسگر کار می‌کردند بین 71 تا 82 درصد بود. اما دقت ترکیب آن‌ها به 87 درصد رسید. نتایج بدست آمده از روش یادگیری تجمعی در جدول زیر آمده است.

![توضیح تصویر](http://s6.uplod.ir/i/00522/s3zp1ex81mrx.bmp)

 
# کارهای آینده
در ادامه می توان روشی برای حذف تاثیر قد ارائه کرد و  داده‌های ورودی را قبل از یادگیری، نسبت به قد افراد نرمال‌سازی کرد. در روش ارائه شده از دسته‌بند نزدیک‌ترین همسایه استفاده شد اما می‌توان از دسته‌بندهای دیگر همانند SVM‌ نیز استفاده کرد و نتایج این دسته‌بندها را در یادگیری تجمعی به کار برد. همچنین برای ترکیب دسته‌بندها می‌توان به تمام حسگرها رای یکسان نداد و بر اساس دقت این حسگرها و دقت دسته‌بند مرتبط رای آنها را متفاوت کرد.

# مراجع

[1] Brendel, William, and Sinisa Todorovic. "Learning spatiotemporal graphs of human activities." In Computer Vision (ICCV), IEEE International Conference, pp. 778-785, 2011
[2] A. Oikonomopoulos, I. Patras and M. Pantic. “Spatiotemporal saliency for human action recognition.” In Proc. Of IEEE Int’l Conf. on Multimedia and Expo (ICME’05), 2005.
[3] A. Shokoufandeh, S.J. Dickinson, C. Jonsson, L. Bretzner and T. “Lindeberg. On the representation and matching of qualitative shape at multiple scales.” In Proc. of ECCV, pp. 759-775, 2002.
[4] Zhu, Yuke, Tian Lan, Yijian Yang, Steven N. Robinovitch, and Greg Mori. "Latent Spatio-temporal Models for Action Localization and Recognition in Nursing Home Surveillance Video." In IAPR Conference on Machine Vision Applications (MVA). 2013.
[5] Xia, Lu, and J. K. Aggarwal. "Spatio-temporal depth cuboid similarity feature for activity recognition using depth camera." In Computer Vision and Pattern Recognition (CVPR), IEEE Conference, pp. 2834-2841, 2013.
[6] Lv, Fengjun, Ramakant Nevatia, and Mun Wai Lee. "3D human action recognition sing spatio-temporal motion templates." In Computer Vision in Human-Computer Interaction, pp. 120-130., 2005
[7] L. Campbell and A. Bobick. “Recognition of human body motion using phase space constraints.” In Proc. of ICCV, pp. 624-630, 1995.
[8] V. Parameswaran and R. Chellappa. “View invariants for human action recognition.” In Proc. of CVPR, pp. 613-619, 2003.
[9] Jamalifar, Hamed, Vahid Ghadakchi, and Shohreh Kasaei. "3D human action recognition using Gaussian processes dynamical models." In Telecommunications (IST), Sixth International Symposium, pp. 1179-1183, 2012.
 [10] Yilmaz, Alper, and Mubarak Shah. "Actions sketch: A novel action representation." In Computer Vision and Pattern Recognition, 2005. CVPR 2005. IEEE Computer Society Conference, pp. 984-989, 2005.
[11] Gorelick, Lena, Moshe Blank, Eli Shechtman, Michal Irani, and Ronen Basri. "Actions as space-time shapes." Pattern Analysis and Machine Intelligence, IEEE Transactions, pp. 2247-2253, 2007.
[12] Ahmad, Mohiuddin, and Seong-Whan Lee. "Human action recognition using multi-view image sequences." In Automatic Face and Gesture Recognition, 2006. FGR 2006. 7th International Conference, pp. 523-528, 2006.
[13] Wang, Liang, Tieniu Tan, Huazhong Ning, and Weiming Hu. "Silhouette analysis-based gait recognition for human identification." Pattern Analysis and Machine Intelligence, IEEE Transactions, pp. 1505-1518, 2003.



# پیوندهای مفید
+ [CMU Graphics Lab Motion Capture Database](http://mocap.cs.cmu.edu/search.php?subjectnumber=%&motion=%)
[لینک پروژه در gitlab](https://gitlab.com/aminrgh/action-recognition)