Skip to content

Arctic-Husky/u2netrochas

Repository files navigation

DOCUMENTAÇÃO ELABORADA PARA DEMONSTRAÇÃO DO USO DO SISTEMA DE CATALOGAÇÃO DE ROCHAS ORNAMENTAIS

Escrito por Caio Schmidt França Fonseca

TIC Rochas

Este projeto possui o sistema do u2net para treinamento de modelo, teste, geração de imagens de chapas de mármore e granito sem o fundo, e também um REST API para comunicação com algum frontend

Nosso projeto de frontend está localizado em https://github.com/GALI3600/tic_rochas

Manual de Uso

O que baixar

  • Baixar Python 3.11

Preparando o projeto Python

  • Criar e ativar um virtual environment usando o Python 3.11
  • Dentro de /backend, executar: pip install -r requirements.txt
  • Dentro de /u2net, executar: pip install -r requirements.txt

O projeto contém algumas imagens para o treinamento, elas estão localizadas em u2net/train_data/im_aug, e suas respectivas labels em /u2net/train_data/gt_aug

O projeto contém, também, algumas imagens para o teste dos modelos gerados, e elas estão localizadas em u2net/test_data/test_images

O projeto NÃO contém um arquivo de modelo pré-treinado, mas é possível obter um por aqui: download

As imagens precisam estar em formato JPG.

Treinamento e geração de modelo

  • Em /u2net, executar: python u2net_train.py
  • O log dos treinamentos realizados está localizado em /u2net/app.log
  • Ao iniciar o treinamento, no terminal, aparecerá algo como:
    2024-05-27 14:30:11,418 - root - INFO - [epoch:   1/500, batch:     4/  176, ite: 1] train loss: 4.525530, tar: 0.604871 
    2024-05-27 14:30:14,113 - root - INFO - l0: 0.504742, l1: 0.743461, l2: 0.773620, l3: 1.110518, l4: 1.212246, l5: 0.605723, l6: 0.773419
    
    Isto indica que o treinamento está ocorrendo, e ele continuará até que epoch chege ao seu valor máximo definido em u2net_train.py, que neste caso é 500
  • No fim do treinamento, os modelos gerados estarão localizados em /u2net/saved_models/u2net

Teste do modelo gerado e geração das máscaras

  • O sistema de testes de modelos está localizado em u2net/u2net_teste.py
  • Dentro deste arquivo, em ambas as linhas 57 e 81, alterar as strings para o nome do arquivo do modelo que se deseja testar, gerado em /u2net/saved_models/u2net/, sem considerar a extensão do arquivo. Exemplo: u2net_bce_itr_22000_train_0.107478_tar_0.005487
  • No arquivo u2net_teste.py e u2net_teste_uvicorn.py, altere, na linha 125, o valor da variável testeCaminho para o caminho absoluto para a pasta de saved_models em seu sistema
  • O teste utilizará as imagens salvas em u2net/test_data/test_images para realizar o teste
  • Para iniciar o teste, executar: python u2net_test.py
  • Ao fim da execução, será gerado um arquivo com as máscaras geradas das imagens de teste em /u2net/test_data, com o nome similar ao nome do arquivo do modelo que está sendo testado, adicionando o sufixo _results ao nome do arquivo. Exemplo: u2net_bce_itr_22000_train_0.107478_tar_0.005487_results

Banco de dados

  • Este projeto utiliza os serviços de banco de dados e armazenamento de imagens do Supabase, e é necessário que se crie um projeto no Supabase e que se obtenha duas chaves para que o frontend do projeto funcione.
  • Crie uma tabela SQL de nome CHAPAS com as seguintes colunas:
    supabase CHAPAS table
  • Crie um bucket no serviço de Storage com o nome Imagens
  • Em Project Settings -> API, copie a chave privada da API e o Project URL
    • Crie um arquivo de nome secret_settings.py em /backend
    • Cole o URL e a chave neste formato no arquivo:
    SUPABASE_URL = "PROJECT URL AQUI"
    SUPABASE_KEY = "CHAVE PRIVADA AQUI"

Executando o servidor para requisições

  • O sistema do servidor está localizado em /backend
  • No arquivo main.py, altere, na linha 27 (sys.path.append("E:\\Repositorios\\U-2-Net")), o sys path para o caminho para o projeto em seu sistema
  • Para executar o servidor, faça uvicorn main:app --reload --host 0.0.0.0 --port 8000. É possível alterar o IP e a porta.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages