تشخیص اعداد دستنویس با استفاده از مدل ONNX در MetaTrader 5
پروژهای برای استفاده از یک مدل ONNX جهت تشخیص اعداد دستنویس – اکسپرت برای MetaTrader5
یک اکسپرت که قادر به تشخیص اعداد دستنویس است
پایگاه داده MNIST شامل 60,000 تصویر برای آموزش و 10,000 تصویر برای تست است. این تصاویر با “بازترکیب” مجموعه اصلی NIST که شامل نمونههای سیاه و سفید 20×20 پیکسل بود، ایجاد شدهاند. این نمونهها از اداره آمار ایالات متحده به دست آمده و با نمونههایی که از دانشآموزان دبیرستانهای آمریکایی جمعآوری شده بودند، تکمیل شدند. این نمونهها به اندازه 28×28 پیکسل نرمالسازی و با استفاده از تکنیک ضد الیاسینگ (anti-aliasing) پردازش شدند که منجر به ایجاد سطوح خاکستری در تصویر شد.
مدل آموزشدیده تشخیص اعداد دستنویس با نام mnist.onnx از گیتهاب و از ModelZoo(opset8) دانلود شده است. کسانی که علاقه دارند، میتوانند سایر مدلها را نیز امتحان کنند، به جز مدلهایی که از opset 1 استفاده میکنند؛ زیرا این نسخه دیگر توسط نسخههای جدید ONNX پشتیبانی نمیشود. جالب است که بردار خروجی این مدل با تابع فعالسازی Softmax پردازش نشده است، چیزی که در مدلهای طبقهبندی معمول است. البته این موضوع مشکل بزرگی نیست، چرا که میتوانیم به راحتی آن را خودمان پیادهسازی کنیم.
int PredictNumber(void) { static matrixf image(28,28); static vectorf result(10); PrepareMatrix(image); if(!OnnxRun(ExtModel,ONNX_DEFAULT,image,result)) { Print("OnnxRun error ",GetLastError()); return(-1); } result.Activation(result,AF_SOFTMAX); int predict=int(result.ArgMax()); if(result[predict]<0.8) Print(result); Print("value ",predict," predicted with probability ",result[predict]); return(predict); }
دانلود اکسپرت تشخیص اعداد دستنویس با استفاده از مدل ONNX در MetaTrader 5
برای تست این اکسپرت، میتوانید در یک شبکه ویژه با استفاده از ماوس و نگه داشتن دکمه چپ ماوس اعداد دستنویس خود را رسم کنید. برای تشخیص عدد رسم شده، کافی است دکمه CLASSIFY را فشار دهید.
اگر احتمال به دست آمده برای عدد تشخیص داده شده کمتر از 0.8 باشد، بردار احتمالات برای هر کلاس به لاگ چاپ میشود. به عنوان مثال، میتوانید یک ورودی خالی (بدون رسم هیچ عددی) را تست کنید تا نتایج را مشاهده کنید.
[0.095331445,0.10048489,0.10673151,0.10274081,0.087865397,0.11471312,0.094342403,0.094900772,0.10847695,0.09441267] value 5 predicted with probability 0.11471312493085861
نکته جالب این است که دقت تشخیص برای عدد 9 (۹) به طور محسوسی پایینتر است. اعدادی که به سمت چپ کج شدهاند، با دقت بیشتری تشخیص داده میشوند.
توضیحات اضافی:
این اکسپرت در MetaTrader5 اجرا میشود و با استفاده از مدلهای ONNX برای تشخیص اعداد دستنویس طراحی شده است. مدل ONNX به شما اجازه میدهد از مدلهای از پیش آموزشدیده استفاده کرده و آنها را در محیطهای مختلف از جمله MetaTrader5 پیادهسازی کنید. این اکسپرت به کاربران اجازه میدهد تا اعداد را به صورت دستنویس وارد کرده و آنها را تشخیص دهند.
مهمترین نکته در پیادهسازی این اکسپرت، استفاده از مدلهای ONNX است که با قابلیتهای نرمافزار MetaTrader5 ترکیب شده است تا کاربران بتوانند به راحتی از تکنیکهای پیشرفته یادگیری ماشین در محیط معاملاتی استفاده کنند.
نظرات کاربران