<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>نوشته های مصطفی امیری</title><link>https://virgool.ir/feed/@mostafa.amiri.62</link><description>دانشجوی مقطع دکتری هوش مصنوعی در دانشگاه تهران</description><language>fa</language><pubDate>2026-11-11 02:00:24</pubDate><image><url>https://files.virgool.ir/upload/users/131446/avatar/2zuGs9.jpg</url><title>مصطفی امیری</title><link>https://virgool.ir/@mostafa.amiri.62</link></image><item><title>نحوه استقرار مدل زبانی بزرگ(LLM Deployment)</title><link>https://virgool.ir/@mostafa.amiri.62/نحوه-استقرار-مدل-زبانی-بزرگllm-deployment-wu5cwrtfwcgu</link><description>امروزه مدل‌های زبانی بزرگ یا همان Large Language models(LLM) ها که شاید بیشتر بواسطه ChatGPT و  Gemini شناخته شده‌اند توانسته‌اند بسیاری از وظایف مربوط به پردازش زبان طبیعی مثل ترجمه، خلاصه سازی، درک زبان و ... را با کیفیت بسیار خوبی انجام دهند.مدل‌های زبانی بزرگ(LLM)اگرچه آموزش این مدل‌ها نیاز به منابع سخت افزاری زیادی و بخصوص پردازشگر گرافیکی GPU دارد و جز شرکت‌های خیلی بزرگ از عهده این کار بر نمی آیند اما خوشبختانه مدل‌های متن باز(open source) چند زبانه‌ای اخیرا منتشر شده است که از کیفیت خوبی روی زبان فارسی برخوردار است.از جمله این مدل‌ها می‌توان به مدل Llama3 و C4ai اشاره کرد.اگر میخواهید یکی از این مدل‌ها را برای استفاده شخصی یا سازمانی خود استفاده کنید و با محیطی شبیه محیط Chat GPT از ان استفاده کنید با انجام موارد زیر می‌توانید به راحتی این کار ار انجام دهید.ابتدا لازم است که روی سیستم خود Docker را نصب کرده باشید که راهنمای نصب آن را می‌توانید از اینجا ببینید.سپس ایمیج ollama را با دستور زیر دریافت و اجرا کنید (اگر جیپیو ندارید در دستور دوم --gpus=allرا حذف کنید.docker pull ollama/ollama&#xA;&#xA;docker network create ollama-net&#xA;&#xA;docker run -d --gpus=all -v ollama:/root/.ollama -v \ your_model_path:/home -p 11434:11434 --name ollama \ --network ollama-net ollama/ollamaتا اینجا سرور خود را بالا آورده اید. برای اینکه یک مدل به آن اضافه کنید باید مدل به فرمت gguf باشد. برای بیشتر مدل ها این فرمت از مدل را می‌تواند در سایت huggingface و اکانت thebloke پیدا کرده و دانلود کنید و در مسیری که home کانتینر mount کرده‌اید قرار دهید.سپس یک فایل به نام Modelfile در همان مسیر بسازید و داخل آن مشخص کنید که از کدام مدل میخواهید استفاده کنید.FROM ./Mistral-7B-fp16.ggufPARAMETER temperature 0.4SYSTEM &#34;تو مدل هوش مصنوعی دال هستی و به فارسی صحبت میکنی.&#34;TEMPLATE &#34;[INS]{{ .Prompt }}[/INS]&#34;سپس با دستور زیر به داخل bash کانتینر بروید و با رفتن به مسیر home مدل را بسازید:docker -it exec ollama bashcd /homeollama create your_model_name -f Modelfileحالا برای اینکه یک واسط کاربری خوب هم داشته باشید می‌توانید از open-webui استفاده کنید. با دستور زیر آن را دانلود و یک ایمیج از روی ان بسازید و سپس یک کانتینر از روی ان بالا بیاورید:git clone https://github.com/open-webui/open-webui.gitcd open-webuidocker build -t openwebui .docker run -d -p 80:8080 --network ollama-net -v openwebui:/app/backend/data --name myOpenWebUI --restart always openwebuiحالا کافیست در مرورگر خود آدرس http://localhost را بزنید و بعد از ثبت نام کردن وارد پنل شود.در قسمت تنظیمات در گوشه بالا سمت راست شده و در بخش connection آدرس سرور را به صورت http://ollama:11434 تغییر داده و ذخیره کنید.صفحه تنظیمات open-webuiسپس از بالا صفحه مدل را انتخاب کرده و با آن چت کنید.انتخاب مدلصفحه چت open-webui</description><category>مصطفی امیری</category><author>مصطفی امیری</author><pubDate>Wed, 01 May 2024 18:45:18 +0330</pubDate></item><item><title>کاهش ابعاد به روش PCA</title><link>https://virgool.ir/@mostafa.amiri.62/کاهش-ابعاد-به-روش-pca-uq9rwozrzvns</link><description>روش PCA(Principal Component Analysis) یک روش کاهش ابعاد غیرنظارتی(unsupervised) خطی است. منظور از غیرنظارتی بودن اینست که کاهش ابعاد بدون در نظر گرفتن برچسب داده‌ها انجام می‌شود و منظور از خطی بودن اینست که ویژگی‌های جدید هرکدام یک ترکیب خطی از ویژگی‌های اولیه هستند.ایده اصلیمعمولا اگر داده‌ها در راستای یک ویژگی دارای پراکندگی بیشتری باشند، احتمالا در آن راستا بهتر می‌توان داده‌ها را از هم جدا کرد.مثلا اگر تعدادی سیب داشته باشیم و وزن همه آن‌ها تقریبا برابر باشد، احتمالا جداسازی سیب‌های با کیفیت از سیب‌ها بی‌کیفیت بر اساس وزن خیلی ساده نخواهد بود. اما اگر تفاوت رنگ در این سیب‌ها خیلی زیاد باشد، شاید بتوان بر این اساس جداسازی بهتری را انجام داد. البته این موضوع همواره درست نیست و گاهی ممکنست پراکندگی در راستای یک ویژگی کم باشد ولی همان ویژگی معیار بسیار مناسبی برای جداسازی داده‌ها باشد.انتخاب ملاک مناسب در طبقه‌بندی (منبع)بخاطر همین نکته آخر در حذف ویژگی‌ها به روش PCA باید دقت زیادی کرد و به عبارت دیگر باید خسیس بود.تعریف فرمال مسالهفرض کنید n داده داریم که هرکدام دارای d ویژگی هستند. هدف پیدا کردن یک ترکیب خطی از این d ویژگی است به طوری که پراکندگی داده‌ها در آن راستا حداکثر باشد. اگر این راستا را با بردار u نشان دهیم و ویژگیها را به ترتیب با f_1 تا f_d نامگذاری کنیم، ویژگی مطلوب به صورت زیر است:که با ضرب در بردار ویژگی به صورت زیر در می‌آید:بنابراین مساله به صورت فرمال ریاضی به صورت زیر خواهد بود:صورت مساله  بهینه سازی PCAدر رابطه بالا سیگما ماتریس کواریانس داده‌ها در راستای بردار u است که به صورت زیر محاسبه می‌شود:واریانس داده‌ها در راستای بردار uبا نوشتن معادله لاگرانژین برای مساله بهینه سازی مشروط گفته شده و مشتق گرفتن از آن به روابط زیر می‌رسیم:معادله لاگرانژین مساله بهینه سازی مشروطمشتق معادله لاگرانژین نسبت به متغیرهابا توجه به رابطه فوق می‌توان نتیجه گرفت که u بردار ویژه ماتریس کواریانس داده‌هاست و با توجه به اینکه هرچقدر لامبدا بزرگتر باشد واریانس در راستای u بیشتر می‌شود، میتوان نتیجه گرفت که حداکثر واریانس به ترتیب در راستای بردار ویژه متناظر با بزرگترین مقدار ویژه است.</description><category>مصطفی امیری</category><author>مصطفی امیری</author><pubDate>Fri, 10 Feb 2023 19:16:22 +0330</pubDate></item><item><title>کشف اشیاء در تصویر R-CNN و Fast R-CNN و Faster R-CNN و YOLO</title><link>https://virgool.ir/moneytoo/کشف-اشیاء-در-تصویر-r-cnn-و-fast-r-cnn-و-faster-r-cnn-و-yolo-qv3czowuty7m</link><description>یکی از مسائل بینایی ماشین(computer vision) مساله کشف اشیاء(object detection) است. حل این مساله به معنی پیدا کردن اشیاء مختلف در یک تصویر و تعیین یک مرز برای آن شکل است. تصویر زیر نمونه ای از خروجی این مساله است.نمونه ای از خروجی مساله کشف اشیاءایده اولیه برای حل این مساله اینست که فرض کنیم یک شبکه عصبی کانولوشنی(CNN) داشته باشیم که برای دسته بندی تصاویر آموزش دیده است. حالا می توانیم یک پنجره کوچک را روی تصویر بلغزانیم هر بخش از تصویر را به  شبکه مفروض بدهیم و ببینیم آیا یک شی در آن پنجره قرار دارد یا خیر؟ و اگر پاسخ مثبت است آن شی چیست؟ و از آنجا که اشیاء ممکنست به دلیل جلو و عقب بودن اندازه های مختلفی داشته باشند می توانیم با پنجره های با اندازه های مختلف همین کار را تکرار کنیم.ایراد اصلی که بر ایده خام بالا وارد است هزینه بسیار بالای محاسباتی است.روش R-CNNایده اصلی این روش که در سال ۲۰۱۴ توسط Ross Girshick و همکارانش در (اینجا) مطرح شد اینست که به جای اینکه تمام قسمت های تصویر را برای پیدا کردن اشیاء بگردیم ابتدا نواحی از تصویر که احتمال وجود یک شی در آن ها وجود دارد را پیدا کنیم و سپس همان ایده ساده بالا رو فقط روی آن نواحی پیاده کنیم.فرآیند کلی روش R-CNNاین روش از سه ماژول تشکیل شده:ماژول تولید نواحی پیشنهادی مستقل از اشیاءیک شبکه عصبی بزرگ کانولوشنی که از هر ناحیه بردار ویژگیهایی با طول ثابت استخراج می کندتعدادی دسته بند ماشین بردار پشتیبان خطی(SVM) برای هر کلاس از اشیاءبرای تعیین نواحی پیشنهادی روش‌های مختلفی ارائه شده است که در این مقاله از روش جستجوی انتخاب کننده(selective search) استفاده شده است که در (اینجا) مطرح شده است. طراحی این الگوریتم به نحویست که شامل این ملاحظات می شود: ۱) اشیاء ممکنست در هر مقیاسی وجود داشته باشند، بنابراین باید الگوریتم طوری طراحی شود که ناحیه مربوط به هر شی با هر مقیاسی را تشخیص بدهد. ۲) تمایز نواحی میتواند به دلایل مختلفی مثل تفاوت رنگ یا زمینه یا فاصله مکانی یا موارد دیگر باشد. بنابراین به جای اینکه فقط یکی از اینها در نظر گرفته شود،  به نحوی از تمام این ها استفاده می شود. ۳) با توجه به کاربردهای این روش در کشف و تشخیص اشیاء نباید هزینه محاسباتی زیادی داشته باشد و نسبتا باید سریع باشد. جستجوی انتخاب کننده یک روش حریصانه است و به این صورت عمل می کند که ابتدا به روشی که در (اینجا) آمده است یک تعدادی ناحیه اولیه را مشخص می کند و سپس بر اساس میزان شباهتی که هر ناحیه با نواحی مجاورش دارد، هر ناحیه را با شبیه ترین ناحیه مجاور آن ادغام می کندو این کار را تا آنجا که کل تصویر در یک ناحیه ادغام شود ادامه می دهد.شبه کد الگوریتم حریصانه جستجوی انتخاب کنندهبرای اندازه گیری میزان شباهت بین نواحی ۴ نوع شباهت اندازه گیری شده و از ترکیب خطی این ۴ نوع شباهت یک معیار شباهت کلی بین نواحی بدست آمده است. این معیارها مربوط به ترکیب رنگ و زمینه و اندازه و میزان فیت شدن دو ناحیه به همدیگر است.بعد از تعیین نواحی پیشنهادی که حدود ۲۰۰۰ ناحیه است، هر ناحیه برای استخراج ویژگیها به شبکه ImageNet که توسط Alex Krizhevsky و همکارانش در (اینجا) مطرح شده بود، داده می‌شود. ساختار این شبکه به شکل زیر است که البته لایه آخر شبکه کار کلاس بندی را انجام میدهد در اینجا حذف می شود و بردار ۴۰۹۶تایی از ویژگیها بدست می آید.شبکه ImageNet برای استخراج ویژگی های نواحی پیشنهادیبا توجه به اینکه ابعاد تصویر ورودی به این شبکه باید مقدار ثابتی داشته باشد، در این مقاله از کشیدن تصویر و تغییر ابعاد برای اندازه کردن آن استفاده شده است که نمونه هایی از آن در شکل زیر قابل مشاهده است. ضمن اینکه می شود از اضافه کردن حاشیه نیز به جای کشیدن تصویر استفاده کرد.نمونه هایی از تصاویر کشیده شده برای تطبیق به ورودی شبکه ImageNetنهایتا نیز از این بردار ویژگیهای با طول ثابت به عنوان ورودی به تعدادی ماشین بردار پشتیبان که برای دسته بندی هر نوع از اشیاء بهینه شده اند داده می شوند. البته به جای این کار می شود از یک لایه softmax استفاده کرد که در مقاله نشان داده شده است که روش بردار پشتیبان عملکرد مناسب تری دارد.ایراداتی که برای این روش توسط نویسنده مقاله در مقاله بعد مطرح شده است عبارتند از: ۱) چند مرحله ای بودن فرآیند آموزش مدل. ۲) هزینه بالای آموزش مدل. ۳) کند بودن عملکرد مدل.روش Fast R-CNNاین روش نیز توسط Ross Girshick یک سال بعد از روش بالا در (اینجا) مطرح شد. ایده کلی این روش در شکل زیر آمده است:فرآیند کلی روش Fast R-CNNورودی این معماری تصویر کامل و مجموعه ای از نواحی پیشنهادی(RoI: Region of Interest) است. ابتدا کل تصویر توسط یک شبکه عصبی کانولوشنی از پیش آموزش دیده مثل همان ImageNet که در مدل قبلی استفاده شده داده می شود تا یک conv feature map از کل تصویر بدست بیاید. در واقع مدل ImagNet تا قبل از لایه های fully connected آن مورد استفاده قرار می گیرد و آخرین لایه max pooling  با لایه RoI pooling به ازاء هر ناحیه پیشنهادی جایگزین می شود تا یک بردار ویژگیهای با طول ثابت بدست آید.لایه ROI Poolingلایه RoI pooling از max pooling برای تبدیل ویژگی های داخل هر ناحیه به یک شکل دو بعدی با ابعاد ثابت استفاده می کند. این لایه هر ناحیه پیشنهادی را به تعدادی پنجره با ابعاد ثابت تقسیم می کند و در هر پنجره ماکسیمم مقدار ویژگیها را انتخاب می کند. نمونه ای از این عملیات برای تبدیل به پنجره ۲در۲ به صورت شکل زیر است:لایه RoI pooling - مرجعاگر ابعاد ناحیه پیشنهادی h*w باشد و ابعاد نهایی مورد نیاز H*W باشد ابعاد تقریبی پنجره ها h/H*w/W خواهد بود.بعد از این لایه هم دو لایه fully connected در کنار هم یکی برای دسته بندی اشیاء به همراه softmax و دیگری برای محل قرار گیری شیء به عنوان boundary box regressor استفاده می شود.روش Faster R-CNNاین روش توسط Shaoqing Ren در سال ۲۰۱۶ در (اینجا) مطرح شد. معماری کلی این مدل به صورت شکل زیر است.مدل Faster R-CNNاین مدل از دو ماژول تشکیل شده است. ماژول اول یک شبکه عصبی عمیق کانولوشنی که نواحی پیشنهادی را مشخص(RPN: Region Proposal Network) می کند و ماژول دوم همان Fast R-CNN است که از نواحی پیشنهادی بدست آمده استفاده می کند.در اینجا دو ایده مورد استفاده قرار گرفته است. ایده اول برای حرکت دادن پنجره روی کل تصویر برای پیدا کردن نواحی پیشنهادی و ایده دوم برای پیدا کردن چند شی که دارای مرکز یکسانی در یک خانه هستند.ایده اول برگرفته از مقاله OverFeat است. برای توضیح این ایده ابتدا به نحوه پیاده سازی لایه fully connected با استفاده از لایه کانولوشن میپردازیم.پیاده سازی لایه fully connected با استفاده از کانولوشن و ایده اعمال این شبکه روی تصاویر بزرگتردر صورتی که بخواهیم یک تنسور n*n*c را که از کانولوشن لایه های قبلی بدست آمده به یک لایه fully connected بدهیم که دارای k پرسپترون است می توانیم از k فیلتر n*n استفاده کنیم. که در نتیجه به همان ابعاد میرسیم. در شکل زیر نمونه این کار قابل مشاهده است. البته در شکل اول آخرین لایه باید یک soft max با ۴ خروجی باشد.شبکه پیاده سازی شده با fully connectedشبکه پیاده سازی شده با لایه کانولوشنبنابراین به این طریق می توانیم کل شبکه را به صورت کانولوشنی پیاده سازی کنیم و در نتیجه بسیاری از محاسبات را به اشتراک گذاشته و عملکرد شبکه را برای اجرا رو GPU بهینه کنیم.اما ایده مقاله OverFeat به این صورت است که اگر ما یک شبکه کانولوشنی داشته باشیم که بطور مثال روی ابعاد ۱۴*۱۴ آموزش دیده است و خروجی ۱*۱ به ما میدهد را روی یک تصویر ۱۶*۱۶ اعمال کنیم خروجی آن به صورت ۲*۲ خواهد بود و این مثل اینست که ما یک پنجره ۱۴*۱۴ را روی تصویر ۱۶*۱۶ لغزانده باشیم و به ازاء هر پنجره خروجی را بدست آورده باشیم. بنابراین با این شیوه به جای لغزاندن پنجره روی تصویر با یکبار گذراندن تصویر از شبکه می توانیم خروجی را به ازاء پنجره های مختلف تصویر بدست بیاوریم.ایده اعمال شبکه کانولوشنی آموزش دیده روی تصاویر کوچکتر روی تصاویر بزرگترایده استفاده از Anchor boxبرای توضیح ایده دوم ابتدا در مورد برچسب داده های آموزش یک مقدار توضیح میدهیم. فرض کنید ما یک تصویر داریم که آن را به تعداد خانه کوچکتر مثلا ۱۹*۱۹ خانه تقسیم کرده ایم. در خروجی مدل به ازاء هر خانه کوچک یک بردار شامل احتمال وجود شی در آن خانه و مختصات نقطه گوشه سمت چپ بالای تصویر و طول و عرض آن که مجموعا ۵ عدد می شود و به اندازه k+1 درایه دیگر برای k کلاس از شیاء و یکی هم برای زمینه که به صورت یک داغ نشان می دهد شی مورد نظر مربوط به کدام دسته است. پس در مجموع برای هر کدام از ۱۹*۱۹ خانه یک بردار ۵+(k+1) بعدی خواهیم داشت.اگر یک شی در چند خانه قرار بگیرد فقط درایه اول در خانه ای ۱ خواهد بود که مرکز تصویر در آن قرار دارد.نمونه بردار خروجی به ازاء هر کدام از خانه های یک تصویر برای سه کلاس از اشیاءمشکلی می تواند پیش بیاید اینست که مرکز دو شی در یکی از این خانه ها واقع شود مانند شکل زیر.نمونه ای قرار گرفتن مرکز دو شی متفاوت در یک خانه از تصویربرای حل این مشکل ایده ارائه شده به این صورت است که می توانیم از تعدادی anchor box استفاده کنیم که هر کدام از آنها مرکزشان در مرکز خانه قرار می گیرد و یک مقیاس و نسبت ابعاد متفاوتی دارند و به ازاء هرکدام از این anchor box ها در بردار بالا شبیه آن را به ادامه بردار اضافه کنیم. در مقاله Faster R-CNN از ۹ Anchor box متفاوت استفاده شده است.نمونه ای از anchor box هابنابراین اگر بطور مثال دو anchor box داشته باشیم به ازاء هر خانه از تصویر برداری شبیه شکل زیر خواهیم داشت.نمونه ای از بردار خروجی برای دو anchor boxبرای آموزش شبکه RPN به ازاء هر Anchor box  در هر خانه از تصاویر آموزشی عدد صفر یا یک اختصاص می دهیم. عدد ۱ را در حالت به یک anchor box اختصاص می دهیم:‌۱) در صورتی که anchor box مورد نظر بیشترین IoU را با محدوده واقعی آن شی داشته باشد. ۲) درصورتی که anchor box مورد نظر دارای IoU بالاتر از ۰.۷ با محدوده واقعی شی داشته باشد.برای محاسبه IoU نیز از رابطه زیر استفاده می شود: تابع خطا(loss) مورد استفاده نیز به صورت زیر است:تابع خطا (loss) برای آموزش شبکه RPNبخش اول این تابع مربوط به خطای کلاس بندی و بخش دوم مربوط به خطای ناحیه تشخیص داده شده است. چون از این شبکه برای بخش fast R-CNN هم می خواهیم استفاده کنیم دو روش برای اشتراک گذاری وجود دارد. روش اول اینست که اول برای RPN آموزش داده شود و سپس برای fast R-CNN و این کار تکرار شود که در مقاله مذکرو همین روش مورد استفاده قرار گرفته است. روش دیگر هم اینست که همزمان با هم با خطای هر دو ماژول این ضرایب اصلاح شوند.مقایسه عملکرد این سه روش در (اینجا) به صورت زیر است:مقایسه روشهای R-CNN و Fast R-CNN و Faster R-CNNروش YOLOاین مقاله که در سال ۲۰۱۶ توسط Joseph Redmon ارائه شده است تحت عنوان you only look once تلاش دارد که مدلی یکپارچه و در لحظه(real time) برای مساله کشف اشیاء ارائه کند. مدل هایی که تا به حال مطرح شده بودند یک دسته بند را روی بخش های مختلف تصویر که در واقع همان نواحی پیشنهادی هستند اعمال می کنند و در مورد وجود شی در آن ناحیه تصمیم می گیرند. اما هدف در این مقاله اینست که شما فقط یکبار به تصویر نگاه کنید و اشیاء را تشخیص دهید.در این سیستم یک شبکه کانولوشنی همزمان جایگاه و نوع اشیاء را همانطور که در شکل زیر قابل مشاهده است تشخیص می دهد.مدل تشخیص اشیاء YOLOاولین امتیاز این مدل سرعت بالای آن است که بدلیل وجود مسیر یکپارچه تشخیص در ان است به نحوی که مدل پایه آن ۴۵ فریم در ثانیه را می تواند پردازش کند و مدلسریع آن تا ۱۵۰ فریم در ثانیه را می تواند تشخیص دهد. از سوی دیگر میانگین دقت این مدل نسبت به مدل های در لحظه دیگر تقریبا دو برابر است.اتفاقی که در این مدل می افتد اینست که تصویر به تعداد پنجره تقسیم می شود و برای هر پنجره همزمان احتمال وجود شی در anchor box های آن پنجره و احتمال مربوط به نوع شی محاسبه می شود و از ترکیب این دو نتیجه کلی حاصل می شود.کشف پنجره ها و احتمال وجود اشیاء در هر پنجره در مدل YOLOبنابراین اگر تصویر به S*S پنجره تقسیم شود به ازاء هر پنجره مطابق برداری که برای نمونه Anchor box در مدل قبل ارائه شد یک بردار B*5+C خواهیم داشت که B تعداد anchor box ها یا bounding box ها و C تعداد کلاس ها است. عدد ۵ هم شامل احتمال حضور شی و مختصات مرکز و طول و عرض محدوده شی است.در این مقاله برای ۲ نوع انکرباکس و ۲۰ کلاس آزمایش انجام شده و تعداد پنجره ها هم ۷ در ۷ است بنابراین خروجی مدل به صورت ۷در۷در۳۰ خواهد بود.ساختار شبکه کانولوشنی مورد استفاده از شبکه GoogLeNet الهام گرفته شده است که ساختار آن در شکل زیر آمده است.ساختار شبکه کانولوشنی مورد استفاده در مدل YOLOاز آنجا که برای یک شی ممکنست حاشیه های متفاوتی تشخیص داده شود برای انتخاب یکی از آنها به عنوان نتیجه نهایی از روش Non-max suppression استفاده می شود که در ادامه به توضیح آن می پردازیم.روش NMS: Non-max suppressionورودی این روش تعدادی مرز بسته و احتمال وجود اشیاء متناظ با آنها و یک حد آستانه برای میزان همپوشانی و خروجی لیستی از نواحی فیلتر شده است.الگوریتم به این صورت است:ابتدا ناحیه ای که بیشترین احتمال حضور اشیاء را دارد انتخاب و به لیست فیلتر شده ها اضافه می کنیم.در مرحله بعد هر ناحیه ای که IoU بیشتر از حد آستانه با این ناحیه منتخب را داشته باشد را حذف می کنیم.دوباره این دو مرحله را تکرار می کنیم تا ناحیه دیگری باقی نماند.نمونه ای از کد مربوط به پیاده سازی این روش را می توانید(اینجا) ببینید.الگوریتم روش Non-max suppressionنمونه عملکرد این روش به صورت زیر خواهد بود:نتیجه عملکرد روش Non-max suppressionالبته این روش می تواند یک اشکالی داشته باشد زمانی که چند شی در موقعیت های مشابهی قرار داشته باشند. مثلا در شکل زیر دو موقعیت با احتمال اطمینان حضور ۰.۸ ممکنست کاملا حذف شوند.که یک ایده برای رفع این مشکل اینست که به جای حذف کامل این نواحی میزان اطمینان حضور شی در آنها را به IoU تقلیل دهیم که به این روش soft Non-max suppression گفته می شود. که در این صورت شکل بالا به صورت زیر در می آید.مقایسه این دو الگوریتم به صورت زیر خواهد بود:الگوریتم NMS و soft-NMSیک مقایسه عملکردی بین روش YOLO و Fast R-CNN در خود مقاله انجام شده که به صورت زیر است:لیست مقاله های مورد استفاده در این نوشتار به شرح ذیل است:R. Girshick, J. Donahue, T. Darrell, and J. Malik. Rich feature hierarchies for accurate object detection and semantic segmentation. In CVPR, 2014.R. Girshick, “Fast R-CNN,” in IEEE International Conference on Computer Vision (ICCV), 2015.S. Ren, K. He, R. Girshick, and J. Sun. Faster r-cnn: Towards real-time object detection with region proposal networks.P. Sermanet, D. Eigen, X. Zhang, M. Mathieu, R. Fergus, and Y. LeCun. Overfeat: Integrated recognition, localization and detection using convolutional networks.Redmon, J., Divvala, S., Girshick, R., &amp; Farhadi, A. (2016). You only look once: Unified, real-time object detection. In Proceedings of the IEEE conference on computer vision and pattern recognition </description><category>مصطفی امیری</category><author>مصطفی امیری</author><pubDate>Sun, 29 May 2022 20:11:06 +0430</pubDate></item><item><title>دسته‌بندی(classification) و خوشه‌بندی(clustering)؛ مفاهیم و تفاوت‌ها</title><link>https://virgool.ir/moneytoo/دسته-بندیclassification-و-خوشه-بندیclustering-مفاهیم-و-تفاوت-ها-moyiwkk4tb2u</link><description>دو مفهوم بسیار پرکاربرد در علم داده، یادگیری ماشینی و داده کاوی مفاهیم دسته‌بندی و خوشه‌بندی است. ابتدا با تعریف این دو مفهوم آشنا می‌شویم:دسته‌بندی: ایجاد و ساخت یک مدل برای پیش‌بینی دسته(برچسب) مربوط به یک داده جدید. به طور مثال یک مدل ساخته می‌شود تا بتواند با دریافت اطلاعات یک فرد مشخص کند که این مفرد مبتلا به یک بیماری مشخص هست یا نه؟خوشه‌بندی: تقسیم مجموعه‌ای از داده‌ها به زیر مجموعه‌هایی به طوری‌که داده‌های داخل هر زیرمجموعه بیشترین شباهت را به هم و داده‌های داخل مجموعه‌های مختلف بیشترین تفاوت را از هم داشته باشند. به طور مثال مجموعه‌ای از متون را طی فرآیند خوشه‌بندی می توان تقسیم‌بندی کرد به طوری که متن‌هایی که دارای موضوعات مشابهی هستند در یک مجموعه قرار بگیرند.حالا که با تعریف این دو مفهوم آشنا شدیم خوبست کمی دقیق‌تر به تفاوت‌های این دو مفهوم توجه کنیم.یکی از تفاوت‌ها در نوع مساله ایست که با آن مواجه هستیم. در مساله دسته‌بندی قرار است با داده جدیدی مواجه شویم و به آن یک برچسبی(دسته‌ای) را از بین برچسب‌هایی(دسته‌هایی) که از قبل مشخص هستند بر اساس داده‌هایی که قبلا مشاهده شده‌اند اختصاص بدهیم ولی در مساله خوشه‌بندی تعدادی داده مشخص وجود دارد و صرفا قرار است این داده‌ها در گروه‌هایی که لزوما ماهیت و حتی تعداد آن ها برای ما مشخص نیست خوشه‌بندی شوند.یک مساله دسته‌بندی می‌تواند به این صورت باشد که تصویر یک عدد دستنویس به ماشین داده شود و از آن بخواهند که براساس تصاویری که قبلا دیده است مشخص کند که این تصویر چه عددیست اما یک مساله خوشه‌بندی مشابه می‌تواند به این صورت باشد که تعدادی تصویر اعداد دستنویس به ماشین داده شود و از آن خواسته شود که این تصاویر را به گروه‌هایی که با هم مشابه هستند تقسیم کند. حالا این تقسیم ممکنست بر اساس مشابهت دست خط ها اتفاق بیفتد و ممکنست بر اساس مشابهت بین آن چه نوشته شده است و مثلا تمام تصاویری که عدد ۲ در آن‌ها نوشته شده است در یک دسته قرار بگیرند و البته بدون آن که برچسب خاصی به این داده‌ها زده شود.تفاوت دیگر در نوع یادگیری ماشینی مورد استفاده در این دو فعالیت است. یادگیری ماشینی مورد استفاده در دسته‌بندی از نوع نظارتی(supervised) و در خوشه‌بندی از نوع غیرنظارتی(unsupervised) است. به این معنی که در دسته بندی ابتدا یک مدل بر اساس داده‌هایی که از قبل توسط انسان برچسب(دسته) آن ها مشخص است آموزش داده می‌شود و سپس مدل آموزش داده شده برای پیش‌بینی دسته داده‌های جدید مورد استفاده قرار می‌گیرد اما در خوشه‌بندی مرحله آموزش مدل را نداریم و فقط با یک الگوریتم و با استفاده از ویژگی‌هایی از درون خود داده‌ها و بدون نیاز به داده‌های برچسب گذاری شده باید خوشه‌بندی انجام شود.[تفاوت یادگیری نظارتی و غیرنظارتی]از دیگر تفاوت‌ها می‌شود به ماهیت خروجی این دو فعالیت اشاره کرد. در دسته‌بندی خروجی مشخص است که یکی از برچسب‌هاست ولی در خوشه‌بندی خروجی فقط تعدادی خوشه‌ است که اصلا از قبل مشخص نیست و حتی ممکنست تعداد آن ها را هم از قبل ندانیم.دسته بندی یک فرآیند دو مرحله‌ای شامل آموزش و تست است ولی خوشه بندی یک فرآیند یک مرحله‌ایست.معمولا فعالیت دسته‌بندی پیچیدگی بیشتری نسبت به خوشه‌بندی دارد.خلاصه تفاوت‌های دسته‌بندی(classification) و خوشه‌بندی(clustering)تصویر زیر تفاوت این دو فعالیت را به خوبی نشان می‌دهد. در مثال دسته‌بندی هدف این است که مشخص شود هر تصویر مربوط به کدام حیوان است و فرض می کنیم که انواع حیوانات را از قبل می‌شناسیم ولی در مثال خوشه‌بندی هدف این است که مثلا تصاویر در دو دسته خوشه‌بندی شوند که در این تصویر پرندگان و پستانداران را از هم جدا کرده است که البته این بر چسب پرنده و پستاندار هم توسط ماشین گذاشته نمی‌شود و فقط داده‌های مشابه در یک دسته قرار می‌گیرند.تفاوت دسته‌بندی(classification) و خوشه‌بندی(clustering) از سایت بیسمارتاز انواع روش‌های دسته‌بندی می‌شود به k نزدیکترین همسایه(KNN)، بیز ساده(naive bayes)، قاعده‌محور(rule-based)، ماشین بردار پشتیبان(SVM)، شبکه‌های عصبی(NN) و شبکه‌های باور بیزی(BBN) و از انواع روش‌های خوشه‌بندی می‌شود به میانگین k خوشه(k-mean)، روشهای سلسله مراتبی(hierarchical)، روشهای تراکم محور(density based) و ناحیه بندی محور(grid-based) اشاره کرد.</description><category>مصطفی امیری</category><author>مصطفی امیری</author><pubDate>Sat, 26 Jun 2021 12:16:40 +0430</pubDate></item></channel></rss>