اطلاعیه

Collapse
No announcement yet.

الگوریتم HOG در تشخیص انسان

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

    الگوریتم HOG در تشخیص انسان



    با سلام ،

    من خیلیآ‌ دوست دارم الگوریتم Histogram of Oriented Gradients) HOG) برای pedestrian یاد بگیرم ، لطفا اگه کسیآ‌ آموزش جامعه داره معرفیآ‌ کنه .

    با تشکر




    #2
    پاسخ : الگوریتم HOG در تشخیص انسان

    برای تشخیص انسان از اجسام دگه مثل ماشین کسیآ‌ ایدهآ‌ای داره?
    ممنون

    دیدگاه


      #3
      پاسخ : الگوریتم HOG در تشخیص انسان

      سلام ..

      این توصیف کننده، از بسیاری جهات شبیه SIFT هست، با این تفاوت عمده که در SIFT ما در ابتدا یک سری نقاط به نام Interest Point (به کمک Haris) انتخاب میکنیم و سپس روی اونها گرادیان رو اعمال میکنیم و از این جهت هست که به SIFT ، توصیف کننده ی محلی (Local) هم میگن امــا در HOG گرادیان رو بر روی همه ی پیکسل ها محاسبه میکنند؛ و جهت و اندازه ی بردارهای گرادیان محاسبه شده رو به عنوان خروجی ثبت .. ایده ی کلی HOG به صورت خلاصه این هست .. کمی موشکافانه تر: تصویر ورودی رو به سلول هایی (Cell) تقسیم میکنند و بر روی پیکسل های این Cell ها گرادیان رو محاسبه میکنند و بر حسب اندازه ای (Vote) که محاسبه میشه ((sqrt(x^2 + y^2) و جهتی که گرادیان ها دارند، برای "هر" Cell یک هیستوگرام تشکیل میشه و در آخر این هیستوگرام ها رو در کنار هم Concatenate میکنند و نتیجه ی حاصل، توصیف کننده ای هست که تشکیل شده از هیستوگرام های جهات گرادیان ها .. به این دلیل که تمرکز این توصیف کننده، بر روی اطلاعات گرادیان یا به صورت دقیقتر، جهات لبه ها (Edge orientation) هست، خیلی مفید هست برای اطلاعات استخوان بندی تصویر؛ به این معنا که تصویر از چه ساختار فیزیکی صلبی (!) تشکیل شده (سعی کردم معنی خودم رو برسونم!) و به همین دلیل، بر روی کلاس های مختلف، نتایج تقریبا متفاوت و ملموسی رو داره .. شاید بهتر باشه که برای مثال، دو تصویر زیر رو باهم بررسی کنیم ..

      Input_Images



      HOG_Descriptor


      نوع خروجی این توصیف کننده به گونه ای هست که تقریبا به اطلاعات ساختاری (شاکله ی) تصویر توجه میکنه و همونطور که در تصویر بالا هم مشخص شده، این موضوع به دلیل پرداختن به جزئیات گرادیان تصویر هست و نه رنگ یا چگالی پیکسل ها .. برای مشخص شدن بهتر این موضوع، شاید بهتر باشه که تصویر زوم شده ی زیر رو بر روی بخش هایی از تصویر بالا، باهم ببینیم ..


      برای پیاده سازی این الگوریتم هم، کدهای آماده ای هست که برای استفاده میتونید به اونها اعتماد کنید .. یکی از بهترین اونها؛ یک تولباکس هست که یکResearch center فعال، برای برخی مسائل کاربردی Computer Vision ارائه کردن و میتونید این تولباکس رو در این آدرس دانلود کنید .. پس از دانلود تولباکس؛ برای استفاده از اون لازم هست که مراحل زیر رو پله به پله انجام بدید تا در انتها همه چیز خوب پیش بره .. در ابتدا فایل رو Extract کنید و اون رو در یک آدرس کپی کنید (برای مثال میتونید در دایرکتوری متلب این کار رو انجام بدید که همه ی فایل های مربوط به متلبی که در سیستمتون هستند، در یک بخش جمع بشن، در اینصورت تمرکز برای پیداکردن اونها در آینده بهتر میشه) .. پس از کپی این فایل، آدرسی رو که در اون این فایل کپی شده، لازم هست که با دستور زیر در متلب وارد کنید:


      به جهت اسلش ها دقت کنید (به خصوص در ویندوز) .. پس از این مرحله لازم هست که تست کنید که آیا تولباکس صحیح و کامل نصب شده یا خیر .. برای این منظور میتونید از دستور زیر استفاده کنید .. اگر همه چیز خوب پیش رفته باشه، پیام زیر رو دریافت میکنید:


      با گذشت از این مرحله؛ الان میتونیم به استفاده از کد HOG فکر کنیم .. برای این منظور میتونید از دستورات زیر استفاده کنید:


      برای Visualize کردن خروجی توصیف کننده هم میتونید دستورات زیر رو در متلب وارد کنید:


      در انتهای این پست، رفرنس کلاسیک و اصلی این توصیف کننده ضمیمه شده که میتونید اون رو دانلود کنید و ازش استفاده .. کد دیگری هم ضمیمه شده با نام P_HOG .. کاری که این کد انجام میده محاسبه ی توصیف کننده ی HOG هست؛ امــا به صورت Pyramid .. یعنی اول روی کل تصویر؛ بعد تصویر رو به چهار قسمت تقسیم کنید و بر روی هر قسمت، این توصیف کننده رو بار دیگه اجرا کنید؛ و بار دیگه هر چهار قسمت رو به چهار قسمت دیگه تقسیم کنید؛ و این توصیف کننده رو روی اونها اجرا کنید و در نهایت، هیستوگرام همه ی اینها رو Concatenate کنید و به عنوان بردار ویژگی نهایی ارائه بدید، چیزی شبیه به تصویر زیر:


      در این آدرس هم میتونید فایلی رو دانلود کنید که یک Lecture کوتاه امــا بسیار مفید در زمینه ی HOG و کاربرد اون در Pedestrian Detection هست .. امیدوارم این فایل و توضیحات بالا بتونن براتون مفید باشن .. موفق و سلامت و شاد باشید ..
      فایل های پیوست شده
      دوستان! مدتی کمتر به سایت میام ..

      دیدگاه


        #4
        پاسخ : الگوریتم HOG در تشخیص انسان

        آقای حسام الدین عزیز خیلی‌ لطف کردین .

        حالا ما که HOG feature استخراج کردیم چطور می‌تونیم در svm
        train کنیم ؟
        در library که معرفی‌ کردین قسمتی‌ داره به نام = Pegasos SVM

        که در لینک زیر آموزش داده است :

        http://www.vlfeat.org/overview/pegasos.html#tut.pegasos

        چطور می‌تونم ورودی تصویر بهش بدم ؟

        با تشکر

        دیدگاه


          #5
          پاسخ : پاسخ : الگوریتم HOG در تشخیص انسان

          نوشته اصلی توسط potter_h112
          آقای حسام الدین عزیز خیلیآ‌ لطف کردین .

          حالا ما که HOG feature استخراج کردیم چطور میآ‌تونیم در svm
          train کنیم ؟
          در library که معرفیآ‌ کردین قسمتیآ‌ داره به نام = Pegasos SVM

          که در لینک زیر آموزش داده است :

          http://www.vlfeat.org/overview/pegasos.html#tut.pegasos

          چطور میآ‌تونم ورودی تصویر بهش بدم ؟

          با تشکر
          آموزش لینکی که دادید کافی نیست؟
          میتونید از تولباکس SVM خود متلب هم استفاده کنید. برای طبقه بندی دوکلاسه خیلی راحته.
          لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
          لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
          با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
          اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
          يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

          دیدگاه


            #6
            پاسخ : پاسخ : الگوریتم HOG در تشخیص انسان

            نوشته اصلی توسط eehadi
            آموزش لینکی که دادید کافی نیست؟
            میتونید از تولباکس SVM خود متلب هم استفاده کنید. برای طبقه بندی دوکلاسه خیلی راحته.
            ممنون که بحث رو دنبال میآ‌کنید .
            اما منظور من این بود که چطوری ورودی svm رو hog feature بدم ؟
            درواقع چطوری feature در svm
            train کنم ؟

            دیدگاه


              #7
              پاسخ : الگوریتم HOG در تشخیص انسان

              سلام ..

              در آدرسی که به اون اشاره کردید؛ مثالی هست که میتونه کمکتون کنه .. فرض کنید، به جای مقادیر X ها و Y ها (که در این مثال رندوم و تصادفی انتخاب شدند)؛ خروجی توصیف کننده ی HOG رو معادل Xi ها برای هر سمپل با لیبل 1+ و Yi ها برای هر سمپل با لیبل 1- در نطر بگیریم .. در این صورت (خیلی کلاسیک) یک سوپر ماتریس خواهیم داشت که هر سطر اون خروجی توصیف کننده ی HOG برای تصویر i ام هست و لیبل هر سطر هم معادل 1+ درنطر میگیریم، به این دلیل که اینها سمپل های کلاسی هستند که قصد داریم که SVM برای تشخیص اونها آموزش ببینه .. یک سوپر ماتریس دیگه هم تعریف میکنیم که هر سطر اون؛ خروجی توصیف کننده ی HOG هست؛ امــا بر روی سمپل های None_Objects و لیبل اونها هم معادل 1- در نظر میگیریم .. برای آموزش SVM هم نیاز هست که داده هامون رو به صورت برداری به الگوریتم بدیم به همراه لیبل هر سمپل .. در انتهای این پست، فایلی ضمیمه شده که میتونه کمکتون کنه .. نسخه ی اصلی اطلاعات مربوط به SVM رو هم میتونید در این آدرس بررسی کنید .. موفق و سلامت و شاد باشید ..
              فایل های پیوست شده
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : الگوریتم HOG در تشخیص انسان

                سلام
                میشه اموزش libsvm رو بذارید ؟
                راستش من تو سایت
                http://www.csie.ntu.edu.tw/~cjlin
                چیزی متوجه نشدم :cry: ،آ‌چطور می تونم تصاویر رو درش اموزش بدم ؟
                لطفا یک کد که بشه راحت تصاویر رو در libsvm آموزش داد بذارید :redface:.
                با تشکر
                :nerd:

                دیدگاه


                  #9
                  پاسخ : الگوریتم HOG در تشخیص انسان

                  سلام ..

                  در ابتدا ایـن فایل رو دانلود کنید، و پس از اون، به folder ای با نام matlab برید و در Workspace تایپ کنید: make .. پیش از اون البته، از mex -setup استفاده کنید تا کامپایلر مورد نظر، برای نرم افزار MATLAB شناخته بشه .. بعد از این مرحله قسمت بزرگ کار انجام شده .. کافیست بردارهای lable و داده های آموزش رو آماده کنید .. به عنوان مثال، میتونید از مثال heart استفاده کنید که در README هم به اون اشاره شده .. به دقت میتونید فرمت داده ها (--label و داده های آموزش--) رو مشاهده و اونها رو بررسی کنید، فرمتی که LibSVM با اون راحت هست .. به عنوان یک مثال بهتر، میتونید از ایـن صفحه هم استفاده کنید .. پیروز باشید ..
                  دوستان! مدتی کمتر به سایت میام ..

                  دیدگاه


                    #10
                    پاسخ : الگوریتم HOG در تشخیص انسان

                    سلام من دارم با الگوریتم hog و svm کار میکنم
                    تا الان ویژگی های 600 تصویر را که ار 20 کلای مختلف در دیتابیس پاسکال هستند را با hog استخراج کردم و یک ماتریس هم دارم که در هر سطر شماره کلاس مربوط به ماتریس ویژگی را نگه میدارد .
                    میخواهم دقت hog را اندازه بگیرم و میدونم که باید از libsvm استفاده کنم ولی دیگه نمیدونم چطوری لطفا اگه کسی مثال یا توضیحی داره بگه ممنون

                    دیدگاه


                      #11
                      پاسخ : الگوریتم HOG در تشخیص انسان

                      سلام.
                      برای درک چگونگی الگوریتم HOG و این که چطور این الگوریتم به ازای هر تصویر یک بردار مجزا میآ‌دهد یک pdf در لینک زیر هست که بهترین توضیحی بود که توی اینترنت پیدا کردم:
                      https://www.cs.duke.edu/courses/fall15/compsci527/notes/hog.pdf

                      دیدگاه


                        #12
                        پاسخ : پاسخ : الگوریتم HOG در تشخیص انسان

                        آقا حسام اگه امکان داره دوباره عکسها رو لود کنید

                        دیدگاه


                          #13
                          پاسخ : الگوریتم HOG در تشخیص انسان

                          سلام خدمت همه دوستان و مهندسان گرامی
                          ببخشید شاید سوالم بی ربط باشه به موضوع تاپیک ولی من خیلی علاقه به پردازش تصویر و اینجور چیزا دارم اما تا حالا سراغش نرفتم
                          به نظر شما من میتونم با این که هیچ پیش زمینه ای ندارم ، به یاد گرفتن این مبحث بپردازم؟ینی میتونم خودم بدون هیچ کلاسی یاد بگیرم؟اخه احساس میکنم درک کردن این همه فرمول کار سخت و پیچیده ایهاونم به صورت خودآموز

                          دیدگاه


                            #14
                            پاسخ : الگوریتم HOG در تشخیص انسان

                            پردازش تصویر جزو دانش "های تک" هستش یعنی بسیار پیشرفته و الگوریتم دادن در اون کار سختی هستش ولی با الگوریتم های موجود اکثر قریب به اتفاق نیاز ها برآورده میشن

                            دیدگاه


                              #15
                              پاسخ : الگوریتم HOG در تشخیص انسان

                              نوشته اصلی توسط rassoulian نمایش پست ها
                              سلام من دارم با الگوریتم hog و svm کار میکنم
                              تا الان ویژگی های 600 تصویر را که ار 20 کلای مختلف در دیتابیس پاسکال هستند را با hog استخراج کردم و یک ماتریس هم دارم که در هر سطر شماره کلاس مربوط به ماتریس ویژگی را نگه میدارد .
                              میخواهم دقت hog را اندازه بگیرم و میدونم که باید از libsvm استفاده کنم ولی دیگه نمیدونم چطوری لطفا اگه کسی مثال یا توضیحی داره بگه ممنون
                              سلام ببخشید من دارم درباره hog تحقیق میکنم. میتونم ازتون کمک بگیرم؟

                              دیدگاه

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