O Apex (marca interna CARCASS) é um instrumento de desktop que torna o pareamento imagem ↔ animal ↔ grau verificável por construção: schema SQLite com vínculo no ato da coleta, segmentação de gordura (ColorNaming + CNN, IoU ), convexidade integral-invariante do perfil e graus experimentais com status explícito na UI. A motivação veio de um corpus preliminar () em que mais de trinta abordagens, em quatorze frentes, falharam em predizer o grau de forma interpretável — não por insuficiência dos métodos, mas por falha de integridade do pareamento.
Neste post documentamos o protocolo de aquisição, o schema de dados e as medidas objetivas que o Apex deriva sobre o dataset assim formado. O problema que permanece aberto — e para o qual o software existe — é validar, com amostra estratificada e concordância interavaliador, se esses descritores predizem a tipificação normativa (acabamento e conformação). Fotografias de carcaças e pesos de modelos permanecem sob restrição de uso de pesquisa.
1. Problema e motivação científica
A tipificação de carcaças ovinas no Brasil segue critérios de acabamento (cobertura de gordura) e conformação (desenvolvimento muscular do perfil), alinhados a normas do tipo EUROP/MAPA. Em laboratório e na linha de abate, o grau é atribuído por avaliadores humanos; a fotografia digital abre a hipótese de medidas objetivas de superfície — e, a médio prazo, de apoio à tipificação — sob condições de iluminação e pose parcialmente controláveis.
Um esforço anterior de coleta não falhou pelos métodos de aprendizado de máquina. Falhou porque a associação imagem–animal–grau não foi registrada durante a coleta: foi reconstruída depois por ordem de arquivo, com etiquetas físicas duplicadas ou ilegíveis e planilha de laboratório sem coluna de nome de imagem. Apenas 4 de 15 etiquetas coincidiam com os registros do laboratório. No corpus resultante, nenhuma imagem podia ser confirmada como pertencente ao animal ao qual era atribuída — o que invalida qualquer correlação descritor ↔ grau e impede testar hipóteses sobre o conteúdo da imagem.
Do ponto de vista de engenharia de dados e de visão computacional, formulamos três questões alinhadas à agenda de tipificação:
- Q1 — Como garantir, por schema e por fluxo de captura, que o vínculo imagem ↔ carcaça ↔ grau seja auditável no ato, de modo que a reconstrução por nome de arquivo seja estruturalmente impossível?
- Q2 — Em que medida a cobertura de gordura de superfície, sob remoção de fundo alinhada às condições de treino, é estável o bastante (IoU, fração sobre a silhueta) para servir de descritor validado independentemente do grau?
- Q3 — A convexidade integral-invariante do perfil (perna / lombo / paleta) reproduz a anatomia normativa a olho; o grau derivado dela — e o grau de acabamento por CNN — é recuperável de forma confiável a partir de uma única imagem 2D no tamanho de amostra atual?
O Apex trata o software como instrumento de aquisição e análise exploratória, não como oráculo de tipificação. Graus de acabamento e de conformação são rotulados como experimental / não validado em toda a interface; a segmentação de gordura e o pareamento, como validados ou garantidos por construção.
Loading diagram…
2. Fundamentos e trabalho relacionado
2.1 Pareamento como invariante de schema
Seja o conjunto de carcaças de um lote e o conjunto de imagens. O requisito de integridade exige uma função total registrada no ato
persistida como chave estrangeira carcass_id NOT NULL, e não inferida a posteriori a partir de . A unicidade UNIQUE(batch_id, physical_tag) impede duplicatas de etiqueta no mesmo lote; o sha256 da imagem impede duplicatas de arquivo. A exportação do dataset inclui apenas carcaças com pareamento verificado (manifest.csv + integrity_report.txt).
2.2 ColorNaming e segmentação de gordura
A segmentação de gordura emprega o frontend de ColorNaming de Van de Weijer et al.: RGB 11 mapas de probabilidade de cor via LUT (joost_color_naming.mat), seguido de um decoder convolucional (fat_binary.pth). O modelo foi treinado com carcaças compostas sobre fundo preto; sem remoção de fundo (rembg / U²-Net), ladrilhos claros e jaleco do operador são contados como gordura. A fração reportada é relativa à superfície da carcaça, não à foto inteira. IoU de validação: .
2.3 Convexidade integral-invariante
A norma de avaliação define conformação pela convexidade do perfil: musculatura plena empurra o contorno para fora; musculatura pobre o afunda. Seguimos Manay et al. (2004) e Pottmann et al. (2009). Em cada ponto do contorno, com raio ,
onde é a área do disco centrado em que cai dentro da silhueta. Interpretação: convexo (musculoso), reto, côncavo. A medida é analítica (sem treino), invariante a rotação, translação, escala e iluminação, e agregada por região anatômica (perna, lombo, paleta) sob pose pendurada.
2.4 Concordância inter-avaliador
Graus humanos são coletados em sessões cegas (2–3 avaliadores). A concordância por eixo (conformação, acabamento) é medida pelo de Fleiss; o consenso alimenta a validação futura dos descritores de superfície contra a tipificação normativa (requisito R2 do plano de aquisição).
2.5 Papers-método desta linha
O Apex é o hub de pareamento da série RGB: schema e UI que tornam verificáveis os descritores desenvolvidos nos papers-método abaixo. Cada um detalha o método; aqui eles entram como medidas objetivas sobre o dataset pareado.
| Paper | Papel no Apex |
|---|---|
| ColorNaming + decoder | Segmentação de gordura (frontend congelado + decoder leve) |
| Convexidade integral-invariante | Conformação via no perfil |
| Homologia persistente | Acabamento via topologia da máscara de gordura |
3. Protocolo experimental / instrumento
3.1 Arquitetura do Apex
| Camada | Tecnologia | Papel |
|---|---|---|
| Desktop | Wails v2 | Janela nativa, embed do frontend, ponte tipada Go↔JS |
| Núcleo | Go 1.23+ | DB, pareamento, orquestração, export |
| Persistência | SQLite (modernc.org/sqlite, pure-Go) | Planilha única carcass.db |
| UI | React 19 + TypeScript + Tailwind 4 | Tema NASA Open MCT “Espresso” |
| Inferência | Python + PyTorch + OpenCV + rembg | Sidecars sob demanda (JSON stdin/stdout) |
Três princípios de projeto: (1) o banco é a fonte da verdade do pareamento; (2) fontes de captura são intercambiáveis (webcam via getUserMedia, Kinect via sidecar); (3) medições declaram status — verde = validado, âmbar = experimental.
3.2 Fluxo de coleta
| Etapa | Especificação |
|---|---|
| Lote | Sessão de abate / dia / frigorífico (batches) |
| Carcaça | physical_tag obrigatório antes da captura; UNIQUE(batch_id, physical_tag) |
| Captura | Webcam no WebView → JPEG base64 → SaveCapturedImage grava bytes + carcass_id |
| Importação | Varredura de diretório, dedup por sha256, conciliação obrigatória a carcaça |
| Referência física (R4) | Espessura de gordura, GR, área de olho de lombo, notas de dissecção na mesma ficha |

