erfan akbarnezhad
erfan akbarnezhad
خواندن ۴ دقیقه·۲ سال پیش

جست و جوی بصری (گوگل لنز) پارت 1 | visual search for fashion

visual search for fashion | عرفان اکبرنژاد
visual search for fashion | عرفان اکبرنژاد


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

انسان ها برای بدست اوردن اطلاعات داخل گوگل یا هر موتور جست و جو گری از کلمات استفاده میکنند؛ این کلمات در برگیرنده ویژگی های اطلاعاتی است که میخواهیم از گوگل استخراج کنیم.

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

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


محتوای پارت ها

درست مانند گوگل لنز، در اینجا قصد دارم یک موتور جست و جو گر بصری با استفاده از هوش مصنوعی (دیپ لرنینگ) درست کنیم، توضیحات انجام این پروژه را در اینجا بنویسیم .

Three parts of the article
Three parts of the article



قبل از شروع پارت اول، دموی نهایی پروژه در عکس زیر قرار دارد؛ این پروژه فقط بر روی دیتاست تیشرت اموزش دیده شده است.

  • به این صورت است که کاربر عکسی از تیشرت مورد نظر خود را وا رد می کند (anchor) و مدل هوش مصنوعی چند مدل از تیشرت های داخل فروشگاه (دیتابیس) را به کاربر پیشنهاد می دهد. (recommended )


ستون سمت چپ ورودی کاربر و ستون ها راست خروجی مدل (با توجه به دیتابیس)
ستون سمت چپ ورودی کاربر و ستون ها راست خروجی مدل (با توجه به دیتابیس)





جست و جوی بصری

در این پروژه، جست و جوی بصری یافتن شبیه ترین تصویر تی شرت (ورودی کاربر) در میان تصاویر تیشرت درون فروشگاه (دیتابیس) میتوان تعریف کرد.

تعریف مسئله

مسئله تا حدود زیادی تعریف شده است معلوم ما به دنبال مدلی هستیم که تصویری از یک کالا را بدهیم و خروجی مشابه به آن را به ما ارائه دهد.

اصلا شباهت یعنی چی ؟

چرا میگیم فلانی شبیه فلانی ؟

ما یه سری از ویژگی های متغیر در آدم ها را باهم مقایسه میکنیم مثل رنگ چشم ، فرم صورت ،اندازه بینی ،فرم بینی و …. ، داشتن چشم سبب شباهت آدمها با هم نیست بلکه یکسان بودن رنگ بودن چشم، سبب شباهت آدمها می شود.

بیایم به جای آدم از کرم استفاده کنیم ما ۳ نوع کرم داریم فقط ویژگی اندازه طول و قطر ها رو میدانیم

  • اولین نوع [۲۰ و ۰.۵ ]
  • دومین نوع [۱۵ و ۱ ]
  • سومین نوع [۱۰ و۰.۸]

حالا یه کرم با ویژگی های [۱۹ و ۱] به ما میدهند و می گویند به کدام نوع شباهت دارد، کمی سخت شد ولی ریاضی برایمان آسانش می کند.

ما چون دو ویژگی کرم ها را میدانیم در فضای دو بعدی تعبیه (embedded space) می کنیم و بعد فاصله ی کرمی که میخواهیم پیدا کنیم را با کرم های دیگر مقایسه میکنیم.

هر نوع کرم را به دلیل اینکه دو ویژگی اش مشخص بود، به یک نقطه در فضای دو بعدی تعمیم داد که x ویژگی اول و y ویژگی دوم.

اگر سه ویژگی مشخص بود به بردار در فضای سه بعدی تعمیم می دادیم

اگر n ویژگی داشت به بردار در فضای n بعدی تعمیم می دادیم.


حال چون هر نوع کرم رو به نقطه تعمیم دادیم میریم سراغ فاصله ی دو نقطه که نشان دهنده ی شباهت کرم ها نسبت بهم هست

فاصله ی دونقطه را میتوانیم از روش (اقلیدوسی و منهاتن و شباهت کسینوسی و …) انتخاب کنیم و فاصله را بدست بیاوریم هرچی فاصله بین دو نقطه بیشتر باشد در نتیجه دو کرم باهم تفاوت زیادی دارند و هرچی فاصله بین دو کرم کم تر باشد شباهت دو کرم به هم بیشتر است

اندازه گیری فاصله دونقطه
اندازه گیری فاصله دونقطه


استخراج ویژگی | feature extraction

ابتدا یک فضای ویژگی که تصاویر در آن تعبیه (embedded space) می شوند را تعریف می کنیم. در این فضا می‌توانیم تصاویر را به‌عنوان بردار مقادیر پیکسلی آن‌ها که ویژگی‌های بصری تصاویر هستند، نشان دهیم.

برای مثال اگر پیکسل های عکس به صورت 224 و224 و3 (ارتفاع و عرض و کانال RGB ) باشد ما با استفاده از استخراج ویژگی(feature extraction) ابعاد تصاویر به یه بردار(vector) n بعدی تبدیل میکنیم؛ بعد از تبدیل کردن تصاویر به بردار به دنبال شباهت بردارها (شباهت کسینوسی) که درواقع شباهت به تصاویر است می گردیم.

این کار برای ساده‌سازی تصویر برای پردازش بیشتر یا کاهش حجم داده‌هایی که باید ذخیره شوند انجام می‌شود.

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

بردار n بعدی حاصل از استخراج ویژگی
بردار n بعدی حاصل از استخراج ویژگی


بخش اول را تمام میکنم امیدوارم خوشتان آمده باشد من تازه شروع کردم به نوشتن پروژه ها، اگر پیشنهادی یا انتقادی به نوع نوشتاری و کلا همه چی داشتید خوش حال میشم نظرتون را برای من بنویسید .



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