1.7 KiB
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 }
- Lista
treinamento/{ambiente}/novos-treinamentos/no S3 - Triagem (salvo
pular_triagem: true): conf média ≥ 0.30 ou == 0 →base-oficial, < 0.30 →descartados - Baixa
base-oficial, redimensiona imagens > 4096px - Treina: 30 épocas, imgsz=640, batch=16, device=cpu
- Salva
best.ptemmodelos/{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_CARREGADOSpara 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