A CV Central API é uma aplicação baseada em FastAPI para gerenciar inferências em diversos contextos e tarefas baseadas em visão computacional. A API permite enviar imagens para processamento em filas específicas e consultar resultados armazenados em um banco de dados MongoDB.
Inferência: Envio de imagens para processamento em contextos predefinidos.
Consulta de Resultados: Recuperação do status e resultados de inferências.
Validação por API Key: Apenas acessível com uma chave de autenticação válida.
Cache de Contextos: Carrega os contextos do MongoDB na inicialização para melhorar a performance.
Python 3.10
RabbitMQ 3.13
MongoDB 8.0
Dependências Python (instaladas via pip).
docker run -d --name rabbitmq --network host \ <br>
-p 5672:5672 \<br>
-p 15672:15672 \<br>
-e RABBITMQ_DEFAULT_USER=guest \<br>
-e RABBITMQ_DEFAULT_PASS=guest \<br>
rabbitmq:3.13-management \</code>
Baixar a imagem do MongoDB
docker pull mongo:8.0
Executar o contêiner do MongoDB
docker run -d --name banco_baites --network host \
-p 27017:27017 -v mongo_data:/data/db mongo:8.0
Conectar ao MongoDB
docker exec -it banco_baites mongosh
use baites-api-db
db.createUser({
user: "admin",
pwd: "admin",
roles: [{ role: "readWrite", db: "baites-api-db" }]
})
db.contexts_tasks.insertMany([
{
"context": "detect_palmaceas",
"description": "Modelo para contagem/detecção de palmáceas (monocultura) de imagens de Drone.",
"queue": "detect_palmaceas_inference_queue",
"task_type": "object_detection"
},
{
"context": "seg_biomas",
"description": "Modelo para segmentação de imagens de Drone (quatro classes).",
"queue": "seg_biomas_inference_queue",
"task_type": "semantic_segmentation"
},
{
"context": "seg_drone",
"description": "Modelo para segmentação de imagens de Drone (24 classes).",
"queue": "seg_drone_inference_queue",
"task_type": "semantic_segmentation"
}
]);
python -m uvicorn api:api
Verificar contêineres em execução
docker ps
Criação do docker da API
docker build -t cv-central-api .
Executar o contêiner Docker da API CV Central
docker run --name cv-central-api --network host \
-p 8000:8000 \
-e LOGGER_LEVEL="INFO" \
-e RABBITMQ_URL="localhost"
-e RABBITMQ_PORT=5672 \
-e RABBITMQ_LOGIN="guest" \
-e RABBITMQ_PASSWORD="guest" \
-e MONGODB_URL="mongodb://localhost:27017" \
-e MONGODB_USERNAME="admin" \
-e MONGODB_PASSWORD="admin" \
-e MONGODB_DB_NAME="baites-api-db" \
-e API_KEY="API_KEY_HERE" \
-e CORS_ORIGIN="*" \
cv-central-api:latest \
Este projeto contém os scripts necessários para treinar e testar modelos para segmentação de vegetação, estradas e obstruções de estradas.
NITRDrone Dataset (NITRDD)
https://drive.google.com/file/d/1j0HvC_EPrYVWNvWj-R3c0V--41agkaxV/view?usp=drive_link
docker build -t seg_biomas .
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list
apt update
apt -y install nvidia-container-toolkit
systemctl restart docker
docker run --gpus all -v /path/local/Models:/workspace/Models -v /path/local/Datasets:/workspace/Datasets -it seg_biomas
Você precisa de um arquivo de configuração .env com login e senha para executar o WANDB com autenticação via API. Exemplo:
Exemplo de arquivo .env
WANDB_API_KEY=<your_wandb_api_key>
docker build -t seg_biomas .
Worker de Segmentação de Biomas 4 classes.
Este projeto inclui um serviço de inferência integrado com PyTorch, WANDB, RabbitMQ e MongoDB.
pip install -r requirements.txt
python3 worker.py
docker ps
docker build -t seg-biomas-worker .
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list
apt update
apt -y install nvidia-container-toolkit
systemctl restart docker
docker run --gpus all --name seg-biomas-worker --network host \
-e RABBITMQ_URL="localhost" \
-e RABBITMQ_PORT="5672" \
-e RABBITMQ_LOGIN="guest" \
-e RABBITMQ_PASSWORD="guest" \
-e MONGODB_URL="mongodb://localhost:27017" \
-e MONGODB_USERNAME="admin" \
-e MONGODB_PASSWORD="admin" \
-e MONGODB_DB_NAME="baites-api-db" \
-e WANDB_API_KEY="API_KEY_HERE" \
seg-biomas-worker:latestr .
Este projeto contém os scripts necessários para treinar e testar modelos para detecção e contagem de palmeiras.
Palm Counting
https://drive.google.com/file/d/1cqYrKdZMrQHm_9YSLGz5AARI1g045bX3/view?usp=drive_link
docker build -t detect_palmaceas .
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg<br>
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list<br>
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list<br>
apt update<br>
apt -y install nvidia-container-toolkit<br>
systemctl restart docker
docker run --gpus all -v /path/local/Datasets:/workspace/Datasets -it detect_palmaceas
Você precisa de um arquivo de configuração .env com login e senha para executar o WANDB com autenticação via API.
Exemplo de arquivo .env:
WANDB_API_KEY=<your_wandb_api_key>
Worker de Detecção de Palmáceas.
Este projeto inclui um serviço de inferência integrado com PyTorch, WANDB, RabbitMQ e MongoDB.
pip install -r requirements.txt <br>
python3 worker.py
docker ps
docker build -t detect-palmaceas-worker .
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list<br>
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list<br>
apt update<br>
apt -y install nvidia-container-toolkit<br>
systemctl restart docker
docker run --gpus all --name detect-palmaceas-worker --network host \
-e RABBITMQ_URL="localhost" \
-e RABBITMQ_PORT="5672" \
-e RABBITMQ_LOGIN="guest" \
-e RABBITMQ_PASSWORD="guest" \
-e MONGODB_URL="mongodb://localhost:27017" \
-e MONGODB_USERNAME="admin" \
-e MONGODB_PASSWORD="admin" \
-e MONGODB_DB_NAME="baites-api-db" \
-e WANDB_API_KEY="API_KEY_HERE" \
detect-palmaceas-worker:latest \
Este projeto contém os scripts necessários para treinar e testar modelos para segmentação de 24 classes.
https://drive.google.com/file/d/1DPOApjk1iS2Iv_3LMDIOt_jyuDjwnlmp/view?usp=drive_link
docker build -t seg_drone .
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list <br>
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list <br>
apt update <br>
apt -y install nvidia-container-toolkit <br>
systemctl restart docker
docker run --gpus all -v /path/local/Models:/workspace/Models -v /path/local/Datasets:/workspace/Datasets -it seg_drone
Você precisa de um arquivo de configuração .env com login e senha para executar o WANDB com autenticação via API.
Exemplo de arquivo .env
WANDB_API_KEY=<your_wandb_api_key>
Worker de Segmentação de Imagens Aéreas de Drone 24 classes.
Este projeto inclui um serviço de inferência integrado com PyTorch, WANDB, RabbitMQ e MongoDB.
pip install -r requirements.txt <br>
python3 worker.py
docker ps
docker build -t seg-drone-worker .
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-toolkit.gpg <br>
curl -fsSL https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | tee /etc/apt/sources.list.d/nvidia-toolkit.list <br>
sed -i -e "s/^deb/deb \[signed-by=\/usr\/share\/keyrings\/nvidia-toolkit.gpg\]/g" /etc/apt/sources.list.d/nvidia-toolkit.list<br>
apt update<br>
apt -y install nvidia-container-toolkit<br>
systemctl restart docker <br>
docker run --gpus all --name seg-drone-worker --network host \
-e RABBITMQ_URL="localhost" \
-e RABBITMQ_PORT="5672" \
-e RABBITMQ_LOGIN="guest" \
-e RABBITMQ_PASSWORD="guest" \
-e MONGODB_URL="mongodb://localhost:27017" \
-e MONGODB_USERNAME="admin" \
-e MONGODB_PASSWORD="admin" \
-e MONGODB_DB_NAME="baites-api-db" \
-e WANDB_API_KEY="API_KEY_HERE" \
seg-drone-worker:latest