تشخیص مارمولک‌های آمازونی با هوش مصنوعی؛ حالا روی موبایل هم شدنیه!

تا حالا شده فکر کنی چطور دانشمندها از پس شناسایی انواع موجودات جنگل‌های آمازون، مثلاً همین مارمولک‌هایی که خودمون هم اسمشون رو شاید نشنیده باشیم، برمیان؟ خب، الان دیگه همه چیز داره به سمت هوشمند شدن پیش میره و هوش مصنوعی (یا همون AI) هم وارد این داستان شده. تو این مقاله میخوام راجع به یه پروژه خیلی خفن و کاربردی صحبت کنم که ترکیبی از یادگیری عمیق (Deep learning یعنی همون مدل‌های پیچیده و باهوش کامپیوتری که از مغز انسان الهام گرفتن) و یادگیری ماشین (Machine learning یا ML، یعنی کامپیوترها با داده‌ها یاد می‌گیرن تصمیم بگیرن و دسته‌بندی کنن) رو روی موبایل‌ها آورده.

خب، قصه از این قراره که یه تیم پژوهشی اومده سه گونه مارمولک بومی آمازون رو با تکنولوژی شناسایی کنه. سه گونه‌شون هم اینان: Anolis fuscoauratus، Hoplocercus spinosus و Polychrus marmoratus. همه‌ی داده‌ها و عکس‌هایی که داشتن، از موزه Museu Paraense Emílio Goeldi برزیل جمع کردن.

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

اینا برای اینکه بفهمن کدوم مدل بهتر جواب میده، اول از چهارتا مدل عصبی عمیق (Artificial Neural Network یا همون شبکه عصبی که ساختارش از مغز انسان الهام گرفته شده و خیلی هم باهوشه) برای استخراج ویژگی‌ها استفاده کردن: MobileNet، MobileNetV2، MobileNetV3- Small و MobileNetV3-Large. اینا نسخه‌های مختلفی از یه مدل سبک وزن هستن که برای گوشی‌ها هم خوب کار می‌کنن و قدرتش حالت موبایلی داره (یعنی مخصوصا به گونه‌ای ساخته شدن که روی موبایل هم اجرا بشن، بدون اینکه گوشی داغ کنه یا هنگ بکنه!).

بعدش اومدن چندتا مدل کلاسیک یادگیری ماشین رو هم امتحان کردن که اون ویژگی‌ها رو دسته‌بندی کنن. این ۵ مدل رو تست کردن:

  • SVM (Support Vector Machine): یه روش خیلی معروف برای دسته‌بندی که سعی میکنه بین دسته‌ها یه خط مرزبندی، یا به قول خودشون hyperplane، بکشه و تفکیک کنه.
  • GaussianNB یا GNB (نااعر اصولی بیز؛ پایه‌اش احتمالاتیه)
  • AdaBoost (یک مدل ترکیبی که چندتا مدل ساده رو باهم ترکیب میکنه تا قوی‌تر بشه)
  • KNN (K-Nearest Neighbors: یعنی هر داده رو با نزدیک‌ترین داده‌های قبلی مقایسه و دسته‌بندی می‌کنه)
  • Random Forest یا RF (جنگل تصادفی؛ چندتا درخت تصمیم‌گیری رو با هم ترکیب می‌کنه)

نتیجه چی شد؟ تقریباً همه مدل‌ها نزدیک به هم بودن ولی بهترین مدل ترکیبی شد: MobileNetV3-Small (از مدل‌های جمع‌وجور موبایلی که فقط ۲.۹ میلیون پارامتر داره. پارامتر یه جور عدد و رقم داخلی مدله که مشخصات یادگرفته) به همراه SVM با کرنل خطی (یعنی اون مدل دسته‌بندی مرزبندی‌ش ساده و سریع باشه).

اینا تونستن با این ترکیب به دقت ۰.۹۵۵ (یعنی تقریباً ۹۶ درصد! خیلی خوبه)، Precision یا دقت ۰.۹۴۸ (یعنی وقتی میگه یه مارمولک خاصه، واقعا هم همینه)، Recall یا بازیابی ۰.۹۴۸ (یعنی تعداد موارد درست رو از کل موارد درست به خوبی پیدا میکنه)، و نهایتاً F1-score حدود ۰.۹۴۸ برسن. همه‌ی اینا یعنی مدلشون تقریبا خیلی خوب همه چی رو درست تشخیص داده.

یه نکته مهم اینه که برای مقایسه دقیق‌تر این مدل‌ها، از آزمون مک‌نمار (McNemar’s test که یه تست آماریه واسه اینکه ببینیم این دقت فرق زیادی با بقیه داشته یا نه) استفاده کردن.

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

پس خلاصه اگر یه روز تو آمازون باشی و با کلی مارمولک رنگارنگ روبرو بشی، با یه گوشی و یه اپلیکیشن کوچیک مبتنی بر هوش مصنوعی و یادگیری ماشین، راحت می‌تونی بفهمی که کدوم مارمولک کدوم گونه‌ست! علم حسابی باحال داره پیش میره، نه؟

منبع: +