3.3 Pipeline de análise por lote
Para cada imagem ainda não analisada:
- Remoção de fundo — carcaça composta sobre preto (condição de treino).
- Segmentação de gordura — ColorNaming + CNN; fração sobre a silhueta.
- Conformação — na silhueta limpa; índices por região + mapa azul/vermelho.
- Grau experimental (opcional) —
direct_class/eg_regression, marcado em âmbar.
A UI oferece Gallery (varredura visual), Table + distribution (histograma), Compare (até quatro carcaças lado a lado) e Physical correlation (Pearson entre % de gordura e referência física).



3.4 Conformação e monitor ao vivo
O mapa de convexidade colora o contorno: azul onde convexo, vermelho onde côncavo. A correspondência anatômica (pernas convexas, recorte medial côncavo) é verificável sem rótulos. O grau estimado derivado dos índices permanece experimental.
O Live monitor captura o fundo uma vez, aplica subtração clássica (sem rembg no loop) e o modelo de gordura a ~30 ms/frame, devolvendo overlay JPEG ao React — apoio ao enquadramento, não medição de lote.


4. Descritores e status científico
| Saída | Natureza | Status |
|---|---|---|
Pareamento carcass_id | Invariante de schema | Garantido por construção |
| Máscara / % de gordura | Superfície, pós-rembg | Validado (IoU ) |
| por região + mapa | Geometria da silhueta | Objetivo / reproduzível |
| Grau de acabamento (CNN) | Classificação / regressão | Experimental (n = 22) |
| Grau de conformação (de ) | Derivado dos índices | Experimental (oráculo negativo) |
| de Fleiss | Concordância humana | Operacional quando há conjunto comum |
Resultado do oráculo. Calculando descritores de forma sobre a anotação manual perfeita (a melhor máscara que qualquer modelo poderia produzir), zero de 384 testes estatísticos sobreviveu à correção de múltiplas comparações com n = 22. Mesmo com segmentação perfeita, a conformação não é recuperável de forma confiável a partir de uma única imagem 2D neste tamanho de amostra. O gargalo é a modalidade de aquisição, não o modelo — o que motiva depth no schema (depth_path) e a coleta de amostra estratificada ~100–120 (R3).

