سیستم دسته‌بندی تصویری و متنی: از تشخیص چهره تا اسم فونت با هوشمندی چند‌مرحله‌ای!

بیا فرض کنیم کلی داده و عکس و متن داریم که هر روز دارن بیشتر میشن؛ مثلاً کلی عکس چهره با حالت‌های مختلف یا شخصیت‌های متنی با فونت‌های گوناگون. خب وقتی حجم داده‌ها اینقدر زیاد باشه، طبیعتاً باید یه راه‌حل قوی و سریع پیدا کنیم که بتونه بین این همه دسته و حالت مختلف نظم بده و دسته‌بندی‌شون کنه. یه مطالعه جدید اومده سراغ همین موضوع و یه مدل هوشمند گذاشته روی دسته‌بندی چندمرحله‌ای (یا به قول خودشون hierarchical multi-class classification). این یعنی داده‌ها رو طبقه‌بندی می‌کنیم، طوری که حتی گروه‌بندی‌های کوچیک‌تر هم بهتر درک بشن؛ مثلاً اول میگه این عکس مال کیه (کدوم فرد یا شخصیت)، بعدش میگه چه حالتی یا سبکی داره (مثلاً داره لبخند می‌زنه یا فونتش چی‌یه). حالا بریم ببینیم این مدل چجوری کار می‌کنه!

اولش بحث انتخاب ویژگیه. یعنی هر عکس یا هر متن یه عالمه اطلاعات داره، اما ما می‌خوایم فقط اون قسمت‌های مهم رو برداریم که به درد دسته‌بندی می‌خوره. اینجا یه تکنیک معروف به اسم k-means segmentation استفاده شده — یعنی یه الگوریتم خوشه‌بندی که داده‌ها رو تقسیم می‌کنه به دسته‌های شبیه به هم، مثلاً قسمت‌هایی که اجزای صورت یا لبه‌های عکس رو نشون میده. (k-means segmentation یعنی الگوریتمی که داده‌ها رو بر اساس شباهت تقسیم‌بندی می‌کنه به چند خوشه یا گروه.)

خب، وقتی ویژگی‌های مهم رو پیدا کردیم، باید اون‌ها رو بهینه کنیم. اینجا سراغ linear regression رفتن — یه تکنیک عددی برای رابطه‌ی بین ویژگی‌ها. (linear regression یعنی پیدا کردن خطی که کمترین فاصله رو با همه‌ی داده‌ها داره؛ برای پیش‌بینی یا ساده‌سازی داده‌ها به کار میره.) این کار باعث میشه ویژگی‌هایی که انتخاب کردیم تا حد ممکن دقیق باشن و سر و صدای اضافه حذف بشه.

از اونجایی که توی داده‌های زیاد همیشه ممکنه یه سری نمونه خاص وجود داشته باشه که اصلاً به بقیه نمی‌خورن (بهشون میگن outlier یا داده پرت؛ یعنی داده‌ای که نسبت به بقیه خیلی متفاوت باشه)، باید این‌ها رو پیدا کنیم و بندازیم بیرون تا مدل‌مون گیج نشه و دقیق‌تر کار کنه.

وقتی همه چیز آماده شد، میریم سراغ اصل ماجرا: آموزش ماشین (training) با همین داده‌های تمیز و جمع‌و‌جور. یعنی مدل یاد می‌گیره که اگه فلان ویژگی وجود داشت، این عکس یا متن باید جزو این دسته باشه. بعد سر پیشبینی که میرسه، از distance matrix-based technique استفاده میکنه — یه روشی که میاد فاصله‌ی ویژگی‌ها رو اندازه می‌گیره تا حالت یا سبک (مثلاً pose توی عکس یا font style توی متن) رو درست‌تر تشخیص بده. (distance matrix یعنی یه ماتریس که فاصله‌ی بین هر دو داده رو حساب می‌کنه.)

برای آزمایش، رفتن سراغ دو تا مجموعه داده‌ی معروف: یکی ORL dataset واسه عکس‌های چهره بود (که ۴۰ فرد مختلف داره و هر کدوم ۱۰ حالت یا pose مختلف)، یکی هم مجموعه داده‌ی متنی با ۳۶ کاراکتر و هر کدوم ۱۰ فونت متنوع. نتیجه‌ها نشون داد این روشی که درست کردن، خیلی بهتر از رویکردهای سنتی جواب داده، مثلاً حتی بهتر از KNN یا Bayesian یا SVM (KNN یعنی نزدیک‌ترین همسایه‌ها، Bayesian یعنی بر اساس احتمال، و SVM هم یکی از معروف‌ترین روش‌های دسته‌بندیه).

نکته جالب اینه که اگه داده‌های پرت رو حذف کنن، حتی تونستن به دقت ۱۰۰٪ برسن! اگر هم فقط با ویژگی‌های اولیه کار کنن، تا ۹۸٪ دقت گرفتن که بازم عالیه. خلاصه قضیه اینه که سیستم‌های دسته‌بندی سنتی که بهش میگن flat classification، معمولاً همه چیزو با هم یه جا میبینن و زیاد دقیق نیستن. اما این روش جدید چون هر چیز رو مرحله‌به‌مرحله، طبقه‌طبقه بررسی می‌کنه (یعنی همون hierarchical)، هم بهتر مقیاس‌پذیره، هم هر کسی راحت‌تر می‌تونه متوجه نحوه تصمیم‌گیری مدل بشه.

در کل، اگه یه روز خواستی توی پروژه‌هات با کلی عکس و متن و دسته‌بندی پیچیده کار کنی، این مدل چندمرحله‌ای رو حتماً امتحان کن؛ هم دقیق‌تره، هم داده‌های پیچیده رو بهتر مدیریت می‌کنه و نتایج بهتری میده. خلاصه، عصر داده‌ها رو باید با الگوریتم‌های هوشمند و چندلایه مدیریت کرد نه مدل‌های ساده و سرراست قدیمی!
منبع: +