Pareamento verificável e análise por imagem de carcaças ovinas — Apex

João LeonardiJoão LeonardiORCID11 min
View on GitHub

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 0,92\sim 0{,}92), convexidade integral-invariante do perfil e graus experimentais com status explícito na UI. A motivação veio de um corpus preliminar (n=22n=22) 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:

  1. 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?
  2. 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?
  3. 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.


2. Fundamentos e trabalho relacionado

2.1 Pareamento como invariante de schema

Seja C\mathcal{C} o conjunto de carcaças de um lote e I\mathcal{I} o conjunto de imagens. O requisito de integridade exige uma função total registrada no ato

π ⁣:IC,\pi \colon \mathcal{I} \to \mathcal{C},

persistida como chave estrangeira carcass_id NOT NULL, e não inferida a posteriori a partir de filename(I)\mathrm{filename}(I). 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 \mapsto 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: 0,92\sim 0{,}92.

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 pp do contorno, com raio rr,

c(p,r)=12A(p,r)πr2,c(p,r) = \frac{1}{2} - \frac{A(p,r)}{\pi r^{2}},

onde A(p,r)A(p,r) é a área do disco centrado em pp que cai dentro da silhueta. Interpretação: c>0c>0 convexo (musculoso), c=0c=0 reto, c<0c<0 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 κ\kappa 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.

PaperPapel no Apex
ColorNaming + decoderSegmentação de gordura (frontend congelado + decoder leve)
Convexidade integral-invarianteConformação via c(p,r)c(p,r) no perfil
Homologia persistenteAcabamento via topologia da máscara de gordura

3. Protocolo experimental / instrumento

3.1 Arquitetura do Apex

CamadaTecnologiaPapel
DesktopWails v2Janela nativa, embed do frontend, ponte tipada Go↔JS
NúcleoGo 1.23+DB, pareamento, orquestração, export
PersistênciaSQLite (modernc.org/sqlite, pure-Go)Planilha única carcass.db
UIReact 19 + TypeScript + Tailwind 4Tema NASA Open MCT “Espresso”
InferênciaPython + PyTorch + OpenCV + rembgSidecars 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

EtapaEspecificação
LoteSessão de abate / dia / frigorífico (batches)
Carcaçaphysical_tag obrigatório antes da captura; UNIQUE(batch_id, physical_tag)
CapturaWebcam no WebView → JPEG base64 → SaveCapturedImage grava bytes + carcass_id
ImportaçãoVarredura 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

Captura e inspector: imagem nascida com vínculo à etiqueta física.
Captura e inspector: imagem nascida com vínculo à etiqueta física.

3.3 Pipeline de análise por lote

Para cada imagem ainda não analisada:

  1. Remoção de fundo — carcaça composta sobre preto (condição de treino).
  2. Segmentação de gordura — ColorNaming + CNN; fração sobre a silhueta.
  3. Conformaçãoc(p,r)c(p,r) na silhueta limpa; índices por região + mapa azul/vermelho.
  4. 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).

Analysis → Gallery: sobreposição de gordura e estatísticas do lote.
Analysis → Gallery: sobreposição de gordura e estatísticas do lote.

Analysis → Table + distribution: gordura, grau e histograma.
Analysis → Table + distribution: gordura, grau e histograma.

Analysis → Compare: até quatro carcaças lado a lado.
Analysis → Compare: até quatro carcaças lado a lado.

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.

Analysis → Conformation: mapa de convexidade por região.
Analysis → Conformation: mapa de convexidade por região.

Live monitor: overlay de gordura em tempo quase real.
Live monitor: overlay de gordura em tempo quase real.


4. Descritores e status científico

SaídaNaturezaStatus
Pareamento carcass_idInvariante de schemaGarantido por construção
Máscara / % de gorduraSuperfície, pós-rembgValidado (IoU 0,92\sim 0{,}92)
cc por região + mapaGeometria da silhuetaObjetivo / reproduzível
Grau de acabamento (CNN)Classificação / regressãoExperimental (n = 22)
Grau de conformação (de cc)Derivado dos índicesExperimental (oráculo negativo)
κ\kappa de FleissConcordância humanaOperacional 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).

