거래 로봇을 무료로 다운로드 하는 법을 시청해보세요
당사를 Telegram에서 찾아주십시오!
당사 팬 페이지에 가입하십시오
스크립트가 흥미로우신가요?
그렇다면 링크 to it -
하셔서 다른 이들이 평가할 수 있도록 해보세요
스크립트가 마음에 드시나요? MetaTrader 5 터미널에서 시도해보십시오
Experts

ONNX 모델을 사용하여 손으로 쓴 숫자를 인식하는 법 예시 - MetaTrader 5용 expert

조회수:
216
평가:
(9)
게시됨:
2023.11.23 15:42
mnist.onnx (25.83 KB)
이 코드를 기반으로 한 로봇이나 지표가 필요하신가요? 프리랜스로 주문하세요 프리랜스로 이동

손으로 쓴 숫자를 인식할 수 있는 Expert Advisor

MNIST 데이터 베이스는 학습용 이미지 60,000개와 테스트용 이미지 10,000개로 구성되어 있습니다. 이 이미지는 미국 인구조사국에서 얻은 20x20픽셀의 흑백 샘플을 다시 미국 고등학생들로부터 채취한 테스트 샘플로 보완한 원본 NIST 세트를 '재조합'하여 만들어졌습니다. 샘플을 28x28 픽셀 크기로 정규화하고 안티에일리어싱을 적용하여 그레이스케일 레벨을 도입했습니다.

학습된 손글씨 숫자 인식 모델 mnist.onnx는 Github의 Model Zoo (opset 8)에서 다운로드했습니다. 관심이 있으신 분은 최신 ONNX 런타임에서 더 이상 지원되지 않는 옵션 1이 설정된 모델을 제외한 다른 모델을 다운로드하여 사용해 보실 수 있습니다. 놀랍게도 출력 벡터는 분류 모델에서 흔히 볼 수 있는 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);
  }


 마우스 왼쪽 버튼을 누른 상태에서 마우스를 사용하여 특수 그리드에 숫자를 그립니다. 그려진 숫자를 인식하려면 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의 인식 정확도가 눈에 띄게 낮습니다. 왼쪽으로 기울어진 숫자가 더 정확하게 인식됩니다.


MetaQuotes Ltd에서 러시아어로 번역함.
원본 코드: https://www.mql5.com/ru/code/47225

BinanceQuotesDownloader BinanceQuotesDownloader

Display Binance quotes in real-time mode

DCC / Piercing DCC / Piercing

DCC / Piercing

Candlestick Wick Imbalance Candlestick Wick Imbalance

Candlestick Wick Imbalance

Sample program for async/sync all close. Sample program for async/sync all close.

This is a simple program to compare asynchronous and synchronous all close. It is a sample program, so feel free to modify it for your own testing purposes, such as adding conditions.