Skip to content

reidn3r/drawjs

Repository files navigation

drawJS✏️

✒️Projeto desenvolvido em Javascript (Node.js) e Python (Pandas, Tensorflow, Numpy e Opencv), composto por uma rede-neural convolucional treinada segundo aprendizado supervisionado, embarcada em um servidor, que é capaz de receber entradas do usuário, servir ao modelo matemático e devolver a resposta ao usuário.


💻 Tecnologias

Principais dependências utilizadas:

Rotas

  • requisição GET em '/':
    • Renderiza a página inicial
  • requisição GET em '/login':
    • Renderiza a página de login
  • requisição POST em '/login':
    • Processa os dados de login. Se não houver erros, é redirecionado para /draw
  • requisição GET em '/registro':
    • Renderiza a página de registro
  • requisição POST em '/registro':
    • Processa os dados de registro. Se não houver erros, é redirecionado para /login
  • requisição GET em '/draw':
    • Se logado, renderiza a página de esboços.
    • Funcionamento:
      • Usuário fornece dados de entrada
      • Um evento é emitido pelo cliente, contendo dados da imagem desenhada.
      • Servidor recebe o evento e os dados da imagem
      • A imagem é pré-processada:
        • É realizado a inversão de cores;
        • Dilatação: Convolução útil para aumentar área dos traços desenhados;
        • Conversão dos canais da imagem (3 canais são transformados em apenas 1);
        • Centralização dos valores de cada píxel entre -1 e 1;
        • Transformação do dado, array se transforma em tensor de dimensões (1, size, size, 1), onde size é o tamanho da imagem, assim como a rede neural foi treinada.
      • O tensor é processado pela rede-neural, e assim duas saídas são geradas:
        • Descrição: Descrição do desenho;
        • Probabilidade: Probabilidade de acerto da classificação da rede-neural.

draw-js

Requisitos:

Necessário ter Git e Node instalado

⌨️ Rodando o servidor:

# Clone este repositório
$ git clone https://github.com/reidn3r/drawjs

# Acesse a pasta do projeto no terminal/cmd
$ cd drawjs

# Instale as dependências
$ npm install

#Crie um arquivo com o nome '.env' na raíz do diretório do projeto. Nele, deve ser definido algumas variáveis de ambiente
   # variável PORT: deve ser associado um número inteiro, é a porta onde está rodando o servidor
   # variável IMGSIZE: Inteiro de valor 64
   # variável MODEL_PATH: Variável que aponta pro modelo (arquivo .json) tensorflow 
   # variável CLASSES: Nome do arquivo .json (dentro de LabelEncoder) contendo as classes em pt-br 


    #Variáveis de configuração do banco de dados RELACIONAL
    # variável DB_NAME: Nome do banco de dados
    # variável DB_USER: Usuário do banco de dados
    # variável DB_PW: Senha de acesso ao banco de dados
    # variável DB_DIALECT: mysql ou pg ou mssql
    # variável DB_PORT: Porta do banco de dados
    # variável DB_HOST: localhost 

   # variável SECRET: hash útil para criação do token de acesso no login 

# Execute a aplicação em modo de desenvolvimento
$ npm run dev