قطعا برای شما هم پیش آمده است که از لباسی در فیلم یا شبکه اجتماعی خوشتان آمده باشد و بخواهید آن را بخرید ولی هیچ کلمه ای برای توصیف آن لباس یا شی به ذهنتان نرسد.
انسان ها برای بدست اوردن اطلاعات داخل گوگل یا هر موتور جست و جو گری از کلمات استفاده میکنند؛ این کلمات در برگیرنده ویژگی های اطلاعاتی است که میخواهیم از گوگل استخراج کنیم.
حالا فرض کنیم از دیجی کالا قراراست تی شرت بخریم، در جست جوگر دیجی کالا کلمه تی شرت را تایپ می کنیم؛ دی جی کالا تیشرت های مردانه، بچه گانه، زنانه و … را در سایزها و اشکال مختلف نشان میدهد. ما میخواهیم خروجی را محدودتر کنیم این بار تی شرت مردانه سرچ میکنیم، این بار هم خروجی پر از کالاهایی است که ما نمی پسندیم. خروجی را باز محدود تر می کنیم تیشرت مردانه راه راه را سرچ میکنیم این خروجی هم مورد پسند نیست، و دوباره تیشرت مردانه راه راه سفید و سیاه سرچ میکنیم بعد از کلی وقت گذاشتن بالاخره کالایی مورد نظر خود را پیدا می کنیم.
یک تصویر اندازه هزار کلمه ارزش دارد.
درست مانند گوگل لنز، در اینجا قصد دارم یک موتور جست و جو گر بصری با استفاده از هوش مصنوعی (دیپ لرنینگ) درست کنیم، توضیحات انجام این پروژه را در اینجا بنویسیم .
قبل از شروع پارت اول، دموی نهایی پروژه در عکس زیر قرار دارد؛ این پروژه فقط بر روی دیتاست تیشرت اموزش دیده شده است.
در این پروژه، جست و جوی بصری یافتن شبیه ترین تصویر تی شرت (ورودی کاربر) در میان تصاویر تیشرت درون فروشگاه (دیتابیس) میتوان تعریف کرد.
مسئله تا حدود زیادی تعریف شده است معلوم ما به دنبال مدلی هستیم که تصویری از یک کالا را بدهیم و خروجی مشابه به آن را به ما ارائه دهد.
اصلا شباهت یعنی چی ؟
چرا میگیم فلانی شبیه فلانی ؟
ما یه سری از ویژگی های متغیر در آدم ها را باهم مقایسه میکنیم مثل رنگ چشم ، فرم صورت ،اندازه بینی ،فرم بینی و …. ، داشتن چشم سبب شباهت آدمها با هم نیست بلکه یکسان بودن رنگ بودن چشم، سبب شباهت آدمها می شود.
بیایم به جای آدم از کرم استفاده کنیم ما ۳ نوع کرم داریم فقط ویژگی اندازه طول و قطر ها رو میدانیم
حالا یه کرم با ویژگی های [۱۹ و ۱] به ما میدهند و می گویند به کدام نوع شباهت دارد، کمی سخت شد ولی ریاضی برایمان آسانش می کند.
ما چون دو ویژگی کرم ها را میدانیم در فضای دو بعدی تعبیه (embedded space) می کنیم و بعد فاصله ی کرمی که میخواهیم پیدا کنیم را با کرم های دیگر مقایسه میکنیم.
هر نوع کرم را به دلیل اینکه دو ویژگی اش مشخص بود، به یک نقطه در فضای دو بعدی تعمیم داد که x ویژگی اول و y ویژگی دوم.
اگر سه ویژگی مشخص بود به بردار در فضای سه بعدی تعمیم می دادیم
اگر n ویژگی داشت به بردار در فضای n بعدی تعمیم می دادیم.
حال چون هر نوع کرم رو به نقطه تعمیم دادیم میریم سراغ فاصله ی دو نقطه که نشان دهنده ی شباهت کرم ها نسبت بهم هست
فاصله ی دونقطه را میتوانیم از روش (اقلیدوسی و منهاتن و شباهت کسینوسی و …) انتخاب کنیم و فاصله را بدست بیاوریم هرچی فاصله بین دو نقطه بیشتر باشد در نتیجه دو کرم باهم تفاوت زیادی دارند و هرچی فاصله بین دو کرم کم تر باشد شباهت دو کرم به هم بیشتر است
ابتدا یک فضای ویژگی که تصاویر در آن تعبیه (embedded space) می شوند را تعریف می کنیم. در این فضا میتوانیم تصاویر را بهعنوان بردار مقادیر پیکسلی آنها که ویژگیهای بصری تصاویر هستند، نشان دهیم.
برای مثال اگر پیکسل های عکس به صورت 224 و224 و3 (ارتفاع و عرض و کانال RGB ) باشد ما با استفاده از استخراج ویژگی(feature extraction) ابعاد تصاویر به یه بردار(vector) n بعدی تبدیل میکنیم؛ بعد از تبدیل کردن تصاویر به بردار به دنبال شباهت بردارها (شباهت کسینوسی) که درواقع شباهت به تصاویر است می گردیم.
این کار برای سادهسازی تصویر برای پردازش بیشتر یا کاهش حجم دادههایی که باید ذخیره شوند انجام میشود.
مشکلی که بعد از بدست آوردن بردار ویژگی ها داریم این است که چگونه ویژگی های تصاویر را تعبیه کنیم که فاصله بردارهای تصاویر مشابه به هم کمتر و فاصله بردارهای تصاویر متفاوت بیشتر باشد. در بخش سوم راه حل این مشکل پاسخ داده شده است.
بخش اول را تمام میکنم امیدوارم خوشتان آمده باشد من تازه شروع کردم به نوشتن پروژه ها، اگر پیشنهادی یا انتقادی به نوع نوشتاری و کلا همه چی داشتید خوش حال میشم نظرتون را برای من بنویسید .