زمان تخمینی مطالعه: 16 دقیقه
این مقاله مقدمهای بر تشخیص اشیا و مروری بر پیشرفتهترین الگوریتمهای تشخیص اشیا در بینایی کامپیوتری ارائه میدهد. تشخیص اشیا یک زمینه کلیدی در هوش مصنوعی است که به سیستمهای کامپیوتری اجازه میدهد تا با تشخیص اشیاء در تصاویر یا ویدئوهای بصری، محیط خود را ببینند. در این مقاله به طور خاص، با موارد زیر آشنا خواهید شد:
- تشخیص اشیاء چیست و چگونه در 20 سال گذشته تکامل یافته است
- انواع روشهای تشخیص اشیاء در بینایی کامپیوتر و پردازش تصویر
- نمونههایی از موارد استفاده و برنامههای Object Detection
- محبوبترین الگوریتمهای تشخیص اشیاء امروزی
- الگوریتمهای جدید شناسایی اشیاء(Object Recognition)
تشخیص اشیاء مبتنی بر یادگیری عمیق چیست؟
تشخیص اشیاء یک کار بینایی کامپیوتری مهم است که برای شناسایی نمونههایی از اشیاء بصری کلاسهای خاص (مثلاً انسانها، حیوانات، اتومبیلها یا ساختمانها) در تصاویر دیجیتالی مانند عکسها یا فریمهای ویدیو استفاده میشود. هدف از تشخیص اشیاء، توسعه مدلهای محاسباتی است که بنیادیترین اطلاعات مورد نیاز برنامههای بینایی کامپیوتری را ارائه میدهد:در واقع در این مفهوم هدف جواب به این است که « کدام شی کجای تصویر است؟».
– تشخیص شخص
تشخیص شخص گونهای از تشخیص اشیاء است که برای تشخیص یک کلاس اولیه «شخص» در تصاویر یا فریمهای ویدیویی استفاده میشود. شناسایی افراد در جریانهای ویدئویی یک کار مهم در سیستمهای نظارت تصویری مدرن است. الگوریتمهای یادگیری عمیق اخیر نتایج قوی تشخیص فرد را ارائه میدهند. بیشتر تکنیکهای آشکارساز شخص مدرن بر روی نماهای جلویی و نامتقارن آموزش داده میشوند. با این حال، مدلهای یادگیری عمیق مانند YOLO که برای تشخیص فرد در مجموعه دادههای نمای جلویی آموزش داده شدهاند، هنوز نتایج خوبی را در هنگام اعمال شمارش افراد نمای بالای سر ارائه میکنند (TPR 95٪، FPR تا 0.2٪).
– چرا یادگیری عمیق در Object Detection مهم است؟
تشخیص اشیا یکی از مشکلات اساسی بینایی کامپیوتر است. این موضوع اساس بسیاری از وظایف بینایی رایانه پایین دست دیگر را تشکیل میدهد، به عنوان مثال، نمونهبندی و قطعهبندی تصویر، شرح تصویر، ردیابی اشیا، و موارد دیگر. کاربردهای خاص تشخیص اشیاء شامل تشخیص عابر پیاده، تشخیص حیوانات، تشخیص وسیله نقلیه، شمارش افراد، تشخیص چهره، تشخیص متن، تشخیص وضعیت یا تشخیص پلاک است.
همانطوری که بینایی کامپیوتر در حال رشد و بلوغ است، از “شیب تند روشنگری” به “فلات بهره وری” در چرخه هایپ گارتنر(Gartner Hype Cycle) تغییر کرده است. با پیشرفت تکنولوژی، افزایش پذیرش و کاربردهای عملی در صنایع، بینایی کامپیوتر، از جمله تشخیص اشیا، در حال ورود به مرحله ثبات و یکپارچگی گسترده است. اکنون تمرکز از مراحل آزمایشی به پالایش و بهینهسازی برنامههای کاربردی موجود تغییر کرده و گامی مهم به سوی تحقق کامل و تأثیر آن بر شرکتها در بخشهای مختلف است.
– تشخیص اشیاء و یادگیری عمیق
در چند سال گذشته، پیشرفتهای سریع در تکنیکهای یادگیری عمیق، شتاب زیادی در فناوری تشخیص اشیاء ایجاد کرده است. با شبکههای تشخیص اشیاء مبتنی بر یادگیری عمیق و قدرت محاسباتی پردازندههای گرافیکی، عملکرد آشکارسازها و ردیابهای شی بسیار بهبود یافته است و به پیشرفتهای قابل توجهی در تشخیص اشیاء دست یافته است.
یادگیری ماشینی (ML) شاخهای از هوش مصنوعی (AI) است و اساساً شامل یادگیری الگوهایی از نمونهها یا دادههای نمونه میشود، زیرا ماشین به دادهها دسترسی پیدا میکند و میتواند از آن یاد بگیرد (یادگیری نظارت شده بر روی تصاویر حاشیهنویسی). یادگیری عمیق یک شکل تخصصی از یادگیری ماشینی است که شامل یادگیری در مراحل مختلف میشود. برای کسب اطلاعات بیشتر در مورد پیشینه فناوری، مقالههای ما را بررسی کنید: یادگیری ماشینی و یادگیری عمیق چیست؟
– آخرین پیشرفتهای تکنولوژیک در بینایی کامپیوتر
تشخیص و ردیابی اشیاء مبتنی بر یادگیری عمیق پایه اساسی طیف گستردهای از برنامههای بینایی کامپیوتری مدرن است. به عنوان مثال، تشخیص اشیاء هوشمند در نظارت و مراقبتهای بهداشتی، رانندگی خودکار، نظارت تصویری هوشمند، تشخیص ناهنجاری، بینایی ربات و بسیاری موارد دیگر را امکان پذیر میکند. هر برنامه بینایی مبتنی بر AI معمولاً به ترکیبی از الگوریتمهای مختلف نیاز دارد که یک جریان (خط لوله) از مراحل پردازش چندگانه را تشکیل میدهد. فناوری تصویربرداری مبتنی بر هوش مصنوعی در سالهای اخیر پیشرفت زیادی کرده است. طیف گستردهای از دوربینها از جمله دوربینهای امنیتی تجاری و دوربینهای مدار بسته را میتوان استفاده کرد.
– معایب و مزایای تشخیص اشیاء
آشکارسازهای اشیاء فوق العاده انعطافپذیر هستند و میتوانند برای طیف گستردهای از وظایف و برنامههای کاربردی سفارشی و با هدف خاص آموزش ببینند. شناسایی خودکار اشیا، افراد و صحنهها میتواند اطلاعات مفیدی را برای خودکارسازی وظایف (شمارش، بازرسی، تأیید و غیره) در زنجیرههای ارزش کسبوکار فراهم کند. با این حال، نقطه ضعف اصلی الگوریتمهای Object Detection این است که از نظر محاسباتی بسیار گران هستند و به قدرت پردازش قابل توجهی نیاز دارند. به خصوص، زمانی که مدلهای تشخیص اشیاء در مقیاس بزرگ به کار گرفته میشوند، هزینههای عملیاتی میتواند به سرعت افزایش یابد و قابلیت اقتصادی موارد استفاده تجاری را به چالش بکشد.
الگوریتم تشخیص اشیاء مبتنبی بر یادگیری عمیق چگونه کار میکند؟
تشخیص اشیاء را میتوان با استفاده از تکنیکهای سنتی پردازش تصویر یا شبکههای یادگیری عمیق مدرن انجام داد.
- تکنیکهای مبتنی بر پردازش تصویر معمولاً به دادههای تاریخی برای آموزش نیاز ندارند و ماهیت آنها بدون نظارت است. OpenCV یک ابزار محبوب برای کارهای پردازش تصویر است. از مزایای آن میتوان بیان کرد که این در این مورد به تصاویر حاشیه نویسی نیاز نیست، زیرا انسان ها دادهها را به صورت دستی (برای آموزش تحت نظارت) برچسبگذاری میکنند. و اما از معایب آن میتوان گفت که این تکنیکها به عوامل متعددی محدود میشوند، مانند سناریوهای پیچیده (بدون پسزمینه تک رنگ)، انسداد (اشیاء تا حدی پنهان)، روشنایی و سایهها، و جلوههای بهم ریختگی.
- روشهای مبتنی بر یادگیری عمیق معمولاً به یادگیری تحت نظارت یا بدون نظارت بستگی دارند، اما روشهای نظارت شده به استانداردی در وظایف بینایی رایانه بدل شده است. عملکرد این نوع الگوریتمها توسط قدرت محاسباتی GPUها که سال به سال به سرعت در حال افزایش است، محدود میشود.
امروزه، تشخیص اشیاء مبتنی بر یادگیری عمیق به طور گسترده توسط محققان پذیرفته شده است و توسط شرکتهای بینایی ماشین برای ساخت محصولات تجاری پذیرفته شده است.
بهترین الگوریتم تشخیص تصویر امروز
حوزه تشخیص اشیاء آنقدرها هم که به نظر می رسد جدید نیست. در واقع، تشخیص اشیا در طول 20 سال گذشته تکامل یافته است. پیشرفت Object Detection معمولاً به دو دوره تاریخی جداگانه (قبل و بعد از معرفی Deep Learning) تقسیم میشود:
- تشخیص اشیاء قبل از سال 2014 – دوره سنتی تشخیص اشیاء
- آشکارساز Viola-Jones سال 2001: یکی از پیشگامانی که توسعه روشهای سنتی Object Detection را آغاز کرد.
- آشکارساز HOG سال 2006: توصیفگر ویژگی محبوب برای تشخیص اشیاء در بینایی کامپیوتری و پردازش تصویر.
- مدل DPM در سال 2008 که با اولین معرفی رگرسیون جعبه مرزی(bounding box regression) ایجاد شد.
- تشخیص اشیاء پس از سال 2014 – دوره تشخیص مبتنی بر یادگیری عمیق
- الگوریتمهای دو مرحلهای تشخیص اشیاء شامل RCNN و SPPNet معرفی شده در سال 2014، الگوریتمهای RCNN سریع و RCNN سریعتر در سال 2015، الگوریتم ماسک R-CNN معرفی شده در سال 2017، الگوریتم شبکههای هرمی/FPN در سال 2017 و G-RCNN معرفی شده در سال 2021
- مهمترین الگوریتمهای تشخیص اشیاء یک مرحلهای شامل YOLO معرفی شده در سال 2016، SSD سال 2016، RetinaNet معرفی در سال 2017، YOLOv3 معرفی شده در سال 2018 و YOLOv4سال 2020، YOLOR معرفی در سال 2021، مدل YOLOv7 سال 2022 و YOLOv8 معرفی شده در سال 2023
الگوریتم YOLOv8 در سال 2023 منتشر شده است، اما این نسخه توسط سازندگان الگوریتمهای اصلی YOLO منتشر نشده است. توجه به این نکته مهم است که YOLOv8 تحت مجوز AGPL-3.0 منتشر شده است، یک مجوز کپیلفت قوی که استفاده تجاری را محدود میکند. برای درک اینکه کدام الگوریتم برای یک مورد خاص بهترین است، درک ویژگیهای اصلی مهم است. ابتدا، قبل از بحث در مورد الگوریتمهای جداگانه، تفاوتهای کلیدی بین الگوریتمهای شناسایی تصویر مربوطه برای تشخیص اشیاء را بررسی خواهیم کرد.
– تشخیص اشیاء مبتنی بر یادگیری عمیق یک مرحلهای در مقابل دو مرحلهای
همانطور که در بخش بالا مشاهده کردید، روشهای پیشرفته تشخیص اشیاء را میتوان به دو نوع اصلی طبقهبندی کرد: تشخیص یک مرحلهای در مقابل دو مرحلهای. به طور کلی، Object Detection مبتنی بر یادگیری عمیق، ویژگیهایی را از تصویر ورودی یا فریم ویدیو استخراج میکنند. یک الگوریتم تشخیص شی دو وظیفه متوالی را انجام میدهد:
- وظیفه اول: تعداد دلخواه از اشیاء (احتمالاً حتی صفر) را پیدا میکند
- وظیفه دوم: هر شیء را طبقهبندی کرده و اندازه آن را با یک کادر محدود تخمین میزند.
برای ساده کردن فرآیند، میتوان آن وظایف را به دو مرحله تقسیم کرد. روشهای دیگر هر دو کار را در یک مرحله (آشکارسازهای تک مرحلهای) ترکیب میکنند تا با هزینه کرد دقت، به عملکرد بالاتری دست یابند.
تشخیص دهندههای دو مرحلهای: در تشخیص شی دو مرحلهای، مناطق تقریبی شی با استفاده از ویژگیهای عمیق قبل از استفاده از این ویژگیها برای طبقهبندی تصویر و رگرسیون جعبه مرزی برای کاندیدای شی پیشنهاد میشوند.
- معماری دو مرحلهای شامل (1) پیشنهاد منطقه شی با روشهای مرسوم بینایی کامپیوتری یا شبکههای عمیق، و به دنبال آن (2) طبقهبندی اشیاء بر اساس ویژگیهای استخراجشده از منطقه پیشنهادی با رگرسیون جعبه مرزی است.
- روشهای دو مرحلهای به بالاترین دقت تشخیص دست مییابند اما معمولا کندتر هستند. به دلیل بسیاری از مراحل استنتاج در هر تصویر، عملکرد (فریم در ثانیه) به خوبی تشخیص دهندههای یک مرحله ای نیست.
- تشخیص دهندههای دو مرحلهای مختلف شامل شبکه عصبی کانولوشنال منطقه (RCNN)، با تکامل سریعتر R-CNN یا Mask R-CNN است. آخرین تکامل RCNN دانهبندی شده (G-RCNN) است.
- تشخیص دهندههای شی دو مرحلهای ابتدا ناحیه مورد نظر را پیدا کرده و از این ناحیه برش خورده برای طبقهبندی استفاده میکنند. با این حال، چنین تشخیص دهندههای چند مرحلهای معمولاً قابل آموزش نیستند، زیرا برش یک عملیات غیر قابل تمایز است.
تشخیص دهندههای یک مرحلهای: تشخیص دهندههای یک مرحلهای جعبههای مرزی را روی تصاویر بدون مرحله پیشنهاد منطقه پیشبینی میکنند. این فرآیند زمان کمتری مصرف میکند و بنابراین میتواند در برنامههای بلادرنگ استفاده شود.
- تشخیص دهندههای شی یک مرحلهای سرعت استنتاج را در اولویت قرار میدهند و فوق العاده سریع هستند اما در تشخیص اجسام با شکل نامنظم یا گروهی از اشیاء کوچک خوب نیستند.
- محبوبترین تشخیص دهندههای یک مرحلهای عبارتند از YOLO، SSD و RetinaNet. جدیدترین تشخیص دهندههای بلادرنگ YOLOv7 (2022)، YOLOR (2021) و YOLOv4-Scaled (2020) هستند.
- مزایای اصلی تشخیص اشیا با الگوریتمهای تک مرحلهای شامل سرعت تشخیص سریعتر و سادگی ساختاری و کارایی بیشتر در مقایسه با تشخیص دهندههای چند مرحلهای است.
کاربردهای تشخیص اشیاء
موارد استفاده تشخیص اشیاء بسیار متنوع است. روشهای تقریباً نامحدودی وجود دارد تا رایانهها را شبیه انسان ببینند تا کارهای دستی را خودکار کنند یا محصولات و خدمات جدید با هوش مصنوعی ایجاد کنند. این در کاربردهای بینایی رایانهای که برای طیف وسیعی از کاربردها، از تولید ورزشی گرفته تا تجزیه و تحلیل بهرهوری استفاده میشوند، پیادهسازی شده است. امروزه، تشخیص اشیاء با یادگیری عمیق هسته اصلی اکثر نرم افزارها و برنامههای هوش مصنوعی مبتنی بر بینایی است. تشخیص اشیاء نقش مهمی در درک صحنه ایفا میکند که در موارد امنیتی، ساخت و ساز، حمل و نقل، پزشکی و نظامی کاربرد آن رایج است.در ادامه برخی از کاربردهای Object Detection آورده شده است:
- تشخیص اشیاء در فروشگاهها: سیستمهای شمارش افراد در فروشگاههای خردهفروشی برای جمعآوری اطلاعات در مورد نحوه گذراندن وقت مشتریان و میزان حضور مشتریان استفاده میشوند. تجزیه و تحلیل مشتری مبتنی بر هوش مصنوعی برای شناسایی و ردیابی مشتریان با دوربین کمک میکند تا درک درستی از تعامل مشتری و تجربه مشتری به دست آید و چیدمان فروشگاه بر اساس آن بهینه شود. یک مورد استفاده محبوب از این کاربرد، تشخیص صف برای کاهش زمان انتظار در فروشگاههای خردهفروشی است.
- رانندگی خودران: خودروهای خودران برای تشخیص عابران پیاده، علائم راهنمایی و رانندگی، وسایل نقلیه دیگر و سایر موارد به تشخیص اشیا وابسته هستند. به عنوان مثال، هوش مصنوعی خودکار تسلا به شدت از Object Detection برای درک تهدیدات محیطی و اطراف، مانند وسایل نقلیه روبرو یا موانع، استفاده میکند.
- تشخیص حیوانات در کشاورزی: تشخیص شی در کشاورزی برای کارهایی مانند شمارش، نظارت بر حیوانات و ارزیابی کیفیت محصولات کشاورزی استفاده میشود. محصولات آسیب دیده را میتوان در حین پردازش با استفاده از الگوریتمهای یادگیری ماشین شناسایی کرد.
- تشخیص افراد در موارد امنیتی: طیف گستردهای از برنامههای امنیتی در نظارت تصویری مبتنی بر تشخیص اشیا هستند، به عنوان مثال، برای شناسایی افراد در مناطق محدود یا خطرناک، پیشگیری از خودکشی، یا خودکار کردن وظایف بازرسی در مکانهای دور با بینایی کامپیوتری.
- تشخیص وسیله نقلیه با هوش مصنوعی در حمل و نقل: تشخیص اشیاء برای شناسایی و شمارش وسایل نقلیه برای تجزیه و تحلیل ترافیک یا شناسایی خودروهایی که در مناطق خطرناک توقف میکنند، به عنوان مثال، در چهارراهها یا بزرگراهها استفاده میشود.
- تشخیص ویژگیهای پزشکی در بخش سلامت: تشخیص اشیاء به پیشرفتهای بسیاری در جامعه پزشکی منجر شده است. از آنجایی که تشخیص پزشکی به شدت بر مطالعه تصاویر، اسکنها و عکسها متکی است، تشخیص اشیاء شامل اسکنهای سی تی و ام آر آی برای تشخیص بیماریها بسیار مفید است، به عنوان مثال، با الگوریتم های ML برای تشخیص تومور.
محبوبترین الگوریتمهای Object Detection
الگوریتمهای محبوبی که برای انجام تشخیص اشیاء استفاده میشوند عبارتند از شبکههای عصبی کانولوشن (R-CNN، شبکههای عصبی کانولوشن مبتنی بر منطقه)، R-CNN سریع و YOLO (شما فقط یک بار نگاه میکنید). R-CNN ها از خانواده R-CNN هستند، در حالی که YOLO بخشی از خانواده تشخیص دهندههای تک مرحلهای است.
– YOLO
YOLO مخفف “You Only Look Once” است، یکی از انواع محبوب الگوریتم تشخیص اشیاء در زمان واقعی است که در بسیاری از محصولات تجاری توسط بزرگترین شرکتهای فناوری که از بینایی کامپیوتر استفاده میکنند استفاده میشود. YOLO برای اولین بار در سال 2016 عرضه شد و معماری جدید به طور قابل توجهی سریعتر از هر تشخیص دهنده دیگری بود.
– SSD – Single-Shot Detector
SSD یک تشخیص دهنده یک مرحلهای محبوب است که میتواند چندین کلاس را پیشبینی کند. این روش اشیاء را در تصاویر با استفاده از یک شبکه عصبی عمیق با گسسته کردن فضای خروجی جعبههای مرزی در مجموعهای از جعبههای پیشفرض در نسبتها و مقیاسهای مختلف در هر مکان نقشه مشخصه شناسایی میکند.
– R-CNN – شبکههای عصبی کانولوشن مبتنی بر منطقه
شبکههای عصبی کانولوشنال مبتنی بر منطقه یا مناطق با ویژگیهای CNN (R-CNN) رویکردهای پیشگامی هستند که مدلهای عمیق را برای تشخیص اشیا اعمال میکنند. مدلهای R-CNN ابتدا چندین ناحیه پیشنهادی را از یک تصویر انتخاب میکنند (به عنوان مثال، جعبههای لنگر یکی از انواع روشهای انتخاب هستند) و سپس دستهها و جعبههای مرزی آنها را برچسبگذاری میکنند (مثلاً، آفست). این برچسبها بر اساس کلاسهای از پیش تعریف شده داده شده به برنامه ایجاد میشوند. سپس از یک شبکه عصبی کانولوشن (CNN) برای انجام محاسبات رو به جلو برای استخراج ویژگیها از هر ناحیه پیشنهادی استفاده میکنند.
– ماسک R-CNN
Mask R-CNN پیشرفت Fast R-CNN است. تفاوت بین این دو در این است که Mask R-CNN یک شاخه برای پیشبینی یک ماسک شی به موازات شاخه موجود برای تشخیص جعبه مرزی اضافه کرد. آموزش ماسک R-CNN ساده است و فقط مقدار کمی به R-CNN سریعتر اضافه میکند.
– SqueezeDet
SqueezeDet نام یک شبکه عصبی عمیق برای بینایی کامپیوتری است که در سال 2016 منتشر شد. SqueezeDet به طور خاص برای رانندگی خودکار توسعه یافته است، جایی که تشخیص اشیا را با استفاده از تکنیکهای بینایی کامپیوتری انجام میدهد. این الگوریتم مانند YOLO یک الگوریتم آشکارساز تک شات است.
– MobileNet
MobileNet یک شبکه تشخیص چند جعبه تک شات است که برای اجرای وظایف تشخیص اشیا استفاده میشود. این مدل با استفاده از چارچوب Caffe پیاده سازی شده است. خروجی مدل یک بردار معمولی است که شامل دادههای شی ردیابی شده است.
– YOLOR
YOLOR یک تشخیص دهنده شی جدید است که در سال 2021 معرفی شد. این الگوریتم دانش ضمنی و صریح را در آموزش مدل به طور همزمان اعمال میکند. بنابراین، YOLOR میتواند یک نمایش کلی را بیاموزد و چندین کار را از طریق این نمایش کلی انجام دهد. دانش ضمنی از طریق همترازی فضای هسته، اصلاح پیشبینی و یادگیری چند وظیفهای در دانش صریح ادغام میشود. از طریق این روش، YOLOR به نتایج بسیار بهبود یافته عملکرد Object Detection دست مییابد.