به پارت دوم مقاله ساخت موتور جست و جوگربصری رسیدیم، در مقاله قبل به خوبی با تعریف شباهت و استخراج ویژگی در تصاویر اشنا شدیم (حتما ابتدا مقاله پارت اول را مطالعه کنید) .
و در نهایت باید مدل هوش مصنوعی طراحی کنیم که بعد ازاستراج ویژگی؛ فاصله بردار تصاویر شبیه به هم کم باشد و فاصله تصاویر متفاوت زیاد باشد؛ کل فرآیند گرفتن تصاویر از کاربر و تبدیل آنها به بردار است. سپس شباهت بین این بردارها را پیدا کرده و آن را در پایگاه داده (دیتابیس) خود مقایسه می کنیم.
در این بخش، دیتاست خود و نحوه تکنیک های پیش پردازش برای ساخت موتور جستجوی بصری برای تی شرت را توضیح خواهم داد.
برای اینکه یک مدل هوش مصنوعی خوب اموزش ببینه؛ به دیتای خوب نیاز دارید. نقش دیتا در هوش مصنوعی، نقش سوخت در ماشین است. هر چه سوخت زیاد باشد، ماشین بیشتر حرکت میکند؛ هر چی دیتا بیشتر و تمیز باشد مدل بیشتر و بهتر یاد میگیرد.
مجموعه دیتاست :
6500 تصویر تیشرت در دیتاستمون قرار دارد؛ از این تعداد حدود 70 درصد تصاویر تیشرت بر تن یک انسان هست و 30 درصد باقی مانده تنها از تی شرت عکس برداری شده است.
برای تمیز کردن دیتاستمون، ابتدا یه مدل دتکشن ( object detection ) لباس های بالا تنه درست میکنیم و سپس از طریق سگمنتیشن ( segmentation) پیکسل های تصویر که حاوی تیشرت را استخراج میکنیم.
سه تا کاربرد های مهم کامپیوتر ویژن؛ به طور خلاصه در کلاسیفیکیشن تصاویر (Image Classification) به سوال چه چیزی؟ (موجود زنده و اشیا و ….) در تصاویر هست پاسخ میدهد، در تشخیص اشیا Object) Detection) کجای تصاویر اون چیز (موجود زنده و اشیا و ….) وجود دارد و در تقسیم بندی تصویر (Image Segmentation) کدام پیکسل های عکس حاوی اون چیز (موجود زنده و اشیا و ….) هست.
تشخیص اشیا وظیفه مکان یابی و چارچوب (bounding box) اشیا را در تصاویر است. روش های تشخیص اشیا را می توان به دو دسته تک مرحله ای (one-stage) و دو مرحله ای (two-stage) تقسیم کرد.
در دو مرحله ای مدل ابتدا مکان های ای که احتمال وجود شی را دارد استخراج میکند ( region proposal ) و فقط اون مکان ها را کلاس بندی و رگرسیون (x, y, h, w) برای (bounding boxes ) میکنه. ( rcnn )
در تک مرحه ای استخراج مکان ها (region proposal) حذف شده و مدل فقط پیشبینی رگرسیون (x, y, h, w) برای (bounding boxes) و احتمال کلاس هارا میکند.
در مدل های تک مرحله ای (one-stage) چون محاسبات کم تری نسبت به دو مرحله ای (two-stage) دارد، سریع تر پیشبینی و محاسبه میکند، ولی ممکن است عملکرد شبکه کاهش یابد.
مقایسه منصفانه بین تشخیص اشیاهای مختلف بسیار سخت است. هیچ پاسخ دقیقی در مورد اینکه کدام مدل بهترین است وجود ندارد.هر مدل ممکن است در یک موقعیت خاص، عملکرد بهتری داشته باشد.
زیاد وارد نکات ریز تشخیص اشیا (Object Detection) و سگمنتیشن (Image Segmentation) نمیشم، در این پروژه چون ملاکمون دقت، و زمان زیاد اهمیتی برای ما ندارد از مدل EfficientDet و برای سگمنتیشن هم از مدل U-NET استفاده میکنم.
تمام کد های object detection و segmentation به زبان پایتون (python) در گیت هابم موجود هست.
بخش دوم را تمام میکنم امیدوارم خوشتان آمده باشد من تازه شروع کردم به نوشتن پروژه ها، اگر پیشنهادی یا انتقادی به نوع نوشتاری و کلا همه چی داشتید خوش حال میشم نظرتون را برای من بنویسید.