تئوری عملکرد HAAR Cascade در OpenCV
هار آبشار
این مدل از Object detector روشی مبتنی بر یادگیری ماشین است که در آن یک تابع آبشار از بسیاری از تصاویر مثبت و منفی آموزش دیده است. سپس آن را برای تشخیص اشیاء در تصاویر دیگر استفاده می کند. الگوریتم چهار مرحله دارد:
- Haar Feature Selection
- Creating Integral Images
- Adaboost Training
- Cascading Classifiers
به خوبی در قسمت قبل مشاهده کردید که قادر به تشخیص چهره و قطعات بدن در یک تصویر است، اما می تواند آموزش یابد تا تقریبا هر شیء را شناسایی کند. به عنوان مثال می توان چهره را تشخیص داد. در ابتدا الگوریتم نیاز به تعداد زیادی تصویر مثبت از چهره ها و تصاویر منفی بدون چهره برای آموزش طبقه بندی کننده دارد. سپس باید ویژگی های آن را استخراج کنیم. در واقع اولین گام، جمع آوری ویژگی های Haar است. ویژگی ها، مناطق مستطیلی مجاور را در یک مکان مشخص در نظر میگیرد و شدت پیکسل در هر منطقه را محاسبه می کند و تفاوت بین این اعداد را محاسبه می کند.
تصاویر یکپارچه (internal image) برای ایجاد سرعت فوق العاده بیشتر استفاده می شود. اما در بین تمام این ویژگی ها محاسبه شده، بیشتر آنها بی ربط هستند. به عنوان مثال، تصویر زیر را در نظر بگیرید. ردیف بالا دو ویژگی خوب را نشان می دهد. اولین ویژگی انتخاب شده به نظر می رسد بر روی چشم ها متمرکز شده که منطقه چشم ها اغلب تیره تر از منطقه بینی و گونه است. ویژگی دوم انتخاب شده بر این ویژگی متکی است که چشمهای تیره تر از پل بینی است. اما همان پنجره هایی که روی گونه ها و یا هر مکان دیگری استفاده می کنند، بی اهمیت است.
پس چگونه ما بهترین ویژگی ها را از ویژگی های بسیار زیاد انتخاب می کنیم؟ این کار با استفاده از یک مفهوم به نام Adaboost انجام می شود که هر دو بهترین ویژگی ها را انتخاب می کند و طبقه بندی هایی را که از آنها استفاده می کند، آموزش می دهد. این الگوریتم طبقه بندی "وزن قوی" (قطعیت) را به عنوان ترکیبی خطی از طبقه بندی های ضعیف "وزن ضعیف" ایجاد می کند. این فرایند به شرح زیر است. در طول مرحله تشخیص، یک پنجره از اندازه هدف بیش از تصویر ورودی منتقل می شود، و برای هر قسمت از تصویر و ویژگی های Haar محاسبه می شود. این تفاوت پس از آن به یک آستانه آموخته شده است که اشیای اضافه را از اشیاء مورد نظر جدا می کند. از آنجا که هر ویژگی Haar فقط یک طبقه بندی ضعیف است (کیفیت تشخیص آن کمی بهتر از حدس زدن تصادفی است)، تعداد زیادی از ویژگی های Haar برای توصیف یک شی با دقت کافی لازم است و بنابراین برای طبقه بندی قوی تر، به صورت آبشاری طبقه بندی می شوند.
طبقه بندی آبشاری
طبقه بندی آبشار شامل مجموعه ای از مراحل است که در آن هر مرحله یک گروه از آموزگاران ضعیف است. یادگیرنده های ضعیف طبقه بندی های ساده ای به نام stump تصمیم گیری می باشند. هر مرحله با استفاده از تکنیک به نام boosting آموزش داده می شود. تقویت توانایی آموزش یک طبقه بندی بسیار دقیق را با در نظر گرفتن میانگین وزنی تصمیمات گرفته شده توسط زبان آموزان ضعیف فراهم می کند. هر مرحله از طبقه بندی منطقه را که توسط مکان فعلی پنجره کشویی تعریف شده است، به عنوان مثبت یا منفی تعریف می کند. مثبت نشان می دهد که یک شی یافت شد و منفی نشان می دهد هیچ اشیایی یافت نشد. اگر برچسب منفی باشد، طبقه بندی این منطقه کامل است و آشکارساز پنجره را به مکان بعدی می کشد. اگر برچسب مثبت باشد، طبقه بندی منطقه را به مرحله بعدی منتقل می کند. آشکارساز یک شی که در محل پنجره فعلی یافت می شود، هنگامی که مرحله نهایی منطقه را به عنوان مثبت طبقه بندی می کند. مراحل طراحی شده اند تا نمونه های منفی را تا حد امکان سریع رد کنند. فرض این است که اکثریت قریب به اتفاق پنجره ها، جسم مورد علاقه را ندارند. برعکس، مثبت های واقعی نادر هستند و ارزش بررسی زمان را دارند.
- یک مثبت درست زمانی اتفاق می افتد که یک نمونه مثبت طبقه بندی شود.
- مثبت کاذب زمانی اتفاق می افتد که یک نمونه منفی اشتباه به عنوان مثبت طبقه بندی شود.
- منفی نادر زمانی رخ می دهد که یک نمونه مثبت به صورت اشتباه به عنوان منفی طبقه بندی شود.
برای کار خوب، هر مرحله در آبشار باید دارای نرخ منفی کاذب پایین باشد. اگر یک مرحله اشتباه یک شی را به عنوان منفی نامگذاری کند، طبقه بندی متوقف می شود و شما نمی توانید اشتباه را تصحیح کنید. با این حال، هر مرحله می تواند یک نرخ مثبت کاذب بالا داشته باشد. حتی اگر آشکارساز اشتباه یک علامت غیر مثبت را مثبت نشان دهد، می توانید اشتباه را در مراحل بعدی اصلاح کنید. اضافه کردن مراحل بیشتر باعث کاهش نرخ کلی مثبت کاذب می شود، اما همچنین میزان واقعی مثبت واقعی را کاهش می دهد. آموزش کلاسیک کلاسیک نیاز به مجموعه ای از نمونه های مثبت و مجموعه ای از تصاویر منفی است. شما باید مجموعه ای از تصاویر مثبت را با مناطق علاقه مند مشخص شده برای نمونه های مثبت استفاده کنید. شما می توانید برچسب برچسب را برای برچسب اشیاء مورد علاقه با جعبه محدود استفاده کنید. Image Labeler یک جدول برای استفاده از نمونه های مثبت نمایش می دهد. شما همچنین باید مجموعه ای از تصاویر منفی را ارائه دهید که از طریق آن تابع به طور خودکار نمونه های منفی را تولید می کند. برای دستیابی به دقت پذیرش آشکارساز، تعداد مراحل، نوع ویژگی و سایر پارامترهای عملکرد را تعیین کنید. در حقیقت اگر بخواهیم که روند تشخیص را در یک دیاگرام نشان دهیم می توانیم به تصویر زیر اشاره کنیم.