ЁЯОп C++ рд╕реЗ Microsoft.Windows.AI рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛уАРрдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рд╕рд╛рдеуАС
Windows 10 рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, Windows рдорд╛рдирдХ рд░реВрдк рд╕реЗ рдПрдХ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреЛ ONNX рдкреНрд░рд╛рд░реВрдк рдХреЗ AI рдореЙрдбрд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред рд╡рд╣ Windows ML (Windows.AI.MachineLearning) рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо C++ (Win32 рдРрдк рдЖрдзрд╛рд░рд┐рдд) рд╕реЗ Microsoft.Windows.AI.MachineLearning рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╕рдордЭрд╛рдПрдВрдЧреЗред
тЬЕ рддреИрдпрд╛рд░реА
тЧ╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡реЗрд╢
- Windows 10 (1809+) рдпрд╛ Windows 11
- Visual Studio 2019 рдпрд╛ рдирдпрд╛ (Community рд╕рдВрд╕реНрдХрд░рдг рднреА рдареАрдХ рд╣реИ)
- C++/WinRT рд╕рдорд░реНрдерди (
Microsoft.Windows.CppWinRT) - Windows SDK 10.0.17763.0 рдпрд╛ рдЙрдЪреНрдЪрддрд░
тЬЕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕рдВрд░рдЪрдирд╛
Visual Studio рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред
рдкреНрд░рдХрд╛рд░: C++ Windows рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ)
рд╕рдмрд╕рд┐рд╕реНрдЯрдо: Windows (
WinMain)NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝реЗрдВ
1Microsoft.Windows.CppWinRT
тЬЕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб
рдиреАрдЪреЗ WinMain рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Win32 API рдФрд░ Windows.AI.MachineLearning рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
тА╗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ ONNX рдореЙрдбрд▓
model.onnxрд╣реИ, рдФрд░ рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ (executable file) рдХреЗ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
main.cpp
| |
тЬЕ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА: рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ Tensor рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛
рдХреБрдЫ рдореЙрдбрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЕрдиреБрдорд╛рди (inference) рд╕реЗ рдкрд╣рд▓реЗ Tensor рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
| |
рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рднреА рдЗрд╕реА рддрд░рд╣ result.Outputs().Lookup(L"output_0") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
тЬЕ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рдмрд╛рддреЗрдВ
- рдпрджрд┐ рдореЙрдбрд▓ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ
FileNotFoundExceptionрдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛ред - рдпрджрд┐ рдЗрдирдкреБрдЯ/рдЖрдЙрдЯрдкреБрдЯ рдирд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ
invalid_argumentрддреНрд░реБрдЯрд┐ рд╣реЛрдЧреАред - рдореЙрдбрд▓ рдХреЗ рд╕рдЯреАрдХ IO рд╡рд┐рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдЬрд╛рдВрдЪ Netron рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
тЬЕ рдирд┐рд╖реНрдХрд░реНрд╖
| рдЖрдЗрдЯрдо | рд╡рд┐рд╡рд░рдг |
|---|---|
| рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ API | Windows.AI.MachineLearning (WinRT) |
| рднрд╛рд╖рд╛ | C++ (Win32 рдЖрдзрд╛рд░рд┐рдд) |
| рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╡рд┐рдзрд┐ | C++/WinRT рд╣реЗрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ |
| рд▓рд╛рдн | ONNX рдореЙрдбрд▓ рдореВрд▓ рд░реВрдк рд╕реЗ (natively) рдЪрд▓рддреЗ рд╣реИрдВ, GPU рд╕рдорд░реНрдерди рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ |
| рдзреНрдпрд╛рди рджреЗрдВ | рдореЙрдбрд▓ рдЗрдирдкреБрдЯ рдирд╛рдо рдФрд░ Tensor рдЖрдХрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ |
тЬЕ рд╡рд┐рдХрд▓реНрдк: рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ WinRT рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ
- Microsoft рдХреЗ
ONNX RuntimeрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ WinRT рдХреЗ рдмрд┐рдирд╛ C++ рд╕реЗ ONNX рдореЙрдбрд▓ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ ред - рдпрд╣ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд░реНрдерд┐рдд рд╣реИ, рдФрд░ Windows/Linux рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд╕рдВрднрд╡ рд╣реИред
ЁЯУМ рдирд┐рд╖реНрдХрд░реНрд╖
Windows ML (Microsoft.Windows.AI) рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА AI рдЕрдиреБрдорд╛рди рдЗрдВрдЬрди (inference engine) рд╣реИ рдЬрд┐рд╕реЗ C++ рд╕реЗ рдордЬрд╝рдмреВрддреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ Windows рдкрд░ рдиреЗрдЯрд┐рд╡ рдЕрдиреБрдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБред
рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ ONNX рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдФрд░ Tensor рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рд┐рдП, рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓реЗрдЦ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдордЭрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ!