5. Decomposição radiométrica e ColorNaming
Como frontend compartilhado por fat_binary, direct_class e eg_regression, os 11 mapas ColorNaming projetam RGB em categorias perceptuais (incluindo tons associados a gordura subcutânea e músculo exposto). Em condições de aquisição reais, assimetrias de iluminante e fundo não uniforme modulam esses mapas — daí a obrigatoriedade do recorte sobre preto antes da inferência de lote. Câmeras RGB de consumo não constituem espectrômetros calibrados; o ColorNaming é um descritor de aparência, não metrologia de tecido.
6. Parâmetros do protocolo
| Parâmetro | Valor |
|---|---|
| Stack desktop | Wails v2, Go 1.23+, React 19, Tailwind 4 |
| Persistência | SQLite pure-Go; dados em <UserConfigDir>/carcass-integration/ |
| Remoção de fundo | rembg / U²-Net → composição sobre preto |
| Segmentação | fat_binary.pth, entrada ; LUT ColorNaming |
| Grau experimental | direct_class / eg_regression, entrada ; classes Magro / Escasso / Mediano |
| Convexidade | ; regiões perna / lombo / paleta |
| Live | Subtração de fundo + gordura ~30 ms/frame |
| Concordância | de Fleiss por eixo; sessões cegas |
| Export | manifest.csv + integrity_report.txt (só pareamento verificado) |
| Amostra-alvo | ~100–120 carcaças estratificadas (R3) |
7. Limitações e validade
- Integridade ≠ tipificação. O pareamento verificável habilita a validação; não a substitui. Graus CNN e grau derivado de permanecem experimentais.
- Modalidade 2D. Acabamento é propriedade de profundidade; uma única imagem de superfície a captura apenas parcialmente. O schema já reserva
depth_path(Kinect). - Oráculo negativo (n = 22). Zero de 384 testes sobreviveu a FDR sobre máscaras perfeitas — evidência de que o gargalo atual é a modalidade/amostra, não a arquitetura de rede.
- Dependência de aquisição. Fundo, iluminação e vista padronizada melhoram toda medição subsequente; o software impõe vista e oferece captura de fundo, mas a montagem física é do operador.
- Sidecar Python. O binário nativo empacota pesos; a análise ainda exige ambiente científico (
torch, OpenCV, rembg). Operação offline, sem sync em nuvem — adequado a frigorífico/lab.
8. Direções de pesquisa
No horizonte da tipificação objetiva de carcaças ovinas por imagem, as extensões naturais são:
- Coleta da amostra estratificada ~100–120 com pareamento Apex, graus inter-avaliador e referência física (R1–R4), reabrindo o teste de correlação superfície ↔ grau que o corpus anterior tornou inviável.
- Condicionar descritores à máscara de gordura e à silhueta: comparar frações e contra consenso humano e contra medidas de dissecção.
- Ativar depth (Kinect) para conformação 3D real em vez de silhueta inferida, testando se o oráculo negativo se dissolve com modalidade rica.
- Recalibrar ou substituir
direct_class/eg_regressionsomente após o dataset pareado atingir tamanho e cobertura de estratos suficientes. - Protocolos de captura fixos (fundo, distância, vista) como covariáveis explícitas em qualquer comparação entre campanhas.
9. Conclusão
No âmbito da pesquisa sobre avaliação de carcaças ovinas por fotografia, o Apex formaliza a lição do corpus preliminar: sem pareamento verificável, nenhum método de visão é interpretável. O instrumento garante o vínculo imagem–animal–grau no schema, deriva segmentação de gordura validada e convexidade objetiva do perfil, e recusa apresentar graus experimentais como fatos — marcando-os em âmbar até que a amostra pareada permita o ciclo de validação. Esse eixo não substitui o avaliador humano nem a norma de tipificação: fornece a infraestrutura de dados e os descritores de superfície sem os quais a hipótese “a imagem contém o grau” não pode ser testada. A validade científica da tipificação por imagem depende, daqui em diante, de coleta com invariante de pareamento, referência física na mesma ficha e avaliação estatística multi-avaliador sobre amostra estratificada.
Referências
- Fleiss, J. L. (1971). Measuring nominal scale agreement among many raters. Psychological Bulletin, 76(5), 378–382.
- Manay, S., Hong, B.-W., Yezzi, A. J., & Soatto, S. (2004). Integral invariant signatures. In ECCV (pp. 87–98). Springer.
- Pottmann, H., Wallner, J., Huang, Q.-X., & Yang, Y.-L. (2009). Integral invariants for robust geometry processing. Computer Aided Geometric Design, 26(1), 37–60.
- Van de Weijer, J., Schmid, C., Verbeek, J., & Larlus, D. (2009). Learning color names for real-world applications. IEEE Transactions on Image Processing, 18(7), 1512–1523.
- Qin, X., Zhang, Z., Huang, C., Dehghan, M., Zaiane, O. R., & Jagersand, M. (2020). U²-Net: Going deeper with nested U-structure for salient object detection. Pattern Recognition, 106, 107404.
- Melo, J. L. S., et al. (2026). Avaliação de carcaças ovinas por imagem (registro interno PAVIC/UFPI). Documento de planejamento e requisitos R1–R4.
- Apex / carcass_integration. Manual do usuário (PT-BR), Estações 1–14. https://github.com/rexionmars/apex








