Files

1.7 KiB

IA Gôndola Engine

Serviço isolado de detecção YOLO e treinamento. Consumido exclusivamente pela ia-gondola-api via IA_MOTOR_URL.

Arquitetura

ia-gondola-api  →  POST /detectar  →  YOLO  →  [{box, conf, class}]
                →  POST /treinar   →  triagem + treino → modelo atualizado no S3

Estrutura

main.py          — todo o código (sem sub-módulos)
Dockerfile
requirements.txt

Endpoints

POST /detectar

Form-data: ambiente (str), file (imagem). Confidence threshold: 0.25.

{ "status": "sucesso", "deteccoes": [{ "box": [x1,y1,x2,y2], "conf": 0.87, "class": 0 }] }

POST /treinar

Body JSON: { "ambiente": "gondola", "pular_triagem": false }

  1. Lista treinamento/{ambiente}/novos-treinamentos/ no S3
  2. Triagem (salvo pular_triagem: true): conf média ≥ 0.30 ou == 0 → base-oficial, < 0.30 → descartados
  3. Baixa base-oficial, redimensiona imagens > 4096px
  4. Treina: 30 épocas, imgsz=640, batch=16, device=cpu
  5. Salva best.pt em modelos/{ambiente}/atual/cerebro.pt + histórico versionado

Organização S3

modelos/{ambiente}/atual/cerebro.pt
modelos/{ambiente}/versionamento/cerebro_YYYYMMDD_HHMM.pt
treinamento/{ambiente}/novos-treinamentos/
treinamento/{ambiente}/base-oficial/
treinamento/{ambiente}/descartados/

Convenções

  • MODELOS_CARREGADOS = dict em memória {ambiente: YOLO} — cache local em /tmp/cerebro_{ambiente}.pt
  • Se S3 tiver versão mais nova (LastModified), descarta cache e baixa novamente
  • Após treino, remove o ambiente de MODELOS_CARREGADOS para forçar reload
  • Todo o código em main.py — não criar sub-módulos

Como rodar

pip install -r requirements.txt
uvicorn main:app --reload --port 8001