چگونه می توان مانند یک دانشمند کامپیوتر فکر کرد

چگونه می توان مانند یک دانشمند کامپیوتر فکر کرد

هنر تفکر انتقادی.

عکس توسط جاشوا سورتینو در Unsplash

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

تشخیص انسان در زمان واقعی در بینایی رایانه-قسمت 2

تشخیص انسان در زمان واقعی در بینایی رایانه-قسمت 2

در قسمت 1 این مجموعه ، ما در مورد روشهای اولیه مورد استفاده برای تشخیص انسان مانند چارچوب تشخیص شیء ویولا جونز (آبشار هار) بحث کردیم. و هیستوگرام گرادیانهای جهت دار برای تشخیص انسان (HOG). ما برخی از اشکالات این رویکردهای قبلی مانند تشخیص اشتباه ، تشخیص اشتباه ، تشخیص تکراری و مرز تشخیص نامعتبر را بررسی کردیم. در این قسمت از سری ، ما به بررسی نحوه برخورد رویکردهای مدرن برای تشخیص انسان به برخی از مسائل رویکردهای اولیه (تا حد قابل توجهی) می پردازیم. ما همچنین یک کد نمونه را بررسی خواهیم کرد که از برخی از رویکردهای مدرن برای تشخیص انسان استفاده می کند.

رویکردهای مدرن برای تشخیص انسان

تشخیص انسان با استفاده از مدل" Faster RCN Inception V2 COCO "موجود با API تشخیص شی Tensorflow. ویدئوی آزمایشی از "برآورد درشت نگاه در پروژه نظارت بصری" توسط دانشگاه آکسفورد

رویکردهای مدرن برای تشخیص انسان که ما در اینجا در نظر می گیریم با ویژگی های زیر مشخص می شوند.

آنها "تحول عمیق" هستند. شبکه های عصبی "

روشهای مدرن برای تشخیص انسان عمدتا بر اساس شبکه های عصبی تحول عمیق است. این روند با AlexNet آغاز شد که در سال 2012 با استفاده از شبکه تحول عمیق (CNN) برای طبقه بندی تصویر برنده چالش تشخیص تصویری بزرگ مقیاس Imagenet (ILSVRC) شد. از آن زمان ، CNN ها به طور گسترده ای برای مشکلات مختلف بینایی رایانه مانند طبقه بندی تصویر (شناسایی نوع تصویر از یک شی) ، تشخیص شی (تشخیص انواع مختلف اشیاء در یک تصویر) و مکان یابی شی (تعیین مکان اجسام شناسایی شده) به "تشخیص انسان" همانطور که قبلاً مشخص کردیم ، مورد خاصی از تشخیص شی و محلی سازی شی است.

آنها "آشکارسازهای شیء چند طبقه" هستند

یکی دیگر از ویژگی های کلیدی CNN مدرن سیستم های تشخیص شی این است که آنها قادر به تشخیص چندین کلاس از اشیا هستند. بنابراین ، مدرن ترین آشکارسازهای انسانی فقط آشکارسازهای انسانی نیستند ، بلکه آشکارسازهای شیء دقیق هستند که می توانند انواع مختلفی از اشیاء از جمله انسان را تشخیص دهند. با در نظر گرفتن این زمینه ، اجازه دهید به شما "Tensorflow Object Detection API" و "Tensorflow Detection Model Zoo" را به شما معرفی کنم.

تشخیص انسان با استفاده از Tensorflow Object Detection API

TensorFlow ™ یک API منبع باز از Google ، که به طور گسترده ای برای حل وظایف یادگیری ماشین که شامل شبکه های عصبی عمیق است استفاده می شود. API Tensorflow Object Detection یک کتابخانه منبع باز است که بر اساس Tensorflow برای پشتیبانی از آموزش و ارزیابی مدل های تشخیص شی ساخته شده است. امروز نگاهی به "Tensorflow Detection Model Zoo" می اندازیم ، که مجموعه ای از مدل های از پیش آموزش داده شده سازگار با API Tensorflow Object Detection است.

در زمان نگارش این مقاله ، باغ وحش تشخیص Tensorflow شامل 16 مدل تشخیص شیء که قبلاً در مجموعه داده COCO آموزش دیده اند. 12 مورد برتر از این لیست مدلها "جعبه" را به عنوان خروجی ارائه می دهند و با کد پیوند داده شده به این مقاله سازگار هستند. این مدل ها قادر به تشخیص 80 نوع شی از جمله انسان هستند. امروز ، نحوه استفاده از این مدلها برای تشخیص انسان را مورد بررسی قرار می دهیم.

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

قبل از هر چیز ، مطمئن شوید CV 3.0 (یا بالاتر) را باز کنید و Tensorflow 1.5 (یا بالاتر) نصب شده است. توصیه می شود در صورت داشتن نسخه GPU Tensorflow از آن استفاده کنیدپردازنده گرافیکی nVidia من مقالاتی را که مراحل نصب را در قسمت مرجع شرح می دهند پیوند داده ام. یک پوشه برای این پروژه بسازید. quick_rcnn_inception_v2_coco.tar.gz را از Tensorflow Detection Model Zoo بارگیری کنید. فایل بارگیری شده را در فهرست پروژه استخراج کنید. tensorflow-human-detection.py را از اینجا بارگیری کرده و آن را به فهرست پروژه منتقل کنید. فایل بارگیری شده را باز کرده و ‘/path/to/fast_rcnn_inception_v2_coco’ را به روز کنید تا محل استخراج فایل tar.gz بارگیری شده را نشان دهد. "/path/to/input/video" را مشخص کنید. من از ویدیوی آزمایشی TownCentre که از اینجا بارگیری شده استفاده کرده ام. فایل پایتون را اجرا کرده و خروجی را روی صفحه مشاهده کنید. (برای خروج ، "Q" را فشار دهید). برای بهبود نتایج می توانید پارامتر آستانه را تنظیم کنید. امیدوارم چیزی شبیه به زیر را مشاهده کنید. = 0.7)

