Exercício – Criar um aplicativo de classificação de imagens em tempo real

Concluído

Neste exercício, você vai modificar e atualizar o projeto de exemplo ImageClassification_RTApp_MT3620_BareMetal que renomeou. Comece instalando o projeto de exemplo da Microsoft como uma linha de base. Você copiará os pesos e parâmetros do projeto e atualizará seu código-fonte.

  1. Vá para o diretório no qual deseja clonar o repositório.

  2. Clone o Repositório de exemplo de classificação de imagens da Microsoft.

    git clone https://github.com/MicrosoftDocs/mslearn-oxford-image-classification-azure-sphere.git
    
  3. Navegue até a pasta mslearn-oxford-image-classification-azure-sphere e abra o projeto de exemplo CMSISNN-Cifar10 no computador.

  4. Copie a pasta da biblioteca CMSIS e cole-a na pasta do projeto ImageClassification_RTApp_MT3620_BareMetal.

  5. Copie a pasta include e cole-a na pasta do projeto ImageClassification_RTApp_MT3620_BareMetal.

  6. Copie o arquivo main.c na pasta do projeto CMSISNN-cifar10 e substitua-o pelo arquivo main.c na pasta do projeto ImageClassification_RTApp_MT3620_BareMetal.

  7. Volte para o Visual Studio Code e atualize o explorador. Você verá que as pastas CMSIS e include foram adicionadas.

    The illustration shows how to refresh the explorer.

  8. Abra o arquivo main.c. Você verá que os parâmetros, os pesos e a entrada estão definidos em main.c. Você adicionará o caminho do diretório na próxima etapa, para que não ocorra um erro.

    The illustration shows weights, parameters and input files.

  9. Abra CMakeLists.txt para modificá-lo.

    • Adicione as bibliotecas necessárias.

      add_library(cmsisnn STATIC
         ./CMSIS/NN/Source/ActivationFunctions/arm_relu_q7.c
         ./CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_fast.c
         ./CMSIS/NN/Source/ConvolutionFunctions/arm_convolve_HWC_q7_RGB.c
         ./CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15.c
         ./CMSIS/NN/Source/ConvolutionFunctions/arm_nn_mat_mult_kernel_q7_q15_reordered.c
         ./CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7.c
         ./CMSIS/NN/Source/FullyConnectedFunctions/arm_fully_connected_q7_opt.c
         ./CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_no_shift.c
         ./CMSIS/NN/Source/NNSupportFunctions/arm_q7_to_q15_reordered_no_shift.c
         ./CMSIS/NN/Source/PoolingFunctions/arm_pool_q7_HWC.c
         ./CMSIS/NN/Source/SoftmaxFunctions/arm_softmax_q7.c
         )
      SET_TARGET_PROPERTIES(cmsisnn PROPERTIES VERSION 5.5.)
      
      #link CMSIS libraries
      target_link_libraries(${PROJECT_NAME} cmsisnn)
      
    • Inclua os diretórios.

      include_directories(
         				${CMAKE_SOURCE_DIR}/include/ 
         				${CMAKE_SOURCE_DIR}/CMSIS/Include/ 
         				${CMAKE_SOURCE_DIR}/CMSIS/DSP/Include/
         				${CMAKE_SOURCE_DIR}/CMSIS/Core/Include/
         				${CMAKE_SOURCE_DIR}/CMSIS/NN/Include/)
      
  10. Quando atualizar o arquivo CMake, salve as alterações. O arquivo CMakeList.txt se parecerá com:

    The illustration shows CMakeList after adding libraries and directories.