ممکن است فکر کنید که علوم کامپیوتر هیچ ارتباطی با رشد شخصی و نحوه موفقیت آمیز زندگی ندارد. به راحتی می توان باور کرد که دانش در چنین حوزه فنی به دلیل ارزش مهندسی خارج از خطوط کد (یعنی برنامه نویسی) جدا شده است. در حقیقت ، علوم رایانه بسیار بیشتر از روان انسان به انسان ارائه می دهد ...
در قسمت 1 این مجموعه ، ما در مورد روشهای اولیه مورد استفاده برای تشخیص انسان مانند چارچوب تشخیص شیء ویولا جونز (آبشار هار) بحث کردیم. و هیستوگرام گرادیانهای جهت دار برای تشخیص انسان (HOG). ما برخی از اشکالات این رویکردهای قبلی مانند تشخیص اشتباه ، تشخیص اشتباه ، تشخیص تکراری و مرز تشخیص نامعتبر را بررسی کردیم. در این قسمت از سری ، ما به بررسی نحوه برخورد رویکردهای مدرن برای تشخیص انسان به برخی از مسائل رویکردهای اولیه (تا حد قابل توجهی) می پردازیم. ما همچنین یک کد نمونه را بررسی خواهیم کرد که از برخی از رویکردهای مدرن برای تشخیص انسان استفاده می کند.
رویکردهای مدرن برای تشخیص انسان که ما در اینجا در نظر می گیریم با ویژگی های زیر مشخص می شوند.
روشهای مدرن برای تشخیص انسان عمدتا بر اساس شبکه های عصبی تحول عمیق است. این روند با AlexNet آغاز شد که در سال 2012 با استفاده از شبکه تحول عمیق (CNN) برای طبقه بندی تصویر برنده چالش تشخیص تصویری بزرگ مقیاس Imagenet (ILSVRC) شد. از آن زمان ، CNN ها به طور گسترده ای برای مشکلات مختلف بینایی رایانه مانند طبقه بندی تصویر (شناسایی نوع تصویر از یک شی) ، تشخیص شی (تشخیص انواع مختلف اشیاء در یک تصویر) و مکان یابی شی (تعیین مکان اجسام شناسایی شده) به "تشخیص انسان" همانطور که قبلاً مشخص کردیم ، مورد خاصی از تشخیص شی و محلی سازی شی است.
یکی دیگر از ویژگی های کلیدی CNN مدرن سیستم های تشخیص شی این است که آنها قادر به تشخیص چندین کلاس از اشیا هستند. بنابراین ، مدرن ترین آشکارسازهای انسانی فقط آشکارسازهای انسانی نیستند ، بلکه آشکارسازهای شیء دقیق هستند که می توانند انواع مختلفی از اشیاء از جمله انسان را تشخیص دهند. با در نظر گرفتن این زمینه ، اجازه دهید به شما "Tensorflow Object Detection API" و "Tensorflow Detection Model Zoo" را به شما معرفی کنم.
TensorFlow ™ یک API منبع باز از Google ، که به طور گسترده ای برای حل وظایف یادگیری ماشین که شامل شبکه های عصبی عمیق است استفاده می شود. API Tensorflow Object Detection یک کتابخانه منبع باز است که بر اساس Tensorflow برای پشتیبانی از آموزش و ارزیابی مدل های تشخیص شی ساخته شده است. امروز نگاهی به "Tensorflow Detection Model Zoo" می اندازیم ، که مجموعه ای از مدل های از پیش آموزش داده شده سازگار با API Tensorflow Object Detection است.
در زمان نگارش این مقاله ، باغ وحش تشخیص Tensorflow شامل 16 مدل تشخیص شیء که قبلاً در مجموعه داده COCO آموزش دیده اند. 12 مورد برتر از این لیست مدلها "جعبه" را به عنوان خروجی ارائه می دهند و با کد پیوند داده شده به این مقاله سازگار هستند. این مدل ها قادر به تشخیص 80 نوع شی از جمله انسان هستند. امروز ، نحوه استفاده از این مدلها برای تشخیص انسان را مورد بررسی قرار می دهیم.
می توانید با جایگزینی فایل مدل بارگیری شده در بالا ، 11 مدل سازگار دیگر (ذکر شده در زیر "مدلهای آموزش دیده توسط COCO" و ارائه "جعبه" به عنوان خروجی) را امتحان کنید). و البته ، مدلهای ارائه شده قادر به تشخیص همه 80 نوع شیء موجود در مجموعه داده COCO هستند. فقط یک تغییر کوچک در کد ارائه شده برای تشخیص انواع دیگر اشیاء ضروری است.
نتایج ذکر شده در این مقاله با استفاده از کد ارائه شده بر روی لپ تاپ با مشخصات زیر: > همه آزمایشات بر روی ویدئوی آزمایشی "TownCentre" از "برآورد چشم انداز در پروژه نظارت بصری" توسط دانشگاه آکسفورد انجام می شود.
مدلی که در بالا در نظر گرفتیم ، مدل سریعتر_rcnn_inception_v2_coco از Tensorflow Detection Model Zoo است. البته ، 11 مدل سازگار دیگر وجود دارد (که در "مدلهای آموزش دیده توسط COCO" ذکر شده اند و "جعبه" را به عنوان خروجی ارائه می دهند) که می توانیم آنها را برای تشخیص انسان در نظر بگیریم. Google تجزیه و تحلیل کمی در مورد این مدل ها در این جدول ارائه می دهد.
من بیشتر به 3 مدل زیر از Tensorflow Detection Model Zoo علاقه دارم.
موضوعات زیر تجزیه و تحلیل کیفی موارد فوق را پوشش می دهد مدلها.
این کمترین دقت را دارد اما سریعترین آن از لیست است. این برنامه قادر است به صورت لحظه ای بر روی تلفن های Android مدرن کار کند ، همانطور که توسط این برنامه اندرویدی که بر اساس این پروژه است نشان داده شده است.
تشخیص انسان با استفاده از مدل ssd_mobilenet_v1_coco (چپ: آستانه = 0.2 ؛ مرکز: آستانه = 0.3 ؛ راست: آستانه = 0.5)این مدل در تشخیص اجسام نزدیک که دارای فضای نمای وسیعی هستند (مانند شخصی که جلوی دوربین ایستاده است) به خوبی عمل می کند. اما در ویدئوی آزمایشی ما ضعیف عمل می کند زیرا شامل تعداد زیادی از افراد است که هرکدام فضای کوچکی از نمای را اشغال کرده اند. مجبور شدم آستانه تشخیص را به میزان قابل توجهی کاهش دهم تا تشخیص های منطقی برای فیلم آزمایشی ما به دست آید. (تقریبا 25 FPS). با غیرفعال کردن GPU Acceleration ، زمان فریمدر محدوده 60-80 میلی ثانیه متفاوت است. (تقریباً 15 فریم در ثانیه).
هنگام راه اندازی آشکارساز اولیه انسانی به این مدل توجه کرده ایم. طبق تجربه من ، این بهترین مدل برای انتخاب است اگر شتاب GPU در دسترس باشد و هم فریم ریت و هم اهمیت دارد. این یک مقایسه عادلانه بین دقت و سرعت برای محیط های شتاب دهنده GPU است.
در نیمکت آزمایش من با GPU Acceleration فعال شده ، زمان فریم در محدوده 200 تا 300 میلی ثانیه متغیر است. (تقریبا 4 FPS). با غیرفعال شدن GPU Acceleration ، زمان فریم در محدوده 1.5-1.6 ثانیه متغیر است.
این مدل دقیق ترین مدل از مجموعه است. شاید بتوان گفت که بسیار حساس است زیرا مدلهای پلاستیکی انسان را در گوشه سمت چپ فیلم آزمایش به عنوان انسان تشخیص می دهد. تقریباً هیچ گونه تشخیص کاذب ، تشخیص تکراری ، جلوه های سوسو زدن یا تشخیص از دست رفته مشاهده نمی شود. با این حال ، این مدل نیز کندترین است. پردازش یک فریم واحد با شتاب GPU در حدود 2.6 ثانیه طول می کشد.
به نظر من ، همه مدلهایی که از روشهای قبلی دقیق تر هستند. مدل سریعتر RCN Inception V2 COCO (شامل آن) به طور قابل توجهی بهتر از روشهای HOG و Haar برای تشخیص انسان عمل می کند. این مدلها یک محدوده محکم و محکم در اطراف یک فرد شناسایی شده ارائه می دهند. علاوه بر این ، این مدل ها به احتمال بسیار کم منجر به تشخیص اشتباه می شوند. تشخیصهای تکراری ممکن است هنوز در مدلهای با دقت کمتر در شرایطی رخ دهد که چندین نفر در کنار هم باشند. در صورت استفاده از مدلهای با دقت کمتر ، تشخیص و چشمک زدن از دست رفته نیز ممکن است گاهی رخ دهد. این مشکلات در مدلهای دقیق تری (مانند مدل RCN NAS) با هزینه زمان محاسبه حل می شوند.
آبشار هار (چپ) ، SSD Mobilenet V1 (مرکز) و سریعتر RCN Inception V2 (راست)به نظر می رسد که دو مدل اول در لیست (ssd_mobilenet_v1_coco و ssd_inception_v2_coco) نسبت به روش های قبلی عملکرد اندکی دارند. این مدلهای با دقت کمتر هنوز مستعد تشخیصهای از دست رفته ، تشخیصهای غلط ، تشخیصهای تکراری ، چشمک زدن و مرزهای تشخیص ناسازگار هستند. نتایج دقیق تری را با هزینه محاسبات بیشتر ارائه می دهد. اگر شتاب GPU در دسترس نباشد ، سبک ترین مدل مورد بحث در اینجا (ssd_mobilenet_v1_coco) قادر است سریعتر از رویکردهای قبلی که قبلاً مورد بحث قرار گرفت ، عمل کند. اما ، دقت بهبود یافته این مدل بسیار حاشیه ای است.
برای به دست آوردن پیشرفت های قابل توجه در دقت ، لازم است مدل FCO Raster RCN Inception V2 یا بهتر را در نظر بگیریم. این مدلها به شتاب GPU نیاز دارند تا نرخ فریم قابل مقایسه با رویکردهای قبلی را که قبلاً مورد بحث قرار گرفت ، ارائه دهند. رویکردها این اصلاحات با هزینه محاسبات بیشتر معرفی می شوند. با این حال ، در صورت شتاب GPU ، کتابخانه های مدرن یادگیری ماشین قادر به ارائه این نتایج بهبود یافته با نرخ فریم قابل مقایسه هستند. شناسایی موقعیت مفاصل یک فرد) و تقسیم بندی انسانی (شناسایی مرز چند ضلعی که نماینده هر فرد است). من به این موضوعات می پردازمبه عنوان مقالات جداگانه در آینده نزدیک بنابراین با آنها در ارتباط باشید. oli>