Pipeline de Modelos & Datasets

v1.0 · Plano Dataset
Pipeline de Inferência em Produção
Imagem
Full Frame
câmera Tegra-VIA
M0.1
Detecção
+ Pose
BBox · DS-A
pose → roteamento
M0.2
Seg. Geral
Carcaça
máscara · DS-B
contorno completo
M0.3
Sub-Áreas
Anatômicas
ROIs · DS-C
lombo · alcatra · coxão · garupa
paralelo ↓
ETAPA 1 · Gate sequencial
ETAPA 2 · Modelos especializados em paralelo
Conformação 35% ITCBr
garupa
M0.3
M2
Conformação
C · Sc · Re · Sr · Co
Gordura 45% ITCBr
carcaça
M0.2
M1.1
Seg. Gordura
máscara
M1.2
Classe
classe 1–5
máscara M1.1 →
M3
Cor Gordura
branco · creme · amarelo
M0.3 fornece contexto de localização — não é input de segmentação
Hematomas 20% ITCBr
carcaça
M0.2
M4.1
Seg. Lesões
máscaras
M4.2
Severidade
score · severidade
M0.3 fornece contexto de localização — não é input de segmentação
ITCBr Score
Conformação 35%
+
Gordura 45%
+
Hematomas 20%
=
Índice Final
Detalhe por Modelo — Input / Output / Decisões
M0.1
Detecção + Pose
Input
Frame bruto da câmera Tegra-VIA
Treinado em DS-A
Output
Bbox da meia-carcaça
Pose: frontal / traseira / lateral
Pass / Fail (imagem válida?)
Roteamento
frontal → M1 + M3 + M4
traseira → M2 (+ M4)
lateral → descarta, sem inferência
Fail → exceção, sem inferência
M0.2
Seg. Geral
Input
Crop de M0.1 (bbox validado)
Treinado em DS-B
Output
Máscara de instância — contorno completo da meia-carcaça
Base para M4 (hematomas sobre carcaça inteira)
Decisões de Design
Anotação assistida por SAM2 no CVAT
DS-C, DS-D e DS-F são subsets deste dataset
Separa carcaça do fundo antes de qualquer análise downstream
M0.3
Seg. ROIs
Input
Máscara de M0.2 (carcaça isolada)
Treinado em DS-C (subset de DS-B)
Output
Regiões: lombo · alcatra · coxão lateral · garupa
Crops normalizados por ROI → M1, M2, M3
Decisões de Design
Roda uma única vez — M1 usa as ROIs para calcular % de gordura por região sem re-inferência
M2 recebe apenas a ROI da garupa
M3 reutiliza máscara de gordura de M1, sem nova ROI
M1.1
Seg. Gordura
Input
Carcaça segmentada de M0.2
Contexto de localização de M0.3 (tracejado — em qual região está a gordura)
Pose=frontal apenas
Output
Máscara de gordura subcutânea sobre a carcaça
% cobertura por região (com base nas sub-áreas de M0.3)
Máscara passa diretamente para M3 (cor da gordura)
Decisões de Design
M0.3 não é input de segmentação — é metadado de localização
Um único forward pass segmenta toda a carcaça; % por região calculado em pós-processamento
Máscara de gordura reutilizada em M3 sem re-inferência
M1.2
Classe Gordura
Input
% de cobertura de gordura por região (de M1.1)
Output
Classe ordinal 1–5 via curva calibrada (output principal)
Classificação direta como double-check
Decisões de Design
Curva calibrada é o output primário em produção
Classificação direta serve de validação cruzada
Nota final pode ponderar % por região (via localização de M0.3)
M2
Conformação
Input
ROI da garupa entregue por M0.3
Pose=traseira apenas — DS-E é subset de DS-C para a região da garupa
Pode usar silhueta binária extraída de M0.2
Output
Classe C / Sc / Re / Sr / Co
Confidence score
[v2] convexity_index contínuo
[v2] keypoints garupa
Decisões de Design
v1: classificação simples sobre crop (rápido de anotar)
Silhueta binária pode substituir RGB (info é curvatura)
Keypoints no schema desde o início, opcionais em v1
Roda apenas quando M0.1 detecta pose=traseira
M3
Cor Gordura
Input
Máscara de gordura de M1 (ROI já definida)
Patch de gordura limpa extraído automaticamente
Output
3 grupos: Branco-creme / Creme / Amarelo
Valor CIELab b* interno (para analytics)
Flag de invalidade (reflexo, sangue)
Decisões de Design
Reduzir de 10 para 3 classes em v1 (calibração imprecisa)
Reutilizar máscara de M1 sem nova ROI
Documentar câmera_id + lux para cada imagem
Tratamento experimental nesta fase
M4.1
Seg. Hematomas
Input
Carcaça segmentada de M0.2
Contexto de localização de M0.3 (tracejado — em qual região está o hematoma)
Frontal ou traseira (ambas as poses válidas)
Output
Máscara por lesão: localização + área relativa %
Setor da carcaça (via M0.3): dianteiro / costelas / lombo / traseiro
Lado: esquerdo / direito
Decisões de Design
M0.3 não é input de segmentação — é metadado de localização para ponderar nota final
Hard negatives obrigatórios: gancho, reflexo, marcas de esfola
40% positivas, 60% negativas/artefatos no DS-F
M4.2
Classe Hematomas
Input
Máscaras de lesão de M4.1 + localização por região
Output
Severidade por lesão (1 leve / 2 moderado / 3 severo)
Área relativa % (lesão / carcaça total)
Agregados: qtd_lesoes, area_total, severidade_max
Decisões de Design
Área em % relativa em v1 (sem cm² absoluto)
cm² absoluto planejado para v2 com câmeras 3D calibradas
Pesos da nota final podem variar por região (via M0.3)
Datasets & Sub-datasets
DS-A
Detecção de Carcaça
Bounding box da meia-carcaça + label de pose. Bounding box da meia-carcaça + label de pose (frontal / traseira / lateral). Lateral é capturado mas descartado no roteamento. Base de tudo — sem ele os demais não funcionam.
bbox pose: frontal / traseira / lateral bbox + classe de pose
Volume 300–600 imgs
Alimenta M0.1
Fase Fase 1
Anotação ~2 min/img
DS-B
Segmentação da Carcaça
Máscara de instância do contorno completo da meia-carcaça. Construído sobre DS-A com auxílio de SAM2 no CVAT — o anotador confirma/corrige a máscara gerada automaticamente.
máscara de instância anotação assistida (SAM2)
Volume 800–2000 imgs
Alimenta M0.2 · base de DS-C, DS-D, DS-F
Fase Fase 1–2
Anotação ~5 min/img
DS-C
ROIs Anatômicas
Anotação das sub-regiões anatômicas dentro da máscara de DS-B: lombo, alcatra, coxão lateral, garupa. Subset de DS-B (~50%). Keypoints opcionais para v2. Alimenta M0.3 e roteamento downstream.
bbox por região anatômica keypoints (opcional v2) subset de DS-B
Volume 400–1000 imgs
Alimenta M1, M2, M3
Fase Fase 2
Anotação ~8 min/img
DS-D
Segmentação de Gordura + Classe
Anotação de gordura subcutânea sobre a carcaça inteira (base DS-B). Label ordinal 1–5 em 100% das imagens. Máscara de segmentação em ~35% para calibrar a curva % → classe. Em produção, M0.3 entrega as ROIs e M1 calcula % por região — um único forward pass.
label ordinal 1–5 máscara subcutânea (35%) subset de DS-B
Volume 2000–4000 imgs
Alimenta M1 + M3 (ROI)
Fase Fase 2–3
Anotação ~4 min/img
DS-E
Conformação da Garupa
Subset de DS-C restrito à região da garupa com pose=traseira. Classificação C/Sc/Re/Sr/Co sobre crop normalizado extraído pelo M0.3. Keypoints anatômicos marcados em ~30% para v2.
label C/Sc/Re/Sr/Co subset de DS-C · região garupa · pose=traseira keypoints (opcional v2)
Volume 1500–2500 imgs
Alimenta M2
Fase Fase 2–3
Anotação ~3 min/img
DS-F
Hematomas
Detecção de instância de lesões hemorrágicas. ~40% imagens positivas, ~60% negativas (inclui hard negatives: sombras de gancho, reflexos, manchas esfola). Área em % relativa.
máscara por lesão severidade 1/2/3 hard negatives obrigatórios subset de DS-B
Volume 1500–2500 imgs
Alimenta M4
Fase Fase 2–3
Anotação ~10 min/img
Hierarquia dos Datasets
DS-A bbox + pose 300–600 imgs DS-B BASE máscara instância 800–2000 imgs DS-C ROIs anatômicas subset DS-B · ~50% 400–1000 imgs DS-D gordura + classe 1–5 subset DS-B 2000–4000 imgs DS-F hematomas subset DS-B 1500–2500 imgs DS-E conformação subset DS-C · traseira 1500–2500 imgs → M0.1 → M0.2 → M0.3 (DS-C) → M1, M3 (DS-D) → M4 (DS-F) → M2 (DS-E)
Fases de Construção do Dataset
FASE 01
Seed Manual
Anotar DS-A completo (bbox + pose): 300–400 imgs
Anotar DS-B com SAM2 (segmentação carcaça): 300–400 imgs
Labels de classe para M1, M2, M3 nas mesmas imagens
Sessão de calibração dos anotadores com chips de referência
Medir IAA (kappa) antes de escalar
Volume total 300–400 imgs
FASE 02
Active Learning v0
Treinar M0.1-v0 (detecção + pose) com DS-A seed
Usar M0 para pré-anotar novo lote: revisão humana confirma
Priorizar imagens com confidence < 0.70 para anotação manual
Treinar M0.2 com DS-B seed (segmentação geral)
Escalar DS-D (gordura) e DS-F (hematomas) como subsets de DS-B
Anotar DS-C (ROIs anatômicas) como subset de DS-B
Volume acumulado 800–1200 imgs
FASE 03
Especialização por Modelo
Escalar classes sub-representadas (acabamento 1, 5 / conformação Co, Sr)
Anotar máscaras de gordura em 35% de DS-D → calibrar curva %
Coletar DS-E (conformação) focado em pose=traseira
Expandir DS-F com hard negatives sistematicamente
Validar curva gordura % → classe; testar em produção
Volume acumulado 4000–8000 imgs
Decisões de Design — Resumo
Questão
Decisão v1
Razão
Evolução v2
M0 · Pose Pose como subclasse ou metadado?
Subclasse do detector — label por imagem (lateral_E, lateral_D, frontal, traseira)
Câmera fixa mas operador pode girar carcaça. Pose determina quais modelos rodam.
Se câmera for sempre controlada, virar metadado fixo da câmera
M1 · Gordura Classificação ordinal ou % de cobertura?
Ambos: % de cobertura como métrica primária, classe 1–5 como double check
% é auditável e ajustável. Classe é obrigatória comercialmente e para calibração.
Em produção: usar só curva calibrada % → classe depois de validada
M2 · Conform. Keypoints ou classificação simples?
v1: classificação simples sobre crop da traseira. Keypoints no schema mas não obrigatórios.
Anotar keypoints anatômicos exige treinamento intenso dos anotadores. Classificação valida o conceito.
Keypoints em v2 para calcular convexity_index contínuo
M3 · Cor 10 classes ou agrupadas?
3 grupos: Branco-creme (0–2) / Creme (3–5) / Amarelo (6–9). ROI reutilizada de M1.
Calibração de câmera imperfeita em v1. Menos classes = mais robustez com dados ruidosos.
Expandir para escala completa após cartão de calibração de cor implantado
M4 · Hematomas Área em cm² ou relativa?
Área relativa: lesão_px / carcaça_px. Severidade por classe (1/2/3).
cm² absoluto requer câmera 3D calibrada. Área relativa é invariante à distância.
cm² absoluto quando câmeras 3D estiverem calibradas e integradas
Legenda
DS-A · Detecção
DS-B · Base (subsets: C, D, F)
DS-C · ROIs Anatômicas
DS-D · Gordura + Classe
DS-E · Conformação
DS-F · Hematomas
Tegra Science · ITCBr v1.0 · 2026