zahra jalili 746 اشتراک گذاری ارسال شده در 10 شهریور، ۱۳۹۳ جهت طبقه بندی تصاویر میتوان از طبقه بندی کننده های متفاوتی استفاده نمود. یک دسته از طبقه بندی کننده ها براساس شیوه ی یادگیری کار میکنند. در این روشها ابتدا تعدادی نمونه به عنوان داده های آموزش به طبقه بند داده میشود و جداکننده به وسیله ی این داده ها آموزش میبیند. پس از آن نمونه های تست به طبق هبند داده میشود و طبقه بند در مورد گروهی که این داده ها به آن تعلق دارند، تصمیم گیری میکند. دو طبقه بندی که بیشتر در روشهای نهانکاوی مورد استفاده قرار گرفتهاند Fisher’s Linear Discriminate(FLD) و Support Vector Machine(SVM) هستند. SVM قویتر از FLD می باشد. SVM ابزار یادگیری قوی ای در حل مسائل طبقه بندی، با دو کلاس است. هدف SVM ایجاد مدلی است که با داشتن ویژگیهای نمونه های داده در مجموعه دادههای آموزشی مقدار هدف آنها را حدس بزند. در این روند بردارهای آموزشی نمونه های آموزشی XI از تصویر I به فضای با ابعاد بیشتر نگاشت میشود. سپس یک SVM یک ابرصفحه ی جدا کننده ی خطی را پیدا میکند که بیشترین حاشیه را در این فضای با ابعاد بیشتر داشته باشد. شکل 1 مسأله ی جدا کردن دو کلاس که بصورت خطی جدایی پذیر هستند را نشان میدهد. همانطور که در شکل دیده میشود، برای جدا کردن این دو کلاس، ابرصفحه های بیشماری وجود دارد که بعضی از آنها به کلاسها بسیار نزدیکند. SVM تلاش میکند تا ابرصفحه ای را بیابد که در بیشترین فاصله نسبت به دو کلاس قرار داشته باشد. انتخاب این ابرصفحه باعث میشود که طبقه بندی کننده قابلیت تعمیم بهتری داشته باشد. شکل 1- دو کلاس خطی جدایی پذیر و ابر صفحه های طبقه بندی کننده به این منظور دو ابر صفحه ی موازی که نقاط سرحدی را در دو کلاس تعیین میکنند درنظر گرفته میشوند، سپس ابرصفحه ای که در فاصله ی مساوی از این دو ابرصفحه قرار گرفته میگیرد به عنوان ابر صفحه ی طبقه بندی کننده تعیین میشود. شکل 2 دو کلاس خطی جدایی پذیر و طبقه بندی کنندهی SVM را نشان میدهد. شکل 2- دو کلاس خطی جدایی پذیر و طبقه بندی کننده ی SVM شکل3 یک SVM را نشان میدهد که برای حل یک مسأله با دو کلاس مورد آموزش قرار گرفته است. نمونه هایی که بر روی حاشیه قرار گرفته اند بردار پشتیبان نام دارند. بردارهای پشتیبان (زیر مجموعه ای از نمونه های آموزشی) نزدیکترین نقاط به سطح تصمیم گیری هستند و طبقه بندی آنها از سایر نمونه ها مشکلتر است. شکل 3- SVM آموزش داده شده با نمونه های دو کلاس. دو بردار پشتیبان(نقاط داده) با دایره های سیاهرنگ با اندازه ی بزرگتر از بقیه ی دایره ها برروی خطوط مرزی چپ و راست نشان داده میشوند. 6 لینک به دیدگاه
sarevan 9753 اشتراک گذاری ارسال شده در 10 شهریور، ۱۳۹۳ یک مقاله زبان اصلی دارم ازش... باید چیز جالبی باشه...هوش، دوست میدارم(: 5 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 1 آبان، ۱۳۹۳ سلام کسی کد svm رو برای طبقه بندی مسائل دو کلاسه داره؟ من برای شروع کارم نیاز دارم که از svm برای طبقه بندی تصاویر استفاده کنم. 4 لینک به دیدگاه
Imaaan 17059 اشتراک گذاری ارسال شده در 4 آبان، ۱۳۹۳ سلامکسی کد svm رو برای طبقه بندی مسائل دو کلاسه داره؟ من برای شروع کارم نیاز دارم که از svm برای طبقه بندی تصاویر استفاده کنم. سلام خود متلب SVM داره، از همون نمی تونین استفاده کنین؟ اینجا هم یه تعداد کد هست، شاید رو سایت هم بذارمشون: برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید. ورود یا ثبت نام 4 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 5 آبان، ۱۳۹۳ سلامکسی کد svm رو برای طبقه بندی مسائل دو کلاسه داره؟ من برای شروع کارم نیاز دارم که از svm برای طبقه بندی تصاویر استفاده کنم. سلام، اگر می خواید از کدهای آماده ی متلب استفاده کنید برای پیاده سازی، این لینک حاویه فیلم بسیار مفیدی برای کد نویسی svm دو کلاسه هست: یعنی در اون به صورت مرحله مرحله، حتی تفکیک داده ها با استفاده از تابع Crossvalind و سپس کلاس بندیشون با svm توضیح داده شده. (البته باید از ف ی ل تر شکن استفاده کنید.) 4 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۴ سلام من میخوام با svm داده هامو طبقه بندی کنم، از کد SVM متلب استفاده کردم! اما نمیدونم چطور داده هامو اول انتخاب کنم و به svmtrain بدم! Xtrain=Data(41:end,:); Xgroup=Group(41:end); svmStruct = svmtrain(Xtrain,Xgroup); Xtest=Data(1:40,:); Ygroup=Group(1:40); OutPut = svmclassify(svmStruct,Xtest); ماتریس Data ای من شامل 200 ردیف اطلاعات استخراج شده از تصاویره، 100 تای اولی تصاویر پوشش و 100 تای بعدی تصاویر گنجانه هس که اطلاعاتش توی Group اومده. من اینارو با تابع cat به هم متصلشون کردم! حالا من میخوام بدونم چه روش هایی واسه انتخاب داده از این مجموعه برای svmtrain و svmclassify وجود داره؟ 3 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۴ سلاممن میخوام با svm داده هامو طبقه بندی کنم، از کد SVM متلب استفاده کردم! اما نمیدونم چطور داده هامو اول انتخاب کنم و به svmtrain بدم! Xtrain=Data(41:end,:); Xgroup=Group(41:end); svmStruct = svmtrain(Xtrain,Xgroup); Xtest=Data(1:40,:); Ygroup=Group(1:40); OutPut = svmclassify(svmStruct,Xtest); ماتریس Data ای من شامل 200 ردیف اطلاعات استخراج شده از تصاویره، 100 تای اولی تصاویر پوشش و 100 تای بعدی تصاویر گنجانه هس که اطلاعاتش توی Group اومده. من اینارو با تابع cat به هم متصلشون کردم! حالا من میخوام بدونم چه روش هایی واسه انتخاب داده از این مجموعه برای svmtrain و svmclassify وجود داره؟ خب عزیز الان ترین برنامه رو انجام میدی اول با یه سری داده. بعد قراره برنامه رو باهاش تست کنی تا ببینی چقدر آموزش دیده و یاد گرفته دیگه. پس باید دیتاهات غیر از دیتای آموزش دادت باشن دیگه.اینطوری overfit میشه اصطلاحا. یعنی فقط همونا رو یاد می گیره. 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۴ خب عزیز الان ترین برنامه رو انجام میدی اول با یه سری داده. بعد قراره برنامه رو باهاش تست کنی تا ببینی چقدر آموزش دیده و یاد گرفته دیگه. پس باید دیتاهات غیر از دیتای آموزش دادت باشن دیگه.اینطوری overfit میشه اصطلاحا. یعنی فقط همونا رو یاد می گیره. عزیزم اینارو میدونم، سوال من تو چگونگی انتخاب داده برای ترین و تست هستش. همنوظر که گفتم من یه ماتریس دارم که 100 تای اولش تصاویر بدون داده سری هیتن، و 100 تای بعدی تصاویری هستن که داده ی سری توشون ذخیره شده. اگه کدمو نیگا کرده باشی اومدم گفتم 160 تای آخر بشه واسه آموزش و 40 تای اول بشه واسه تست! احساس میکنم اینجوری درس نیس! چون توی تست من فقط تصاویر پاک رو بهش تغذیه کردم! میخوام ببینم روشی هس که بشه یه جور دیگه انتخابشون کرد مثلا رندونم یا یه چیز که تو موقع تست از هر دوتاشون داشته باشم! 2 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 6 تیر، ۱۳۹۴ عزیزم اینارو میدونم، سوال من تو چگونگی انتخاب داده برای ترین و تست هستش.همنوظر که گفتم من یه ماتریس دارم که 100 تای اولش تصاویر بدون داده سری هیتن، و 100 تای بعدی تصاویری هستن که داده ی سری توشون ذخیره شده. اگه کدمو نیگا کرده باشی اومدم گفتم 160 تای آخر بشه واسه آموزش و 40 تای اول بشه واسه تست! احساس میکنم اینجوری درس نیس! چون توی تست من فقط تصاویر پاک رو بهش تغذیه کردم! میخوام ببینم روشی هس که بشه یه جور دیگه انتخابشون کرد مثلا رندونم یا یه چیز که تو موقع تست از هر دوتاشون داشته باشم! دیتای پاک رو تغذیه کردم رو متوجه نمیشم.چون رو مبحث شما کار نکردم اما اگر میخوای که با هم قاطی نشن و تست و ترین کاملا جدا باشن از هم: اول یه متغیر تعریف می کنیم که به تعداد این عناصر باشه: idx = randperm(dataSize); فکر کن دیتای اصلیت ورودیش x هست و خروجی y. X_new=x(idx( y_new=y(idx); الان به این شکل اومدیم دو تا ماتریس درست کردیم برای ورودی و خروجیت که به ازای اون idxای که داشتیم و ایندکس به هم ریخته و رندمی از ماتریس اولی بود حالا این عناصر ماتریس ورودی و خروجیمون هم به ازای اون اندیس ها جابه جا شد یعنی دقیقا همون ماتریسه فقط جای سطر امون کاملا به هم ریخته و جابه جا شده. حالا یه تعدادش رو میشه برای تست برداری و یه تعداد ترین. مثلا بگی تو این ماتریس جدیده از یک تا مثلا 40تای اول بشه تست بقیه بشه ترین. حالا باز اگه درست متوجه نشدم سوالت رو بگو تا دوباره توضیح بدم خانومی. 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۴ دیتای پاک رو تغذیه کردم رو متوجه نمیشم.چون رو مبحث شما کار نکردم اما اگر میخوای که با هم قاطی نشن و تست و ترین کاملا جدا باشن از هم: اول یه متغیر تعریف می کنیم که به تعداد این عناصر باشه: idx = randperm(dataSize); فکر کن دیتای اصلیت ورودیش x هست و خروجی y. X_new=x(idx( y_new=y(idx); الان به این شکل اومدیم دو تا ماتریس درست کردیم برای ورودی و خروجیت که به ازای اون idxای که داشتیم و ایندکس به هم ریخته و رندمی از ماتریس اولی بود حالا این عناصر ماتریس ورودی و خروجیمون هم به ازای اون اندیس ها جابه جا شد یعنی دقیقا همون ماتریسه فقط جای سطر امون کاملا به هم ریخته و جابه جا شده. حالا یه تعدادش رو میشه برای تست برداری و یه تعداد ترین. مثلا بگی تو این ماتریس جدیده از یک تا مثلا 40تای اول بشه تست بقیه بشه ترین. حالا باز اگه درست متوجه نشدم سوالت رو بگو تا دوباره توضیح بدم خانومی. راستش متوجه نشدم! 2 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۴ راستش متوجه نشدم! خب شما گفتی میخوای رندم داده هات انتخاب بشن منم یه اندیس گذاشتم که اینا رو رندم بگیره دیگه. اونوقت وقتی خواست دیتاهاتو برداری از این ماتریس ورودی و خروجی جدید برداری. 2 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 8 تیر، ۱۳۹۴ زهرا جان متوجه شدی؟ ببخش من خوب منظور رو نمیرسونم یا شاید اشتباه متوجه شدم. خواستی بگو مجدد توضیح میدم یا توضیح بیشتری نیاز بود اضافه کنم. 3 لینک به دیدگاه
zahra jalili 746 مالک اشتراک گذاری ارسال شده در 9 تیر، ۱۳۹۴ زهرا جان متوجه شدی؟ ببخش من خوب منظور رو نمیرسونم یا شاید اشتباه متوجه شدم. خواستی بگو مجدد توضیح میدم یا توضیح بیشتری نیاز بود اضافه کنم. مرسی خواهر گلم از این همه توجهت. راستش من همون اول که توضییح دادم، من از بین 200 تا دادم که 100 تای اولش تصاویر بدون پیام سری بودن و صدتای دومش تصاویر هستی که توشون پیام سری جاسازی کردم. حالا که من میخوام ترین کنم اومدم چهار پنجم داده ها رو به ترتیب از اول یا از آخر انتخاب کردم. بعد تو مرحله تست من فقط یا تصاویر بدون پیام دارم یا تصاویر با پیام. حالا حس می کنم این روش من درست نیست! میخوام بدونم شما چه روشهایی پیشنهاد می کنین؟ حالا خودم یه پیشنهاد که دادم این بود که برای آموزش بصورت رندوم چهارپنجم داده ها رو انتخاب کنم و اون بقیه هم بمونه واسه آموزش! اما نمیدونم چه شکلی این کارو انجام بدم. یه روش دیگه که به ذهنم اومد اینه که اول بیام داده هامو به دسته cover و stego نقسیم کنم، بعدش چهار پنجم هر کدوم رو انتخاب کنم، بعدش این دوتا رو به هم وصل کنم. آخرسرم اون یک پنجم باقی مونده رو به اون یکی یک پنجم متصل کنم! نظر شما چیه؟ بنظرتون درستن؟ 3 لینک به دیدگاه
hhamidy 885 اشتراک گذاری ارسال شده در 9 تیر، ۱۳۹۴ مرسی خواهر گلم از این همه توجهت.راستش من همون اول که توضییح دادم، من از بین 200 تا دادم که 100 تای اولش تصاویر بدون پیام سری بودن و صدتای دومش تصاویر هستی که توشون پیام سری جاسازی کردم. حالا که من میخوام ترین کنم اومدم چهار پنجم داده ها رو به ترتیب از اول یا از آخر انتخاب کردم. بعد تو مرحله تست من فقط یا تصاویر بدون پیام دارم یا تصاویر با پیام. حالا حس می کنم این روش من درست نیست! میخوام بدونم شما چه روشهایی پیشنهاد می کنین؟ حالا خودم یه پیشنهاد که دادم این بود که برای آموزش بصورت رندوم چهارپنجم داده ها رو انتخاب کنم و اون بقیه هم بمونه واسه آموزش! اما نمیدونم چه شکلی این کارو انجام بدم. یه روش دیگه که به ذهنم اومد اینه که اول بیام داده هامو به دسته cover و stego نقسیم کنم، بعدش چهار پنجم هر کدوم رو انتخاب کنم، بعدش این دوتا رو به هم وصل کنم. آخرسرم اون یک پنجم باقی مونده رو به اون یکی یک پنجم متصل کنم! نظر شما چیه؟ بنظرتون درستن؟ خواهش می کنم. اینم یه راهیه اما وقتی میتونی با رنذم گرفتن داده هات کامل اونا رو به هم بریزی و بعد از داخلشون دیتاهاتو جدا کنی دیگه اینکار به نظر من لازم نیست. اون ایندکسی که اول براتون گذاشتم(idx) کار ی که میکنه همونطور که توضیح دادم اینه که قد همین دیتاهات یه ماتریس درست میکنه که اعداد داخلش پراکنده هستن. مثلا اولین عنصرت 1000 هست بعدیش 2 هست و ... . اینا یه سری عدد به هم ریخته هستن که فقط تعدادشون با تعداد داده هات برابره. بعد میایم برای ورودیا میگیم ورودی رو که اندیسش الان مساوی با این عدد داخل idx اونو تو خونه های جدید قرار بده. یعنی میاد عنصر 1000ام رو میذاره تو ماتریس جدیدت عنصر اولی بعدش عنصر دومی رو میذاره و ... . همونطور که میبینی این ورودیات کاملا طبق اون اعداد تصادفی که اندیسات هستن به هم ریخته و به ترتیب بر حسب اون اندیس چیده میشن. حالا اگر بیای 4/5 همینو برداری در واقع به منظورت رسیدی دیگه، هم از با پیام ها و هم بدون پیام ها داری برمیداری. 3 لینک به دیدگاه
ارسال های توصیه شده