Discussão:Página principal

De Caninos Loucos
Ir para: navegação, pesquisa

Softwares e Aplicações Portados Para Caninos Labrador V1.x V2.x

Softwares Portados:
  1. Bazel: ferramenta desenvolvida pela Google para desenvolvimento de software. Provê uma interface contínua e consistente para desenvolvimento de aplicações com a possibilidade de utilização de múltiplas linguagens de programação. O porte para o Labrador foi feito utilizando a metodologia de bootstrap. Como suporte para o tensoflow. Versões 0.23.2 e 0.24.1. Foram feitas adequações para a execução dos compiladores java. Adequações principais: redimensionamento dos stacks do compilador java e reparametrização para usar o openjdk.dado que a Oracle encerrou o ciclo java para ARM 32 bits no JDK 8.
  2. OpenCV: conjunto de bibliotecas e ferramentas no campo da visão computacional. Instalação a partir do código fonte. Bibliotecas Linux e suporte ao Python 3. Completa reconfiguração para autilização dos conjuntos de instruções NEON e demais extensões de ponto flutuante e vetorização do ARM V7 (32 bits). Substituição de toda a infraestrutura original OpenCV da distribuição Debian pelo código recompilado, inclusive removendo eventuais extensões OpenCV instaladas no python via pip.
  3. OpenMPI: conjunto de bibliotecas e ferramentas para o desenvolvimento de aplicações com paralelismo massivo MIMD. Foi realizada a instalação a partir do código fonte, substituindo completamente as bibliotecas da distribuição Debian. Completa reconfiguração para a utilização otimizada dos conjuntos de instruções ARM V7 (32 bits). Substituição de toda a infraestrutura original da distribuição pelo código recompilado, inclusive removendo bibliotecas locais e demais links.
  4. PySide: conjunto de bibliotecas que fornecem a integração entre o python e Qt.4 (e, em andamento Qt.5). O PySide fornece uma cadeia completa de ferramentas para a rápida integração com qualquer hierarquia de classes C++ do Qt. Instalação a partir do código fonte. Necessária reinstalação por conta das atualizações impostas ao Qt para a instalação do VTK.
  5. VTK: software open source para manipulação e exibição de dados científicos. Inclui ferramentas de estado da arte para renderização 3D, uma suíte de widgets para interação 3D e ampla capacidade de plotagem de dados 2D. Instalação a partir do código fonte com completa reestruturação para utilização das instruções de ponto flutuante NEON e demais extensões de vetorização do ARM V7 (32 bits). Também demanda a atualização do Qt.
  6. FreeCAD: software open source de modelagem paramétrica 3D (CAD). Instalação a partir do código fonte, com reestruturação para a utilização de aceleração NEON e demais acelerações de ponto flutuante da arquitetura ARM V7 (32 bits), bem como a inclusão de suporte para operações OpenGL por emulação, permitindo o uso eficiente em plataformas sem suporte para DRM (aceleração OpenGL por hardware). No momento não foram feitas otimizações para aceleração OpenGL.
  7. Go: Go é um projeto de código aberto desenvolvido pela equipe do Google e muitos contribuidores da comunidade open source. É um ambiente de programação de código aberto que faz com que seja fácil de construir software simples, confiável e eficiente. Utilizado para a construção o pacote Electrum. Linguagem de desenvolvimento da Google, utilizada para compilação do Electrum. Instalação vanilla (sem grandes configurações ou alterações/patches).
  8. Electrum: Plataforma blockchain para processamento - dentre outros - de carteiras BitCoin. Instalação vanilla a partir do código fonte.
  9. ffmpeg: software de processamento de vídeo e áudio. Instalação a partir do código fonte. Reconfigurado para utilização de todas as acelerações em operações de ponto flutuante e para a adição de todos os codecs possíveis. Sem utilização de aceleração OpenGL.
  10. coremark: software de benchmark escalar e ponto flutuante (CPU benchmark). Instalação vanilla a partir do código fonte.
  11. glmark2: software de benchmark de GPUs (processadores gráficos). Instalação vanilla a partir do código fonte.
  12. burrow: software de carteira de moedas virtuais (particularmente aderente ao Ethereum. É um projeto hospedado pela The Linux Foundation. Instalação vanilla a partir do código fonte.
Instalações
  1. Plataforma python3: completa. Todas as extensões de processamento numérico, banco de dados, interfaces gráficas, integrações com aplicativos e com demais infraestruturas de programação, processamento de vídeo e áudio, spyder3 SDK.
  2. Keras: front end para deep learning. Instalação vanilla.
  3. Theano: back end para deep learning. Instalação vanilla. Contém basicamente as mesmas funcionalidades do tensorflow. O desempenho de processamento em plataformas intel é menor por conta do menor número de otimizações agressivas, entretanto exatamente pela ausência dessas otimizações a portabilidade é muito maior, incluindo as plataformas ARM V7. Nas plataformas ARM V7 é possível habilitar as extensões NEON e demais vetorizações melhorando sensivelmente o desempenho relativo à versão vanilla.
  4. tensorflow: back end para deep learning. Instalação altamente dependente de patches, dependente de bazel e dependente de arquitetura. Atualmente encontra-se portado em 50% e depende do desenvolvimento de patches para a arquitetura SoC S500.
Softwares Desenvolvidos
  1. Identificação e contagem de carros passando por uma barreira: desenvolvido em python3 e utilizando OpenCV. A partir de um stream de vídeo faz a análise quadro a quadro identificando objetos movendo-se no campo. Aplica critério de identificação para determinar se o objeto é ou não um veículo. Se for veículo faz a segmentação e acompanhamento do movimento até a saída do campo visual. Na passagem pela barreira faz a contagem e gera um "snapshot" do veículo. O snapshot é armazenado como arquivo jpeg e posteriormente analizado por outro software que faz a identificação da placa do veículo. Além disso é gerado um arquivo de vídeo avi contendo todo o movimento anotado na via.
  2. Identificação de placas de licenciamento: desenvolvido em python3 e utilizando opencv, Keras e theano. A partir de um "snapshot" contendo veículo faz a identificação da placa e a partir da identificação da placa faz o reconhecimento dos caracteres da licença.
Softwares Adaptados
  1. Identificação de faces (rostos) em frames: desenvolvido em python3 e utilizando OpenCV, Keras e theano. A partir de um snapshot faz a identificação de faces, a segmentação das faces e a identificação da face contra um banco de dados de faces conhecidas. Foi adaptado levando em conta a possibilidade de integração ao software de identificação de veículos e placas. Dado que o snapshot do veículo pega o para brisas, a face do motorista e passageiro podem ser identificadas, segmentadas e comparadas contra uma base de dados de faces conhecidas com evidentes utilizações em segurança pública. Ressalto que este não é software de autoria da equipe do LSITEC, mas foram feitas adaptações e customizações. No momento trabalha-se no desenvolvimento de uma versão própria e mais aderente às necessidades dos projetos do LSITEC.

Manual de Instalação Bazel

  1. Obtendo o Bazel
  2. Pré-requisitos
  3. Configuração do Ambiente
  4. Montando o Bazel
  5. Instalando o Bazel
  6. Testando o Bazel