روش‌های بسیار مختلفی برای بازشناسی تصویر (Image Recognition) وجود دارد. گوگل اخیراً API جدیدی برای شناسایی تصاویر به نام تنسورفلو (Tensorflow) منتشر ساخته است که موجب بهبود دید رایانهای در همه‌جا می‌شود. هیچ‌یک از پیشنهاد‌هایی که گوگل ارائه می‌کنند را نمی‌توان سرسری گرفت. بنابراین تصمیم گرفتیم این API جدید را بررسی کنیم و بر روی برخی از ویدیوهای یوتیوب مورد استفاده قرار دهیم. نتایج را در ادامه می‌بینید.

شناسایی اشیا با استفاده از API تنسورفلو

کد کامل این پروژه را می‌توانید در این ریپو گیت‌هاب ببینید.

در ادامه تجربه کار با این API را توضیح می‌دهیم. نخست آن را معرفی می‌کنیم.

تعریف API
در برنامه‌نویسی کامپیوتر، یک رابط کاربردی برنامه‌نویسی (API) مجموعه‌ای از زیرروال ها (Subroutine)، تعاریف، پروتکل‌ها و ابزارها به منظور ساخت یک نرم‌افزار کاربردی است.

معرفی API

این API بر روی مجموعه داده COCO (اشیای رایج در زمینه) تمرین داده شده است. این مجموعه داده از تصاویر ۳۰۰ کیلوبایتی از ۹۰ شیئی که در تصاویر روزمره پر استفاده هستند، تشکیل یافته است. نمونه‌هایی از اشیا در ادامه ارائه شده‌اند.

API تنسورفلو ۵ مدل متفاوت دارد که تعادلی بین سرعت اجرا و دقت قرار دادن مستطیل‌های تشخیص برقرار می‌سازند. به جدول زیر توجه کنید.

نام مدل سرعت mAP CoCo خروجی ها
ssd_mobilenet_v1_coco بالا 21 مستطیل‌های تشخیص
ssd_inception_v2_coco بالا 24 مستطیل‌های تشخیص
rfcn_resnet101_coco متوسط 30 مستطیل‌های تشخیص
faster_rcnn_resnet101_coco متوسط 32 مستطیل‌های تشخیص
faster_rcnn_inception_resnet_v2_atrous_coco پایین 37 مستطیل‌های تشخیص

در جدول فوق منظور از mAP «میانگین متوسط دقت» (mean average precision) است که برابر با حاصل‌ضرب دقت در یادآوری شناسایی مستطیل‌های تشخیص است. mAP معیار ترکیبی خوبی برای درک حساسیت شبکه به اشیای مطلوب و میزان دقت در اجتناب از شناسایی موارد نادرست است. هرچه امتیاز mAP بالاتر باشد، شبکه دقیق‌تر است، اما این امتیاز بالا به بهای کاهش سرعت اجرا به دست می‌آید.

در این لینک می‌توانید اطلاعات بیشتری در مورد این مدل‌ها به دست آورید.

استفاده از مستندات

ابتدا سبک‌ترین مدل (ssd_mobilenet) بررسی شد. گام‌های اساسی موارد زیر بودند:

  1. دانلود مدل فریز شده (Pb — Protobuf.) و بارگذاری آن در حافظه
  2. استفاده از کد کمک‌کننده (helper) درونی برای بارگذاری برچسب‌ها، دسته‌ها، ابزارهای تصویرسازی و غیره.
  3. شروع یک نشست جدید و اجرای مدل بر روی تصویر

مراحل فوق در مجموع چندان پیچیده محسوب نمی‌شوند. مستندات API راهنمای خوبی برای طی مراحل اصلی است.

این مدل، عملکرد بسیار خوبی بر روی تصویر نمونه داشت که در ادامه ارائه شده است.

اجرا بر روی ویدیو

در ادامه عملکرد این API را بر روی برخی از ویدیوها بررسی کردیم. بدین منظور از کتابخانه Moviepy استفاده کردیم. مراحل اصلی به صورت زیر بودند:

  1. استفاده از تابع VideoFileClip برای استخراج تصاویر از ویدیو
  2. از تابع fl_image به منظور شناسایی همه تصاویر استخراج شده از ویدیو استفاده کردیم. این یک تابع جالب است که می‌تواند یک تصویر را بگیرد و تصویر اصلاح شده را جایگزین آن کند.
  3. در نهایت همه تصاویر اصلاح شده، در یک ویدیوی جدید ترکیب شدند.

اجرای این کد بر روی کلیپ ۳ تا ۴ ثانیه‌ای در حدود یک دقیقه زمان برد. اما از آنجا که در این بررسی از یک مدل فریز شده که در حافظه بارگذاری شده بود، استفاده کردیم، می‌توانستیم آن را بر روی یک رایانه‌ که gpu ندارد نیز اجرا کنیم.

نتیجه کار بسیار شگفت‌انگیز بود. تنها با اندکی کدنویسی می‌توان مستطیل‌های تشخیص را با دقتی عالی بر روی تعداد زیادی از اشیای متداول ترسیم کرد. پرندگان در ویدیوی زیر به طور کلی شناسایی نشدند.

مراحل آتی

ایده‌های مختلفی برای بررسی بیشتر این API می‌توان مطرح کرد:

  • امتحان مدل‌های دقیق‌تر و با سربار (overflow) بیشتر برای مشاهده میزان تفاوت عملکرد
  • یافتن روش‌هایی برای سرعت بخشیدن به API و تسهیل استفاده از آن برای شناسایی بی‌درنگ اشیا بر روی دستگاه‌های همراه
  • گوگل همچنین قابلیت استفاده از این مدل‌ها برای انتقال یادگیری را نیز فراهم کرده است. یعنی میتوان مدل‌های فریز شده را بارگذاری کرد و یک لایه خروجی دیگر با دسته‌های تصویری متفاوت به آن افزود.

اگر به این مطلب علاقمند هستید، احتمالا مطالب زیر نیز برای شما مفید خواهند بود:

==

منبع

میثم لطفی (+)

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

بر اساس رای 4 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *