اطلاعیه

Collapse
No announcement yet.

سوال در مورد الگوریتم PCA

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد الگوریتم PCA

    من دارم رو الگوریتم pca میکنم و میخوام که eigenface ها و eigenvaluse رو به دست بیارم یه نکته توی این الگوریتم برام من نامفهومه

    اول اینکه تا اونجایی که من از مقلات خوندم همه عکس های ورودی رو بعد اینکه یکی یکی بصورت بردار در اوردیم و هر عکس رو بعد از تغییر به بردار در یه ماتریکس جدید ذخیره میکنم
    سوالی که واسه من پیش اومده اینه که تو چند جا خوندم که یه mean image محاسبه شده ، منظور از این تصویر میانگین ، میانگین کل تصاویر هست ؟ ( training images( حالا اگه تصاویر شامل تصاویر تعداد مشخص افراد که از هر نفر 10 تصویر موجود باشه بازم میانگین تصویر همونه یا در این مورد برا هر کس باید میانگین جدا محاسبه بشه ؟

    کمتر به سایت میام .....

    #2
    پاسخ : سوال در مورد الگوریتم PCA

    برای محاسبه تصویر میانگین شما باید میانگین تک تک سطرها را محاسبه کنید

    یک متدی به نام (single value decomposition) (svd) اگه اشتباه نکنم وجود داره که در Help متلب می تونی بخونی و ازش استفاده کنی
    Sincerely Yours,
    Mr. Fazel Dehghani

    دیدگاه


      #3
      پاسخ : سوال در مورد الگوریتم PCA

      یه چیز دیگه که ذهن منو مشغول کرده اینه که وقتی تعداد تصاویر دیتا بیس زیاده مثلا تصویر 20 نفر و هر نفر 10 تصویر یعنی کلا 200 تصویر ، برای استخراج ویژگی این تصاویر باید برای هر شخص ویژگی ها جدا محاسبه بشه منظورم اینه که الگوریتم برای تصاویر یه شخص مشخص باید اجرا بشه یا ویژگی کل تصاویر یه جا محاسبه میشه (منضورم همون mean image ,بردارها و مقادیر ویژه )

      کمتر به سایت میام .....

      دیدگاه


        #4
        پاسخ : سوال در مورد الگوریتم PCA

        ببینید!!! اصولا از PCA برای کاهش vectorها در فضای nبعدی استفاده می شه!! مثلا اگر شما 200 تصویر در Dataset داشته باشید و تنها بخواهید 20 تصویر از آن 200 تصویر به صورت نمونه انتخاب کنید که نماینده ای از آن 200 تصویر باشد ، می توانید از PCA کمک بگیرید.
        فرقی هم بین تصاویر درون dataset نمیکنه و بر روی کلیه تصاویر بکار می رود.

        فقط باید مشخص کنید که برای چکاری می خواهید به کار ببرید. فرضا من از PCA برای کاهش ساختار شبکه عصبی استفاده کردم. که تعداد ورودی شبکه برابر با تعداد EigenVector های انتخابی بود.!!!

        در مورد اینکه PCA چگونه عمل میکند می توانید عبارت "A tutorial on Principal Components Analysis filetype:PDF" در Google.com جستجو کنید.
        یا در همین فروم هم یه مقاله فارسی در این مورد وجود داره که با جستجوی PCA می تونید بهش دست پیدا کنید.

        این کد برای محاسبه PCA با متد SVD است. هر جایی که سوال داشتید بفرمائید.

        کد:
        function [Me eigFaces]=PrinComp(I ,nP ,imRow ,imCol ,numImg)
          %% Principle Component (PCA)
          % computing psi
          psi=mean(I,2); % mean each rows
          Me=reshape(psi,imRow ,imCol);
          
          %computing phi
          phi=I-repmat(psi,1,numImg); %mean-adjusted
          
          %computing covariance and PCA
          [U,S,V]=svd(phi,0);
          
          eigVecs=U(:,1:nP);
          eigVals=diag(S);  
          eigFaces=eigVecs;
        I= همون Dataset
        nP= تعداد بردارهای ویژه انتخابی
        imRow= تعداد سطرهای هر تصویر( نکته: باید تمامی تصاویر موجود در dataset هم اندازه باشند)
        imCol= تعداد ستونهای هر تصویر
        numImg= تعداد تصاویر موجود در dataset

        برای اطلاعات بیشتر در مورد توابع داخلی MATLAB از Help آن کمک بگیرید
        Sincerely Yours,
        Mr. Fazel Dehghani

        دیدگاه


          #5
          پاسخ : سوال در مورد الگوریتم PCA

          ممنون فاضل جان بابت توضیحات ... خودمم تو این چند روز که سرچ کردم به این نتیجه رسیدم که ماتریکس های eigenvalues , eigenvector باید برا همه تصاویر ورودی حساب میشه در غالب یه ماتریکس که ابعادش بستگی به تعداد تصاویر ورودی داره و جدا نیست

          حالا من ماتریکس خروجی PCA که همون eigenvalues , eigenvector باشه رو میخوام برای ورودی SVM استفاده کنم اما نمیدونم چطوری ...

          اگه کسی در این رابطه اطلاعات داره ممنون میشم که منو راهتمایی کنه
          کمتر به سایت میام .....

          دیدگاه


            #6
            پاسخ : سوال در مورد الگوریتم PCA

            حالا من ماتریکس خروجی PCA که همون eigenvalues , eigenvector باشه رو میخوام برای ورودی SVM استفاده کنم اما نمیدونم چطوری ...
            اگه کسی در این رابطه اطلاعات داره ممنون میشم که منو راهتمایی کنه
            اگه در Help متلب عنوان SVM رو در بخش Index تایپ کنی به تا SVM می رسی که در داخل اون یه مثال هم آورده که خروجی را هم به صورت تصویری و بر روی منحنی نشان می دهد.
            Sincerely Yours,
            Mr. Fazel Dehghani

            دیدگاه


              #7
              پاسخ : سوال در مورد الگوریتم PCA

              یه سوال دیگه که واسم بوجود اومده اینه که ورودی classifier باید به چه صورتی باشه من EIGENVECTOR های یه سری داده و حساب کردم که شامل 20 تصویر ورودی هست از 10 شخص متفاوت ، خروجی ماتریکس بردارهای ویژه ست که یه ماتریکس 19*20 هست سوال من اینه که چطور این داده ها باید به CLASSIFIIER ( شبکه های عصبی یا SVM ) اموزش داده بشه منظورم اینه که داده ما که یه ماتریکس 19*20 هست چطور باید تفکیک بشه و برا هر کلاس یا شخص اموزش داده بشه ....
              کمتر به سایت میام .....

              دیدگاه


                #8
                پاسخ : سوال در مورد الگوریتم PCA

                نوشته اصلی توسط بهرام
                یه سوال دیگه که واسم بوجود اومده اینه که ورودی classifier باید به چه صورتی باشه من EIGENVECTOR های یه سری داده و حساب کردم که شامل 20 تصویر ورودی هست از 10 شخص متفاوت ، خروجی ماتریکس بردارهای ویژه ست که یه ماتریکس 19*20 هست سوال من اینه که چطور این داده ها باید به CLASSIFIIER ( شبکه های عصبی یا SVM ) اموزش داده بشه منظورم اینه که داده ما که یه ماتریکس 19*20 هست چطور باید تفکیک بشه و برا هر کلاس یا شخص اموزش داده بشه ....
                با سلام .
                من یک ماتریس دارم که 50*834 دارم که 834 ویزگی را از 50 تصویر بیرون کشیده ! می خواستم ببینم شما که با الگوریتم PCA کار می کنید، فکر می کنید میشه با PCA حجم محاسبات را کم کنم ؟!! اگه میشه کد مشخصی برای این منظور وجود داره که بتونم استفاده کنم ؟؟؟

                ممنون میشم جوابمو بدید .

                دیدگاه

                لطفا صبر کنید...
                X