Dashboard de progresso da amostra e painel de κ.
Dashboard de progresso da amostra e painel de κ.


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âmetroValor
Stack desktopWails v2, Go 1.23+, React 19, Tailwind 4
PersistênciaSQLite pure-Go; dados em <UserConfigDir>/carcass-integration/
Remoção de fundorembg / U²-Net → composição sobre preto
Segmentaçãofat_binary.pth, entrada 512×512512\times 512; LUT ColorNaming 32768×1132768\times 11
Grau experimentaldirect_class / eg_regression, entrada 256×256256\times 256; classes Magro / Escasso / Mediano
Convexidadec(p,r)=1/2A(p,r)/(πr2)c(p,r)=1/2 - A(p,r)/(\pi r^{2}); regiões perna / lombo / paleta
LiveSubtração de fundo + gordura ~30 ms/frame
Concordânciaκ\kappa de Fleiss por eixo; sessões cegas
Exportmanifest.csv + integrity_report.txt (só pareamento verificado)
Amostra-alvo~100–120 carcaças estratificadas (R3)

7. Limitações e validade

  1. Integridade ≠ tipificação. O pareamento verificável habilita a validação; não a substitui. Graus CNN e grau derivado de cc permanecem experimentais.
  2. Modalidade 2D. Acabamento é propriedade de profundidade; uma única imagem de superfície a captura apenas parcialmente. O schema já reserva depth_path (Kinect).
  3. 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.
  4. 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.
  5. 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 c(p,r)c(p,r) 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_regression somente 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

Related reading

  1. Segmentação ColorNaming + decoder leve
  2. Convexidade integral-invariante para conformação
  3. Homologia persistente como descritor de acabamento

Na série Tipificação e qualidade de carcaça

Segmentação de tecido com frontend ColorNaming congelado e decoder de 62 mil parâmetros

Arquitetura de dois estágios que combina um extrator ColorNaming sem treino com um decoder convolucional leve, avaliada na segmentação de gordura, músculo e fundo em carcaças ovinas.

Série A · 2Computer Vision5 min

Uma medida de convexidade invariante e sem treino para conformação de carcaças

Convexidade do perfil de carcaças ovinas calculada por um invariante integral de área, invariante a rotação, translação, escala e iluminação, sem qualquer etapa de treinamento.

Série A · 3Computer Vision6 min

Homologia persistente da cobertura de gordura como descritor de acabamento

Descritores topológicos invariantes a iluminação e pose, aplicados à máscara de gordura de carcaças ovinas, comparados com a transformada de scattering na classificação do grau de acabamento.

Série A · 4Computer Vision6 min

Protótipo multiespectral DIY para inspeção de carcaças bovinas e ovinas (660 nm + 850 nm)

Projeto de um sistema de refletância difusa de baixo custo com câmera Logitech C270 modificada, iluminação sequencial em 660 nm e 850 nm, normalização radiométrica e índices espectrais para segmentar músculo e gordura subcutânea em carcaças.

Working paperSérie A · 5Spectroscopy8 min

Simulação radiométrica de iluminação multiespectral LED para carcaça ovina

Modelo forward Lambertiano de um array de cinco bandas (UV–NIR) a 1 m e superfície procedural de Longissimus dorsi com mistura de mioglobina estilo Krzywicki. Uniformidade de irradiância na ROI ≥87%; gordura subcutânea espectralmente separável; músculo, perimísio e IMF quase sobrepostos no domínio espectral puro.

Série A · 6Spectroscopy15 min

MSI-sensor — imagem multiespectral proximal por LEDs discretos para solo e microbiota

Sensor open-source de aquisição sequencial UV–Vis (400, 450, 530, 620 nm; IR na v2) com ESP32-C3 e CMOS USB. Calibração radiométrica, Kubelka–Munk, índices de solo (BI, CI, RI, IOI), autofluorescência microbiana (44 colônias), dual UV–vermelho para carne, PCA/GLCM e enquadramento em sensoriamento remoto proximal — com roadmap JCDE de 8 bandas (365–940 nm) e lições PIXL/SHERLOC.

Série A · 7Remote Sensing19 min

Atomos MSI — plataforma robótica multiespectral para qualidade de carne e classificação de carcaças

Sistema de 5 bandas (365–850 nm) em SCARA 3-DOF com pilha Electron/FastAPI/BLE. Aquisição sequencial LED–CMOS, aproximação de Krzywicki por razões de absorbância, índices OxI/TVB-N/IFU e ensaio laboratorial em frango (classe Degradado; OxiMb 14,7%, MetMb 53,4%). Posicionado como instrumento de método e protótipo industrial sob MAPA IN 9/2004.

Working paperSérie A · 8Spectroscopy12 min

Controle visual eye-in-hand de SCARA 3-DOF por erro de pixel discreto

Modelagem cinemática e lei de controle para waypoints definidos por clique na imagem. Correção proporcional única por waypoint (não IBVS contínuo), Jacobiana de imagem reduzida pan/tilt, convergência para , singularidades e sincronização servo–imagem no Atomos MSI.

Série A · 9Robotics9 min