fix: reduzir sobreposição de boxes em /detectar
Caixa grande "engolindo" uma caixa menor do mesmo produto continuava aparecendo mesmo com sobreposição óbvia — IoU sozinho não resolve isso porque a união fica dominada pela caixa maior, então o IoU continua baixo mesmo com contenção quase total (ex.: caixa 1/5 da área da outra, 100% contida, IoU ≈ 0.2). - iou=0.5 explícito no NMS do YOLO (antes usava o default 0.7, permissivo demais) - novo pós-filtro _suprimir_boxes_contidas(): entre duas boxes da mesma classe onde a intersecção cobre ≥90% da área da MENOR das duas, mantém só a de maior confiança Afeta tanto as boxes da revisão quanto as do TrainingTab, já que ambas vêm do mesmo /detectar. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -21,7 +21,18 @@ requirements.txt
|
||||
|
||||
### `POST /detectar`
|
||||
|
||||
Form-data: `ambiente` (str), `file` (imagem). Confidence threshold: 0.25.
|
||||
Form-data: `ambiente` (str), `file` (imagem). Confidence threshold: 0.25, NMS `iou=0.5`.
|
||||
`ia-gondola-api` também manda um campo `conf` no form (ver `gondola_service.py`), mas esse endpoint
|
||||
não declara/lê esse campo — é ignorado, o threshold usado é sempre o 0.25 hardcoded aqui.
|
||||
|
||||
Depois do NMS do próprio YOLO, passa por `_suprimir_boxes_contidas()`: remove boxes da mesma classe
|
||||
quase totalmente contidas em outra (caixa grande "engolindo" uma caixa menor do mesmo produto —
|
||||
comum em prateleira lotada). IoU sozinho não resolve isso: quando uma caixa é muito maior que a
|
||||
outra, a união fica dominada pela caixa grande e o IoU continua baixo mesmo com contenção quase
|
||||
total (ex.: caixa pequena 1/5 da área da grande, 100% contida → IoU ≈ 0.2, seguiria sobrevivendo
|
||||
mesmo com iou threshold bem mais agressivo que o do NMS padrão). A métrica usada aqui é
|
||||
intersecção / área da MENOR caixa do par, limiar 0.90 — entre duas boxes da mesma classe acima
|
||||
desse limiar, fica só a de maior confiança.
|
||||
|
||||
```json
|
||||
{ "status": "sucesso", "deteccoes": [{ "box": [x1,y1,x2,y2], "conf": 0.87, "class": 0 }] }
|
||||
|
||||
Reference in New Issue
Block a user