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

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


مجموعه دادهای که در اینجا استفاده خواهد شد، یعنی مجموعه داده زبان اشاره MNIST، دارای یک آرایه تکبُعدی برای هر تصویر است. اگر کاربر بخواهد به درستی با شبکه عصبی پیچشی کار کند، نیاز به تغییر شکل این آرایه به قالب دوبُعدی دارد. در این مثال مشخص، ۷۸۴ پیکسل از هر تصویر موجود است که میتوان آن را به 28*28 تغییر شکل داد. قطعه کد لازم برای این کار، در ادامه ارائه شده است.
در اینجا، یک تابع اولیه ساخته شده است که کمک میکند تا تغییر شکل انجام شود. این تابع، مجموعه داده و ابعاد تصویر را دریافت و مجموعه داده تغییر شکل داده شده را در خروجی باز میگرداند.

تانسورها در واقع ساختارهای داده پایتورچ هستند که مانند آرایهها کار میکنند و تنها تفاوتهای اندکی با آن دارند. برای مثال، تانسورها میتوانند با GPU کار کنند.
- «دوره» (Epoch) اساسا میزانی است که شبکه آموزش خواهد دید (باید پیرامون بیشبرازش هوشیار بود).
- «دسته» (Batch)، تعداد نمونههای آموزشی است که در یک تکرار به شبکه خوراک داده میشوند.
- «نرخ یادگیری» (Learning Rate) مشخص میکند که شبکه چقدر سریع تنظیم میشود و یاد میگیرد.
در ادامه، چگونگی تنظیم فراپارامترهای بیان شده، در زبان برنامهنویسی پایتون، نشان داده شده است.
فراپارامترها و تنظیمات مناسب آنها، در آموزش دیدن درست مدل و ارائه خروجیهای دارای صحت مناسب، تأثیر قابل توجهی دارند. تنظیم کردن درست این فراپارامترها نیز نیازمند ترفندهای خاصی است.
با تجربه کردن این کار، کاربر میتواند توانایی خود را برای تنظیم فراپارامترها بهبود ببخشد. اکنون، معماری شبکه تعریف میشود. چنانکه پیش از این نیز بیان شد، از شبکه عصبی پیچشی پایهای استفاده میشود. بنابراین، به صورت زیر عمل شده است.
- توقف در سه conv layers با maxpool در اولین دو لایه پیچشی، اتفاق میافتد.
- همچنین، یک dropout layer پس از سومین لایه پیچشی conv layer اضافه شده است که در بحث «بیشبرازش» (Overfitting) کمک میکند و داشتن آن اساسا خوب است.
- در اینجا، ۲۶، تعداد خروجیها (یا تعداد کلاسها را) برای مجموعه داده مورد استفاده تعیین میکند. این مورد ممکن است بسته به شکل مجموعه داده، متفاوت باشد.
- از «logsoftmax» نیز استفاده میشود. این مورد در واقع «تابع فعالسازی» (Activation Function) است.

همچنین، دو تابع سفارشی نیز اضافه میشود. این توابع عبارتند از: «آزمون» (Test) و ارزیابی (Evaluate). هر دو این توابع، بازخوردهایی پیرامون عملکرد شبکه ارائه میکنند.
- تابع آزمون (Test)، تعداد پیشبینیهای صحیح را مقایسه و صحت را چاپ میکند.
- تابع ارزیابی (Evaluate)، صحت را محاسبه و مقدار آن را باز میگرداند. این کار برای ثبت سوابق در هنگام آموزش دادن مدل، مفید است.
اکنون که شبکه آموزش دیده است، میتوان نگاهی به کارایی شبکه داشت.
در تصویر زیر، میتوان موازنه بین صحت و زیان را در مدل مشاهده کرد.

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

این خروجی بسیار خوب است و در واقع، کاربر توانسته است ۸۵ مورد از ۱۰۰ مورد علائم زبان اشاره را به درستی تشخیص دهد. همچنین، میتوان با تغییر فراپارامترها و انجام آزمایشهای تصادفی روی لایهها، صحت بیشتری به دست آورد.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- مجموعه آموزشهای دادهکاوی یا Data Mining در متلب
- مجموعه آموزشهای هوش مصنوعی
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- شناسایی دست خط با رگرسیون لجستیک در پایتون — راهنمای کاربردی
- یادگیری ماشین با پایتون — به زبان ساده
- آموزش یادگیری ماشین با مثالهای کاربردی — مجموعه مقالات جامع وبلاگ فرادرس
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید













سلام. بسیار بسیار سپاسگذارم از توضیحات خوبتون. من سورس کامل برنامه را برای پایان نامه ام احتیاج دارم. امکان داره که سورس کامل را برام ایمیل کنید؟
چون وقتی خطهای برنامه که در این صفحه وجود داره را در پایتون مینویسم ارور میده.