می توانید با جایگزینی فایل مدل بارگیری شده در بالا ، 11 مدل سازگار دیگر (ذکر شده در زیر "مدلهای آموزش دیده توسط COCO" و ارائه "جعبه" به عنوان خروجی) را امتحان کنید). و البته ، مدلهای ارائه شده قادر به تشخیص همه 80 نوع شیء موجود در مجموعه داده COCO هستند. فقط یک تغییر کوچک در کد ارائه شده برای تشخیص انواع دیگر اشیاء ضروری است.

میز آزمایش

نتایج ذکر شده در این مقاله با استفاده از کد ارائه شده بر روی لپ تاپ با مشخصات زیر: > همه آزمایشات بر روی ویدئوی آزمایشی "TownCentre" از "برآورد چشم انداز در پروژه نظارت بصری" توسط دانشگاه آکسفورد انجام می شود.

مقایسه بین مدلهای باغ وحش مدل Tensorflow Detection

مدلی که در بالا در نظر گرفتیم ، مدل سریعتر_rcnn_inception_v2_coco از Tensorflow Detection Model Zoo است. البته ، 11 مدل سازگار دیگر وجود دارد (که در "مدلهای آموزش دیده توسط COCO" ذکر شده اند و "جعبه" را به عنوان خروجی ارائه می دهند) که می توانیم آنها را برای تشخیص انسان در نظر بگیریم. Google تجزیه و تحلیل کمی در مورد این مدل ها در این جدول ارائه می دهد.

نمودار COCO mAP ارائه شده در جدول تجزیه و تحلیل اندازه گیری ای است به نام "میانگین دقت متوسط". MAP بالاتر به معنی نتایج دقیق تر است.

من بیشتر به 3 مدل زیر از Tensorflow Detection Model Zoo علاقه دارم.

ssd_mobilenet_v1_coco (می تواند در تلفن های Android در زمان واقعی کار کند) Fast_rcnn_inception_v2_coco (مبادله عادلانه بین دقت و سرعت برای محیط های شتاب زده GPU) Fast_rcnn_nas (دقیق ترین مدل ارائه شده است)

موضوعات زیر تجزیه و تحلیل کیفی موارد فوق را پوشش می دهد مدلها.

SSD Mobilenet V1 مدل COCO

این کمترین دقت را دارد اما سریعترین آن از لیست است. این برنامه قادر است به صورت لحظه ای بر روی تلفن های Android مدرن کار کند ، همانطور که توسط این برنامه اندرویدی که بر اساس این پروژه است نشان داده شده است.

تشخیص انسان با استفاده از مدل ssd_mobilenet_v1_coco (چپ: آستانه = 0.2 ؛ مرکز: آستانه = 0.3 ؛ راست: آستانه = 0.5)

این مدل در تشخیص اجسام نزدیک که دارای فضای نمای وسیعی هستند (مانند شخصی که جلوی دوربین ایستاده است) به خوبی عمل می کند. اما در ویدئوی آزمایشی ما ضعیف عمل می کند زیرا شامل تعداد زیادی از افراد است که هرکدام فضای کوچکی از نمای را اشغال کرده اند. مجبور شدم آستانه تشخیص را به میزان قابل توجهی کاهش دهم تا تشخیص های منطقی برای فیلم آزمایشی ما به دست آید. (تقریبا 25 FPS). با غیرفعال کردن GPU Acceleration ، زمان فریمدر محدوده 60-80 میلی ثانیه متفاوت است. (تقریباً 15 فریم در ثانیه).

مدل FCO RCN Inception V2 سریعتر

هنگام راه اندازی آشکارساز اولیه انسانی به این مدل توجه کرده ایم. طبق تجربه من ، این بهترین مدل برای انتخاب است اگر شتاب GPU در دسترس باشد و هم فریم ریت و هم اهمیت دارد. این یک مقایسه عادلانه بین دقت و سرعت برای محیط های شتاب دهنده GPU است.

در نیمکت آزمایش من با GPU Acceleration فعال شده ، زمان فریم در محدوده 200 تا 300 میلی ثانیه متغیر است. (تقریبا 4 FPS). با غیرفعال شدن GPU Acceleration ، زمان فریم در محدوده 1.5-1.6 ثانیه متغیر است.

سریعتر RCN NAS مدل COCO

تشخیص انسان با استفاده از مدل سریعتر RCN NAS COCO (آستانه = 0.5)

این مدل دقیق ترین مدل از مجموعه است. شاید بتوان گفت که بسیار حساس است زیرا مدلهای پلاستیکی انسان را در گوشه سمت چپ فیلم آزمایش به عنوان انسان تشخیص می دهد. تقریباً هیچ گونه تشخیص کاذب ، تشخیص تکراری ، جلوه های سوسو زدن یا تشخیص از دست رفته مشاهده نمی شود. با این حال ، این مدل نیز کندترین است. پردازش یک فریم واحد با شتاب 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> اسناد رسمی Tensorflow دارای راهنمای مرحله به مرحله نصب (پیوند) است. نصب OpenCV 3.4.