Page 47 - Revista_60.pub
P. 47

C#







                                                                                      WINDOWS ML (ML.NET C#)

                                                                       Antes de iniciarmos o nosso exemplo, precisamos de
                                                                 nos familiarizar com um outro termo “novo”… o ONNX, isto
                                                                 é, o Open Neural Network Exchange Format.  Simplificando
                                                                 o termo, este é uma forma de representação de modelos de
                                                                 aprendizagem,  em  que  os  programadores  ou  os  simples
                                                                 curiosos acerca deste tema podem utilizar e mover modelos
                                                                 com  maior  facilidade  entre  um  maior  leque  de  ferramentas
                                                                 tais como as frameworks Caffe2 (modular e escalável), chai-
                                                                 ner  (suporta  a  computação  CUDA,  redes  de  feed-forward,
                                                                 redes  recorrentes  e  redes  recursivas),  etc…  também  pode
                                                                 ser  bastante  interessante  neste  âmbito  dar  uma  vista  de
                                                                 olhos no Microsoft Cognitive Toolkit (opensource que treina
                                                                 algoritmos de aprendizagem profunda para aprender como o
                                                                 cérebro humano).
                                                                       Após esta pequena introdução teórica, para criarmos
                                                                 aplicações com o Windows ML precisamos apenas de:
                                                                 1.    Um modelo ONNX treinado ou converta  modelos
                                                                       treinados em outras estruturas ML em ONNX com
                                                                       o WinMLTools .
                                                                       Neste  exemplo,  para  não  tornar  demasiado  longo
                                                                 nem estar a criar modelos do zero, vamos utilizar um modelo
                                                                 já  pronto  disponível  no  github,  nos  samples  de  Windows
                                                                 Machine Learning. Este modelo e exemplo apenas tem como
                             fluxograma.1                        objectivo  permitir  ao  utilizador  a  escolha  de  um  ficheiro  de
                                                                 imagem, e ele encontrará o objecto “predominante” na ima-
                                                                 gem.
                                                                       Podemos descarregar o modelo bem como o exem-
                                                                 plo  completo  em:  https://github.com/Microsoft/Windows-
                                                                 Machine-Learning/tree/master/Samples/
                                                                 SqueezeNetObjectDetection/UWP


                                                                 2.    Adicionar  o  arquivo  do  modelo  ONNX  à  nossa
                                                                       aplicação
                                                                     Apesar de no exemplo escolhido tudo estar feito, vamos
                                                                 ver como importar o modelo, caso o leitor pretenda seguir as
                                                                 etapas do zero.
                                                                     Após ter o projeto aberto (uma aplicação UWP), no Vi-
                                                                 sual Studio, do lado direito, no “Solution Explorer”, clicamos
                                                                 na pasta “Assets” com o botão direito do rato, escolhemos
                                                                 “Adicionar”, depois “Item Existente”, e escolhemos o mode-
                                                                 lo  ONNX,  que  descarregamos.  Isto  irá  importar  o  modelo
                                                                 com  o  nome  “model.onnx”,  que  na  verdade  será  o  nosso
                                                                 modelo.
                             Diagrama.1
                                                                     Antes  de  prosseguir,  temos  de  marcar  o  modelo  para
               Este  mecanismo  permite  também  que  haja  um  maior   ser  feito  o  build  aquando  da  compilação.  Para  tal  clicamos
         desempenho  da  CPU  e  GPU  para  uma  rápida  avaliação  de   com o botão direito do rato no “model.onnx” que se encon-
         resultados.                                             tra na pasta de “Assets”,  depois em “Propriedades”, “Build

               Neste  ponto  convém  ressalvar  que  para  libertarmos   Action” e selecionámos a opção “Content”.
         memória devemos sempre invocar o metódo Dispose() no mo-
         delo e não apenas exclui-los, isto porque cada instância possui
         uma cópia do modelo em memória. Assim se estivemos a tra-  3.   Integrar o modelo no código da nossa aplicação
         balhar com modelos pequenos isto pode não ser significativo      Para integrar o modelo na nossa aplicação temos de
         mas quanto trabalhamos com grandes modelos de dados, este   escrever  algum  código!  Para  tal  no  ficheiro  MainPa-
         é um ponto importante a ter em conta.



                                                           47
   42   43   44   45   46   47   48   49   50   51   52