SISTEMA DE SOFTWARE PARA DETECÇÃO, RASTREAMENTO E CONTAGEM DE PEIXES EM VÍDEOS DE PASSAGEM EM CANALETA

SOFTWARE SYSTEM FOR DETECTION, TRACKING AND COUNTING OF FISH IN PASSAGE-CHANNEL VIDEOS

REGISTRO DOI: 10.70773/revistatopicos/786245352

RESUMO
A contagem automatizada de peixes em vídeo exige integrar detecção, associação temporal e uma regra operacional de contagem. Este capítulo apresenta um pipeline com região de interesse (ROI) ajustável, detecção pela família YOLO, rastreamento com ByteTrack, gerenciamento de identificadores (IDs) e contagem por cruzamento de linha virtual. Na avaliação integrada em oito vídeos completos de Astyanax lacustris, a configuração principal contabilizou 2.404 peixes para uma referência de 2.400 eventos, atingiu erro médio absoluto (MAE) de 1,25 peixe por vídeo e obteve contagem exata em três vídeos. O detector alcançou precisão média média (mAP, do inglês mean Average Precision) de 0,9687 em mAP@0,50, e o pipeline apresentou média ponderada superior a 60 quadros por segundo em GPU dedicada. A configuração principal produziu 2.531 IDs, evidenciando fragmentação de trajetórias apesar do baixo erro final. Os 2.400 eventos em 8 min 10 s correspondem a aproximadamente 294 eventos por minuto, cadência compatível com o requisito operacional levantado. Como os vídeos avaliados também originaram parte dos frames usados no desenvolvimento do detector, esses resultados caracterizam o desempenho no domínio estudado, e não uma validação independente.
Palavras-chave: visão computacional; YOLO; ByteTrack; contagem de peixes; rastreamento de objetos; aquicultura.

ABSTRACT
Automated fish counting in video requires the integration of detection, temporal association, and an operational counting rule. This chapter presents a pipeline with an adjustable region of interest (ROI), YOLO-family detection, ByteTrack tracking, identifier (ID) management, and virtual line-crossing counting. In the integrated evaluation on eight complete Astyanax lacustris videos, the primary configuration counted 2,404 fish against a reference of 2,400 events, achieved a Mean Absolute Error (MAE) of 1.25 fish per video, and produced exact counts in three videos. The detector reached a mean Average Precision (mAP) of 0.9687 at [email protected], while the pipeline achieved a weighted mean above 60 frames per second on a dedicated GPU. The primary configuration produced 2,531 IDs, evidencing trajectory fragmentation despite the low final counting error. The 2,400 events recorded over 8 min 10 s correspond to approximately 294 events per minute, a rate compatible with the stated operational requirement. Because the evaluated videos also provided part of the frames used during detector development, these results characterize performance within the studied domain rather than independent validation.
Keywords: computer vision; YOLO; ByteTrack; fish counting; object tracking; aquaculture.

1. INTRODUÇÃO

A contagem de peixes na piscicultura é tradicionalmente realizada de forma manual e aproximada durante as etapas de manejo. No procedimento convencional, os peixes são retirados dos tanques com auxílio de peneiras ou redes, agrupados em pequenas porções e estimados visualmente pelos trabalhadores antes de serem transferidos ou comercializados. Embora seja uma prática simples e de baixo custo direto, ela apresenta alta susceptibilidade a erros de estimativa, exige esforço físico, consome tempo operacional relevante e impõe estresse aos animais em momentos críticos da produção. A automação dessa etapa por visão computacional e aprendizado profundo tem sido amplamente investigada na aquicultura como alternativa não invasiva e mais precisa (Barbedo, 2022; Saleh; Sheaves; Rahimi Azghadi, 2022). Iniciativas nessa direção já foram conduzidas na piscicultura brasileira, inclusive com dados do próprio IF Goiano, demonstrando redução de tempo operacional e de estresse frente à contagem manual (Cabral; Martins, 2023).

Para mitigar essas limitações, a proposta desta dissertação desloca a contagem do interior dos tanques — onde a água turva, a variação de profundidade e a desorganização espacial inviabilizam a visão computacional — para uma etapa de passagem monitorada. O equipamento físico descrito no Capítulo II conduz os peixes por uma canaleta inclinada com lâmina de água e iluminação controlada. No entanto, a existência de um dispositivo físico de passagem não resolve a contagem por si só; é necessário um sistema de software capaz de processar o fluxo de vídeo e converter os movimentos dos peixes em eventos de contagem confiáveis.

O software apresentado neste capítulo combina detecção por modelos da família YOLO (Redmon et al., 2016), rastreamento temporal com o algoritmo ByteTrack (Zhang et al., 2022), controle de região de interesse (ROI), gerenciamento e filtragem de identificadores (IDs), contagem por cruzamento de linha virtual, interface web para operação remota e gravação auditável de dados. A contribuição central do componente computacional está tanto na integração dessas etapas quanto no ciclo de melhoria que conecta os erros observados em vídeo à seleção de novos frames, à curadoria dos dados, ao treinamento e à reavaliação da contagem. A tarefa não se limita a localizar peixes em quadros isolados nem a comparar modelos como finalidade autônoma, mas busca obter sucessivamente uma configuração integrada mais adequada ao objetivo operacional. Abordagens que integram detecção e rastreamento para contagem de peixes em vídeo têm sido propostas recentemente (Kandimalla et al., 2022; Lin et al., 2024; Dawkins et al., 2024), o que reforça a pertinência do pipeline aqui adotado. Mais do que um detector isolado, o que essa literatura tem convergido a adotar é a combinação de detecção, rastreamento por trilhas e regra de contagem por linha; este trabalho instancia esse arranjo e o submete ao ciclo iterativo de melhoria descrito adiante.

Este capítulo descreve o desenvolvimento do componente computacional do sistema, desde a formação e evolução dos conjuntos de dados até a integração entre detecção, rastreamento e contagem. A avaliação foi organizada em três níveis complementares: desempenho do detector em imagens anotadas, erro de contagem em vídeos completos e estabilidade dos identificadores gerados pelo rastreador. Essa separação é necessária porque uma alta capacidade de localizar peixes em quadros isolados não garante, por si só, que cada indivíduo seja contado uma única vez ao longo do vídeo.

1.1. Problemas Práticos e Papéis dos Componentes

A Tabela 1 resume a relação entre os problemas práticos observados na contagem, o papel desempenhado pelo equipamento físico de captura e a resposta computacional implementada no software.

Tabela 1. Relação entre problemas práticos do manejo, papel do hardware e papel do software

Problema observado

Papel do hardware (Capítulo II)

Papel do software (Capítulo III)

Contagem manual aproximada

Conduzir peixes em passagem monitorada por canaleta

Registrar eventos de passagem por cruzamento de linha

Turbidez da água do tanque

Usar fluxo de água limpa na canaleta

Lidar com ruído visual residual e reflexos secundários

Aglomeração e sobreposição

Espalhar os peixes pela largura da canaleta

Rastrear trajetórias e manter consistência de IDs

Oclusão entre indivíduos

Fornecer lâmina de água rasa para evitar empilhamento

Manter histórico temporal com ByteTrack e tolerar falhas de detecção

Reflexos na superfície

Utilizar PVC branco e iluminação por LED superior

Definir ROI interna, treinar com imagens negativas e filtrar bordas

Velocidade de passagem

Ajustar inclinação da canaleta e vazão da bomba

Manter alta taxa de quadros, expressa em quadros por segundo (FPS), e linha virtual com margem temporal

Instabilidade de enquadramento

Fixar estrutura de madeira e suporte de câmera

Permitir configuração visual de ROI e linha virtual

Fonte: elaborada pelo autor (2026).

2. CONTEXTO E REQUISITOS DO SOFTWARE

2.1. Requisitos Funcionais

Os requisitos funcionais do software derivam do objetivo operacional de registrar a passagem dos peixes pela canaleta com o menor erro possível. Esses requisitos foram divididos em três grupos funcionais: núcleo da contagem, apoio ao desenvolvimento experimental e operação/auditoria.

O núcleo da contagem reúne aquisição de vídeo, detecção, rastreamento, cruzamento de linha e controle básico da operação. O apoio experimental compreende seleção de frames, pré-anotação, divisão rastreável dos dados e orquestração dos treinamentos, enquanto a operação e a auditoria abrangem a configuração da ROI e da linha de contagem e a persistência dos vídeos e metadados. O detalhamento de cada requisito e de seu papel na solução foi deslocado para a Tabela 2, no Apêndice A.

2.2. Requisitos Não Funcionais e Ambiente de Execução

Os requisitos não funcionais especificam os critérios de qualidade, robustez, reprodutibilidade e desempenho exigidos pelo sistema.

Os critérios adotados abrangem acurácia de contagem, robustez visual, eficiência computacional, reprodutibilidade, auditabilidade e configurabilidade. Eles são avaliados, conforme o caso, pelo erro de contagem nos vídeos completos, pelo desempenho computacional, pela preservação de configurações e manifestos e pela geração de vídeos e metadados de auditoria. A especificação detalhada encontra-se na Tabela 3, no Apêndice A.

Um requisito operacional importante, levantado junto ao produtor e derivado dos ensaios na empresa parceira, é a capacidade de processar lotes com aproximadamente 300 indivíduos por minuto. Essa taxa corresponde ao ritmo habitual de liberação dos peixes durante a contagem para comercialização. Ela implica que o pipeline precisa manter rastreamento e contagem contínuos em alta cadencia de passagens, sem que o custo computacional cause perda de quadros ou acúmulo de latência que comprometa o registro de cruzamentos. Os resultados de FPS descritos na Seção de resultados são interpretados em relação a esse requisito.

A avaliação final do software nos oito vídeos experimentais foi executada em um computador equipado com processador AMD Ryzen 5 7600X (6 núcleos, 12 threads), 32 GB de memória RAM e placa de vídeo NVIDIA GeForce RTX 3070 com 8 GB de memória dedicada. O sistema operacional utilizado foi o Windows 11 Pro de 64 bits (build 26200). O ambiente computacional empregou Python 3.12.13, Ultralytics 8.4.37 (Ultralytics, 2025) e PyTorch 2.8.0 com suporte a CUDA 12.6, operando no dispositivo cuda:0.

2.3. Escopo e Delimitação Computacional

O escopo deste trabalho concentra-se no processamento de vídeo, detecção, rastreamento temporal, contagem por linha virtual e avaliação integrada do pipeline. Ficam explicitamente fora do escopo funcional:

  • A estimativa de peso, biomassa ou comprimento dos peixes a partir das caixas delimitadoras (hipótese descartada no escopo atual devido à variação de pose e flexão dos animais);

  • A validação operacional de implantação em dispositivo de borda (Raspberry Pi), cujos testes preliminares demonstraram taxa de quadros insatisfatória e são tratados como trabalho futuro;

  • A classificação automática de espécies ou a calibração fotométrica em tempo real.

3. ARQUITETURA DO PIPELINE DE SOFTWARE

3.1. Visão Geral da Arquitetura

O software foi construído segundo uma arquitetura modular em camadas, desacoplando a leitura de dados, o processamento computacional, a interface de usuário e a persistência para auditoria. O fluxo de dados segue a sequência:

O fluxo inicia-se na leitura do quadro (VideoSource, baseada na biblioteca OpenCV (Bradski, 2000)), passa pelo recorte da Região de Interesse (ROIManager), segue para a inferência pelo modelo YOLO (YOLODetector), sofre associação temporal pelo algoritmo ByteTrack (ByteTracker), é filtrado pelo gerenciador de identificadores (IDManager), tem seus cruzamentos checados pelo contador de linha virtual (LineCounter) e gera o resultado consolidado (FrameResult) que alimenta o streaming visual da interface web (implementada com FastAPI (Ramírez, 2018)) e a gravação de metadados.

A Figura 1 ilustra um quadro processado pelo pipeline, com detecções, identificadores e a linha de contagem; a Figura 2 apresenta a interface web de operação.

Figura 1. Quadro 700 do vídeo 2026-07-17 15-26-33.mp4, processado com o modelo promovido da execução d13f3a, mostrando caixas de detecção, confiança, identificadores de rastreamento, região de interesse e linha virtual de cruzamento. Fonte: elaborado pelo autor (2026).

Fonte: elaborada pelo autor (2026).

Figura 2. Interface web de operação do sistema, com o vídeo processado, as detecções e os identificadores sobrepostos, a contagem acumulada e os controles operacionais. Fonte: elaborado pelo autor (2026).

Fonte: elaborada pelo autor (2026).

3.2. Síntese dos Módulos do Pipeline

A Tabela 4 detalha a responsabilidade de cada módulo componente do sistema computacional.

O pipeline é composto por fonte de vídeo, gerenciador de ROI, detector de objetos, rastreador temporal, gerenciador de IDs, contador por linha, interface web, gravador de auditoria e camada de configuração. A responsabilidade e o elemento de implementação associados a cada módulo estão documentados na Tabela 4, no Apêndice A.

3.3. Distinção Entre Detector, Rastreador e Contador

Uma definição operacional clara é fundamental para a análise dos resultados. Em cada quadro, o detector produz caixas delimitadoras, classes e valores de confiança. O rastreador associa essas detecções ao longo do tempo e atribui um identificador (ID) a cada trajetória. A contagem é realizada somente quando uma trajetória válida cruza a linha virtual dentro da região de interesse e atende aos critérios temporais definidos. Portanto, o número de detecções, o número de IDs únicos e o número de cruzamentos contabilizados são grandezas essencialmente diferentes.

Um mesmo peixe pode receber mais de um ID se sua trajetória for interrompida por oclusão, saída parcial do quadro ou perda momentânea da detecção. Por outro lado, nem todo ID criado pelo rastreador atravessa a linha de contagem. Isso explica por que o sistema pode apresentar contagem final muito próxima da referência real e, simultaneamente, registrar um número de IDs únicos superior à quantidade física de animais.

4. DADOS, ANOTAÇÃO E TREINAMENTO DOS MODELOS

4.1. Evolução do Fluxo Experimental e Dataset Studio

Nas primeiras iterações do projeto, as rotinas de extração de frames, preparação de tarefas para anotação e treinamento dos detectores estavam integradas ao código do sistema de contagem. Essa organização permitiu executar rapidamente os experimentos iniciais, mas passou a dificultar a identificação da origem de cada imagem, da revisão de anotações utilizada, da divisão aplicada ao conjunto de dados e do checkpoint resultante à medida que novos vídeos e treinamentos eram incorporados.

Como consequência, a rastreabilidade não é uniforme em toda a trajetória experimental. Para as bases e os treinamentos anteriores à autonomização da ferramenta, foi possível reconstruir tamanhos, composição geral e linhagem dos pesos a partir dos artefatos preservados, mas não existe, em todos os casos históricos, um manifesto padronizado que relacione cada frame ao vídeo de origem e à divisão aplicada. Nas iterações recentes, especialmente na campanha de 17 de julho de 2026 e no treinamento executado pelo Dataset Studio, essa relação passou a ser registrada diretamente pelos manifestos da ferramenta. Assim, a rastreabilidade completa deve ser atribuída às versões recentes, sem ser retroativamente presumida para os experimentos anteriores.

A necessidade de repetir o ciclo experimental sem perder a relação entre suas etapas motivou o desenvolvimento do Dataset Studio como ferramenta autônoma. A separação não alterou o objetivo do estudo: a ferramenta passou a organizar a preparação dos dados e o treinamento, enquanto o sistema de contagem permaneceu responsável pela inferência em vídeo, pelo rastreamento e pela contabilização dos cruzamentos. Essa delimitação permite aperfeiçoar o detector em sucessivas iterações sem acoplar a gestão do conjunto de dados à aplicação operacional.

No Dataset Studio, cada campanha de aquisição é registrada como uma origem que relaciona os vídeos, seus identificadores, as unidades de captura e a configuração usada para extrair os frames. A extração pode empregar amostragem uniforme ou seleção assistida por um detector, preservando um manifesto dos quadros gerados. A anotação é realizada com integração ao Label Studio, incluindo importação controlada das tarefas e recuperação das revisões concluídas. O emprego de pré-anotação assistida por modelos de detecção e rastreamento para reduzir o esforço manual de rotulagem é estratégia consolidada na literatura (Vijiyakumar; Govindasamy; Akila, 2024), aqui incorporada ao fluxo de extração e revisão. A partir dessas revisões, uma versão materializada reúne imagens e rótulos, aplica a divisão por vídeo ou unidade de captura e registra os arquivos resultantes em manifesto.

Essa divisão agrupada é particularmente importante no presente estudo. Frames visualmente próximos de um mesmo vídeo não devem ser distribuídos entre treinamento, validação e teste de imagens, pois essa distribuição produziria conjuntos artificialmente semelhantes. Ao vincular cada frame à sua mídia de origem, o fluxo permite manter as unidades de captura inteiras em uma única divisão. Essa propriedade evita sobreposição de arquivos e reduz o vazamento entre os conjuntos de imagens, embora não torne independente a avaliação posterior nos vídeos completos, conforme discutido na Seção de limitações.

A Tabela 5 resume as etapas organizadas pela ferramenta e as evidências persistidas para permitir auditoria e repetição do processo.

As etapas de origem, extração, anotação, versionamento, treinamento e avaliação formam uma cadeia auditável, na qual cada operação produz evidências de proveniência. A correspondência detalhada entre etapa, operação e artefato preservado está na Tabela 5, no Apêndice A.

O Dataset Studio não é avaliado nesta dissertação como produto independente quanto à usabilidade, ao desempenho de sua interface ou à comparação com outras plataformas de gestão de dados. Seu papel no trabalho é metodológico: tornar explícito e auditável o caminho entre as capturas, os frames anotados, a versão empregada no treinamento e o checkpoint avaliado. A promoção desse checkpoint para o sistema de contagem permanece uma etapa deliberada, pois somente modelos selecionados após a avaliação devem integrar o diretório de modelos disponíveis para inferência.

4.2. Evolução dos Conjuntos de Dados

O conjunto de dados foi ampliado de forma iterativa à medida que novos modos de falha eram identificados. A Tabela 2 apresenta a evolução das bases de dados preparadas ao longo do projeto.

Tabela 2. Evolução dos conjuntos de dados anotados para treinamento do detector

Etapa / Versão

Imagens

Caixas

Neg.

Característica principal

Base inicial

128

222

0

Primeira adaptação à canaleta metálica

Base intermediária

605

901

228

Primeira inclusão de quadros vazios

Base ampliada

1.599

3.323

473

Diversificação de densidades e fundos

PVC parcial

581

2.374

189

Liberação parcial da canaleta de PVC

PVC completa válida

776

5.649

191

Base de referência utilizada nos treinos recentes

Fonte: elaborada pelo autor (2026).

A ampliação da base não consistiu apenas em aumentar o número total de arquivos. Foram incorporados novos cenários, variações de densidade, entradas e saídas parciais pelas bordas, reflexos, ondulações na água, detritos e quadros vazios.

4.3. Composição e Divisão da Liberação Completa de PVC

A liberação completa do dataset de PVC contém 776 imagens e 5.649 caixas delimitadoras anotadas. A Tabela 3 detalha a distribuição das imagens entre os conjuntos de treinamento, validação, teste normal e teste de estresse.

Tabela 3. Composição e divisão do dataset de PVC completo (776 imagens)

Divisão

Total de imagens

Com peixes

Imagens negativas

% Negativas

Treinamento

466

363

103

22,1%

Validação

104

83

21

20,2%

Teste normal

153

102

51

33,3%

Teste de estresse

53

37

16

30,2%

Total

776

585

191

24,6%

Fonte: elaborada pelo autor (2026).

4.4. Imagens Negativas e Representação do Fundo

Na anotação de objetos, a atenção tende a se concentrar nas imagens que contêm a classe de interesse. Para o detector, entretanto, também é necessário representar situações nas quais nenhum peixe está presente. Uma imagem negativa é um quadro válido sem caixas anotadas; ela informa ao modelo que elementos visuais presentes na cena não devem ser classificados como peixes.

No ambiente estudado, esses quadros contêm ondulações da água, pequenos detritos, reflexos luminosos, sombras, bordas da canaleta e variações de exposição. A inclusão de imagens negativas buscou reduzir respostas indevidas a esses elementos. Na liberação completa da canaleta de PVC, 191 das 776 imagens eram negativas, correspondendo a 24,6% do conjunto.

As observações qualitativas indicam que a representação do fundo foi relevante para estabilizar o detector, reduzindo falsos positivos na ausência de peixes. Contudo, como tamanho da base, composição e hiperparâmetros mudaram conjuntamente, a contribuição causal exata das imagens negativas deve ser tratada como hipótese metodologicamente fundamentada, e não como ganho percentual isolado.

4.5. Linhagem e Treinamento dos Modelos

Os treinamentos foram organizados como uma linhagem contínua na qual pesos adaptados serviram de inicialização para etapas posteriores. Os primeiros experimentos utilizaram pesos genéricos COCO da arquitetura YOLO26n. Em seguida, o modelo foi ajustado nos conjuntos intermediários e deu origem ao checkpoint yolo26n_seed_43.pt.

Os treinamentos da liberação completa de 776 imagens (50 e 150 épocas), bem como o treinamento mais recente (t_20260724T140336_d13f3a), foram inicializados a partir desse checkpoint já adaptado ao domínio visual da canaleta, e não a partir de pesos genéricos. Essa linhagem garante que os modelos incorporem o aprendizado prévio do fundo e da geometria da passagem.

O treinamento recente t_20260724T140336_d13f3a foi executado no fluxo Dataset Studio com as 776 imagens (incorporando as 53 imagens do conjunto de estresse ao treino), inicializado com yolo26n_seed_43.pt, prevendo 150 épocas e atingindo seu melhor ponto na época 122. Após a avaliação integrada, o checkpoint foi promovido no Dataset Studio, que registrou seu alias e criou um bundle imutável de implantação. Em seguida, o arquivo promovido foi copiado para o caminho canônico models/yolo26n_canaleta_pvc_776_d13f3a_best.pt do sistema de contagem. O hash SHA-256 F845258882D05F3A8B0D2434531B09024D5B5F4956ADE916AAD1178B4F684371 vincula as cópias ao artefato original do treinamento.

5. RESULTADOS E DISCUSSÃO

5.1. Desempenho do Detector por Imagem

A Tabela 8 apresenta as métricas obtidas pelos modelos de detecção nos conjuntos de validação e teste de imagens. A Figura 3 apresenta a evolução das métricas ao longo do treinamento do detector.

Figura 3. Evolução das perdas de treinamento e validação e das métricas de precisão, revocação e mAP ao longo das 150 épocas da execução t_20260724T140336_d13f3a. Fonte: artefato results.png gerado pela Ultralytics durante o treinamento (2026).

Fonte: elaborada pelo autor (2026).

Tabela 4. Métricas de desempenho dos modelos de detecção YOLO26n

Modelo / Treinamento

Conjunto

Precisão

Revocação

mAP@0,50

mAP@0,50:0,95

PVC completa - 50 épocas

Validação

0,9781

0,9386

0,9887

0,8793

PVC completa - 50 épocas

Teste normal

-

-

 

0,8487

PVC completa - 50 épocas

Teste estresse

-

-

 

0,8348

PVC completa - 150 épocas

Validação

0,9730

0,9700

0,9911

0,8802

PVC completa - 150 épocas

Teste normal

-

-

 

0,8527

PVC completa - 150 épocas

Teste estresse

-

-

 

0,8341

Treino recente (d13f3a)

Teste normal

0,9166

0,9721

0,9687

0,8579

Fonte: elaborada pelo autor (2026).

Os dados confirmam que os detectores treinados alcançaram elevada capacidade de localização espacial dos peixes em quadros isolados, com mAP@0,50 superior a 0,96 e mAP@0,50:0,95 acima de 0,85 no conjunto de teste.

5.2. Resultados da Contagem nos Oito Vídeos Completos

A avaliação principal do sistema integrado foi realizada na campanha de oito vídeos gravados durante os testes na empresa parceira Lambari Itumbiara. Cada vídeo possui a referência real de 300 peixes liberados via peneira, acumulando um alvo total de 2.400 eventos de passagem. Como o mesmo lote de 300 peixes foi reutilizado nas oito sessões, o total acumulado mede o comportamento integrado do sistema em 2.400 passagens, mas não em 2.400 indivíduos distintos.

A configuração principal do modelo promovido está preservada em capture_20260724_d13f3a_count.yaml: resolução de inferência de 960 pixels, ROI interna lateral (x=200 a x=1720), linha virtual em x=1350 e dispositivo cuda:0. A Tabela 4 consolida os parâmetros de detecção, rastreamento, contagem e região de interesse necessários à reprodução. No registro histórico das demais configurações variaram os pesos, o limiar de confiança (conf) e o limiar alto de rastreamento (track_high_thresh); essas variações são indicadas explicitamente.

Tabela 5. Parâmetros do pipeline empregados na avaliação de contagem

Etapa

Parâmetro

Valor

Detecção

Resolução de inferência (imgsz)

960 px

 

Limiar de confiança (conf)

0,10 (principal); 0,22 (comparado)

 

Limiar de IoU

0,50

 

Máximo de detecções por quadro

100

 

Meia precisão (half)

sim

Rastreamento

Algoritmo

ByteTrack

(ByteTrack)

track_high_thresh

0,50 (principal); 0,35 (comparado)

 

new_track_thresh

0,70

 

track_low_thresh

0,10

 

match_thresh

0,85

 

track_buffer

120 quadros

Gerência de IDs

Confirmação temporal (n_init)

2 quadros

 

Paciência de perda (lost_patience)

120 quadros

 

Histórico de posições

30 quadros

Contagem

Linha virtual (vertical)

x=1350

 

Intervalo de proteção (cross_cooldown)

25 quadros

Região de interesse

Modo

máscara

 

Faixa horizontal

x=200 a x=1720

Fonte: elaborada pelo autor (2026).

A Tabela 6 apresenta o resultado comparativo dos modelos avaliados na campanha dos oito vídeos completos.

Tabela 6. Comparação de desempenho dos modelos nos oito vídeos completos (alvo acumulado: 2.400 peixes; 300 por vídeo)

Modelo / Experimento

conf

c@Contagem total

c@Saldo líquido

c@MAE contagem

c@IDs totais

c@MAE IDs por vídeo

Último treino (latest_run_conf10)

0,10

2.404

+4

1,25

2.531

16,38

Último treino (latest_run_conf22)

0,22

2.404

+4

1,50

2.542

17,75

PVC parcial

0,22

2.411

+11

1,38

2.539

17,38

PVC completa – 150 épocas

0,22

2.409

+9

1,38

2.560

20,00

Referência anterior

0,10

2.374

-26

4,25

2.466

8,25

Fonte: elaborada pelo autor (2026).

A Tabela 7 apresenta o detalhamento de contagem e IDs únicos por vídeo para a configuração principal do último treino (latest_run_conf10).

Tabela 7. Detalhamento de contagem e IDs por vídeo no modelo mais recente (latest_run_conf10)

Vídeo

Alvo real

Contagem obtida

Erro absoluto

IDs únicos

2026-07-17 15-26-33.mp4

300

302

+2

315

2026-07-17 15-31-41.mp4

300

300

0

325

2026-07-17 15-33-35.mp4

300

300

0

309

2026-07-17 15-36-50.mp4

300

299

1

312

2026-07-17 15-39-23.mp4

300

304

+4

317

2026-07-17 15-42-47.mp4

300

301

+1

311

2026-07-17 15-50-35.mp4

300

300

0

320

2026-07-17 15-56-45.mp4

300

298

2

322

Total / Média

2.400

2.404

MAE: 1,25

Total: 2.531

Fonte: elaborada pelo autor (2026).

No domínio experimental avaliado, a configuração integrada latest_run_conf10 apresentou resultado promissor: erro médio absoluto (MAE) de 1,25 peixe por vídeo (inferior a 0,5% em relação ao lote de 300 peixes) e contagem exata em três dos oito vídeos. Esse patamar ficou abaixo das metas operacionais reportadas na literatura para contagem automatizada em ambiente produtivo, próximas de 5% (Bukas et al., 2024). A comparação serve como registro da trajetória iterativa de desenvolvimento e da configuração obtida, não como ensaio estatístico independente de superioridade entre modelos.

Considerando a duração acumulada de 8 min 10 s documentada para os oito vídeos e a referência de 2.400 eventos de passagem, a campanha apresentou cadência média de aproximadamente 294 eventos por minuto. Esse valor é compatível com o requisito operacional de aproximadamente 300 indivíduos por minuto. Em paralelo, as médias ponderadas de processamento entre 63,40 e 71,15 FPS igualaram ou superaram a taxa de aquisição de 60 FPS, sem indicar formação de fila computacional no ensaio de processamento. Essas evidências não demonstram, isoladamente, ausência de perda de quadros durante a gravação original, pois não foi produzido um registro específico de descarte de frames na captura.latest_run_conf10, correspondendo a um MAE de IDs de 16,38 por vídeo).

5.3. Estabilidade do Rastreamento e Fragmentação de IDs

Embora o erro de contagem final tenha sido reduzido a níveis mínimos, a Tabela 10 revela uma discrepância importante entre contagem e rastreamento: todos os modelos geraram mais IDs únicos do que o número real de peixes (excesso de 131 IDs no modelo latest_run_conf10, correspondendo a um MAE de IDs de 16,38 por vídeo).

As métricas formais de rastreamento HOTA, MOTA e IDF1 não foram calculadas neste estudo, uma vez que o conjunto de dados não dispõe de anotações temporais com a identidade individual dos peixes ao longo dos quadros. A quantidade excedente de identificadores gerados pelo rastreador foi utilizada apenas como indicador operacional de fragmentação das trajetórias, não devendo ser interpretada como substituta dessas métricas.

Essa diferença é compatível com a fragmentação de trajetórias. Quando um peixe passa por uma região de aglomeração intensa, sofre oclusão temporária por outro indivíduo ou entra parcialmente pela borda da imagem, o rastreador pode perder a associação da caixa e atribuir um novo ID ao mesmo peixe quando ele reaparece. Métodos de rastreamento que exploram a confiança das detecções ao longo de toda a trajetória têm sido propostos para reduzir essas trocas de identidade (Mandel et al., 2023). Em cenários de aglomeração extrema, nos quais a detecção por caixas delimitadoras perde eficácia, a literatura oferece rotas complementares que este trabalho não adotou: detectores adaptativos à oclusão (Li et al., 2022) e a regressão por mapas de densidade (Li et al., 2024), esta voltada à estimativa de fluxo quando a contagem individual se torna inviável. A estratégia aqui foi conter a fragmentação com a ROI interna, a linha virtual e o intervalo de proteção temporal, preservando a contagem individual.

A proximidade entre a contagem obtida (2.404) e a referência (2.400), apesar do excesso de IDs (2.531), é compatível com o papel conjunto da ROI interna, da linha virtual e do intervalo de proteção temporal. Parte dos IDs fragmentados pode ter sido criada antes ou depois da linha ou não ter atendido aos critérios vetoriais completos de cruzamento, sem que cada novo ID fosse convertido em contagem duplicada. Como esses componentes não foram avaliados em uma ablação específica mantendo constantes os demais parâmetros, o resultado não permite atribuir causalmente a nenhum deles, de forma isolada, a compensação da fragmentação.

5.4. Efeito das Bordas e da ROI Interna

As extremidades laterais do enquadramento concentram detecções parciais de peixes que estão entrando ou saindo do campo de visão da câmera. Nessas regiões, apenas uma fração do corpo do animal fica visível, gerando caixas delimitadoras instáveis e quebras de rastreamento.

A adoção da ROI interna (x=200 a x=1720) excluiu essas faixas laterais da análise de inferência e foi associada a menor surgimento de IDs espúrios. No modelo parcial, a configuração interna coincidiu com a redução do MAE de IDs de 15,25 para 10,00 e do MAE de contagem de 1,63 para 1,25. Como essa comparação também envolveu ajustes na resolução e nos limiares de confiança, o ganho deve ser compreendido como resultado do conjunto de otimizações da configuração, sem atribuição causal isolada à ROI.

5.5. Problemas Visuais Residuais: Aglomeração, Oclusão e Respingos

Apesar dos avanços obtidos no controle físico e computacional, a análise qualitativa das sessões revelou limitações visuais remanescentes. A Figura 4 documenta uma passagem com alta proximidade entre indivíduos no vídeo que apresentou o maior erro absoluto de contagem. O quadro ilustra a dificuldade visual, mas não permite identificar isoladamente qual evento ou componente do pipeline produziu a diferença final:

Figura 4. Quadro 3.000 do vídeo 2026-07-17 15-39-23.mp4, com aglomeração, sobreposição de caixas e oclusão parcial entre peixes. O vídeo apresentou contagem de 304 peixes para uma referência de 300; entretanto, o quadro isolado apenas documenta uma condição de maior dificuldade e não identifica causalmente o evento responsável pela diferença final. Fonte: elaborado pelo autor a partir dos vídeos experimentais (2026).

Fonte: elaborada pelo autor (2026).
  1. Aglomeração e oclusão: Em momentos de vazamento rápido da peneira, peixes deslizam sobrepostos. A oclusão pode ocultar contornos corporais, dificultar a separação das caixas e interromper temporariamente trajetórias durante o cruzamento da linha.

  2. Respingos sobre a lente: A movimentação dos peixes na lâmina de água pode projetar gotas em direção à câmera, criando manchas circulares de refração que persistem até a evaporação ou limpeza da lente.

  3. Reflexos e detritos: Pequenas bolhas de ar e ondulações formadas pela bomba de recirculação geram reflexos especulares dinâmicos na água, mitigados parcialmente pelas 191 imagens negativas do dataset.

5.6. Desempenho Computacional em Tempo Real

A Tabela 12 apresenta os resultados de desempenho computacional medidos na máquina de desenvolvimento durante o processamento dos vídeos na resolução de 960 pixels.

Tabela 8. Desempenho computacional dos modelos no ambiente de desenvolvimento

Modelo / Configuração

Resolução

Dispositivo

Faixa de FPS

FPS médio ponderado

PVC completa – 50 épocas

960 px

cuda:0

62,17 – 66,63

64,57

PVC completa – 150 épocas

960 px

cuda:0

65,17 – 68,10

66,75

Último treino (d13f3a conf=0,10)

960 px

cuda:0

56,50 – 67,40

63,40

Último treino (d13f3a conf=0,22)

960 px

cuda:0

66,00 – 73,10

71,15

Fonte: elaborada pelo autor (2026).

Em hardware dotado de GPU de alto desempenho (RTX 3070), as médias ponderadas medidas ficaram acima de 60 FPS. A menor taxa instantânea registrada foi 56,50 FPS; por isso, os resultados sustentam a viabilidade média de processamento na cadência da câmera, mas não uma garantia de que cada instante permaneceu acima de 60 FPS.

Por outro lado, ensaios preliminares em dispositivos de borda Raspberry Pi 3B+ e Raspberry Pi 4 indicaram desempenho insatisfatório para a configuração atual, com taxas de quadros muito abaixo das obtidas em GPU e insuficientes para manter a integridade do rastreamento ByteTrack. Esses ensaios tiveram caráter exploratório e não foram registrados em relatório sistemático de benchmark; um levantamento controlado em dispositivo de borda permanece como trabalho futuro. Assim, a implantação em borda permanece como objetivo futuro condicionado à otimização TensorRT/ONNX ou ao uso de aceleradores dedicados (como NVIDIA Jetson). Nessa direção, arquiteturas leves projetadas para dispositivos de borda têm sido propostas para detecção em ambientes aquícolas (Jiang et al., 2025; Jiang et al., 2024).

6. LIMITAÇÕES DO ESTUDO

Este estudo apresenta seis limitações principais que devem orientar a interpretação dos resultados:

  1. Reutilização do lote animal: Os oito vídeos foram gravados reutilizando o mesmo lote de 300 peixes de Astyanax lacustris. O total de 2.400 eventos avalia a repetibilidade da contagem mecânica, mas não a variabilidade morfológica de 2.400 indivíduos distintos.

  2. Dependência entre desenvolvimento e avaliação: Os conjuntos de treinamento, validação e teste de imagens foram formados com divisões estáveis e sem sobreposição de arquivos entre esses splits. Entretanto, os oito vídeos completos usados na contagem também originaram parte dos frames empregados no desenvolvimento do detector. Como a avaliação percorre os vídeos completos, ela inclui esses instantes e compartilha a mesma canaleta, o mesmo equipamento e o mesmo lote. O MAE de 1,25 caracteriza, portanto, o desempenho in-domain da configuração obtida e não uma validação independente nem uma estimativa de generalização para outros lotes, espécies ou ambientes.

  3. Ausência de ablação isolada de negativos: A inclusão de 24,6% de imagens negativas foi uma das mudanças do processo iterativo, mas não foi realizada uma ablação estrita mantendo todos os demais hiperparâmetros constantes para isolar seu ganho percentual exato.

  4. Ausência de ground truth temporal: Não foram produzidas anotações persistentes da identidade de cada peixe quadro a quadro; portanto, HOTA, MOTA e IDF1 não puderam ser calculadas. O excesso de IDs é apenas um indicador operacional de fragmentação.

  5. Fragmentação de trajetórias: O surgimento de 131 IDs excedentes na configuração principal indica que o rastreamento ainda sofre perdas temporárias de identidade em aglomerações e oclusões.

  6. Restrição ao ambiente GPU: A viabilidade computacional foi comprovada exclusivamente em desktop com GPU dedicada, sem validação funcional em dispositivos de borda de baixo custo.

7. CONCLUSÃO

Este capítulo apresentou a concepção, implementação e avaliação do componente de software para detecção, rastreamento e contagem automatizada de peixes em vídeos de passagem por canaleta. A solução integrou a família YOLO de detectores, o algoritmo ByteTrack para associação temporal, ROI interna ajustável, filtragem de IDs e regra vetorial de cruzamento de linha virtual.

Na avaliação in-domain sobre oito vídeos completos (2.400 eventos de passagem), a configuração integrada latest_run_conf10 alcançou erro médio absoluto (MAE) de contagem de 1,25 peixe por vídeo, contabilizando 2.404 peixes no total acumulado (saldo de +4 em relação à referência). O detector atingiu mAP@0,50 de 0,9687 e o pipeline operou, em média, acima de 60 quadros por segundo em GPU dedicada. A cadência média de aproximadamente 294 eventos por minuto foi compatível com o requisito operacional de aproximadamente 300 indivíduos por minuto, sem que esse cálculo seja interpretado como comprovação de ausência de perda de quadros na captura. Esses indicadores são específicos da campanha e devem ser interpretados como demonstração do processo no cenário estudado.

Os resultados mostram que, nesta configuração e nestes vídeos, a fragmentação de trajetórias não foi acompanhada por aumento proporcional da contagem final. Esse comportamento é compatível com a atuação conjunta da ROI interna e das regras de cruzamento com intervalo de proteção, mas não permite estabelecer causalidade sem uma ablação controlada.

A contribuição metodológica do capítulo é o ciclo reprodutível de melhoria que conecta aquisição controlada, extração e curadoria de frames, divisão rastreável dos dados, treinamento, execução em vídeos completos e análise dos erros. A aplicação a Astyanax lacustris demonstra que esse processo pode produzir resultados promissores e ser iterado para aperfeiçoar a contagem; sua aplicação a outros domínios requer dados representativos e nova avaliação.

Como trabalhos futuros, recomenda-se:

  • Avaliar o pipeline em vídeos gravados com lotes inéditos de peixes e diferentes espécies/tamanhos;

  • Otimizar e quantizar o modelo (via TensorRT ou OpenVINO) para execução em hardware de borda;

  • Desenvolver mecanismos de separação física ou pré-filtragem para mitigar a aglomeração intensa na canaleta.

REFERÊNCIAS BIBLIOGRÁFICAS

BARBEDO, Jayme Garcia Arnal. A Review on the Use of Computer Vision and Artificial Intelligence for Fish Recognition, Monitoring, and Management. Fishes, v. 7, n. 6, p. 335, 2022. DOI: 10.3390/fishes7060335.

BRADSKI, Gary. The OpenCV Library. Dr. Dobb’s Journal of Software Tools, v. 25, n. 11, p. 120–125, 2000.

BUKAS, C. et al. Robust deep learning based shrimp counting in an industrial farm setting. Journal of Cleaner Production, v. 468, p. 143024, 2024. DOI: 10.1016/j.jclepro.2024.143024.

CABRAL, I. T.; MARTINS, Y. S. Detecção de peixes utilizando redes neurais convolucionais. Rio Verde: [s. n.], 2023. Trabalho de Conclusão de Curso.

DAWKINS, M. et al. FishTrack23: An ensemble underwater dataset for multi-object tracking. In: IEEE/CVF Winter Conference on Applications of Computer Vision (WACV). [S. l.: s. n.], 2024.

JIANG, Hanyu et al. Mobile-YOLO: A Lightweight Object Detection Algorithm for Four Categories of Aquatic Organisms. Fishes, v. 10, n. 7, p. 348, 2025. DOI: 10.3390/fishes10070348.

JIANG, Linhua et al. Improved YOLOv7-TINY Network for Sea Bream Detection. Journal of Computing and Electronic Information Management, 2024. DOI: 10.54097/c6kqnn36.

KANDIMALLA, V. et al. Automated detection, classification and counting of fish in fish passages with deep learning. Frontiers in Marine Science, v. 8, 2022. DOI: 10.3389/fmars.2021.823173.

LI, H. et al. Robust detection of farmed fish by fusing YOLOv5 with DCM and ATM. Aquacultural Engineering, v. 99, p. 102301, 2022. DOI: 10.1016/j.aquaeng.2022.102301.

LI, Ximing et al. LDNet: High Accuracy Fish Counting Framework using Limited Training Samples with Density Map Generation Network. Journal of King Saud University – Computer and Information Sciences, v. 36, n. 7, p. 102143, 2024. DOI: 10.1016/j.jksuci.2024.102143.

LIN, F. et al. Machine vision approach for monitoring and quantifying fish school using DVE-YOLO. Ecological Indicators, 2024. DOI: 10.1016/j.ecolind.2024.112769.

MANDEL, T. et al. Detection confidence driven multi-object tracking to recover reliable tracks from unreliable detections. Pattern Recognition, v. 135, p. 109107, 2023. DOI: 10.1016/j.patcog.2022.109107.

RAMÍREZ, Sebastián. FastAPI. Documentação oficial do software. 2018. Disponível em: https://fastapi.tiangolo.com/. Acesso em: 27 jul. 2026.

REDMON, Joseph et al. You Only Look Once: Unified, Real-Time Object Detection. [S. l.: s. n.], 2016. arXiv: 1506.02640.

SALEH, Alzayat; SHEAVES, Marcus; RAHIMI AZGHADI, Mostafa. Computer vision and deep learning for fish classification in underwater habitats: A survey. Fish and Fisheries, v. 23, n. 4, p. 977–999, 2022. DOI: 10.1111/faf.12666.

ULTRALYTICS. Ultralytics YOLO Documentation. [S. l.: s. n.], 2025. Disponível em: https://docs.ultralytics.com/.

VIJIYAKUMAR, K.; GOVINDASAMY, V.; AKILA, V. An effective object detection and tracking using automated image annotation with Inception-based Faster R-CNN model. International Journal of Cognitive Computing in Engineering, v. 5, p. 343–356, 2024. DOI: 10.1016/j.ijcce.2024.07.006.

ZHANG, Yifu et al. ByteTrack: Multi-Object Tracking by Associating Every Detection Box. In: EUROPEAN Conference on Computer Vision (ECCV). [S. l.: s. n.], 2022.


APÊNDICE A – DOCUMENTAÇÃO DETALHADA DE ENGENHARIA

Este apêndice reúne as especificações detalhadas deslocadas do corpo do artigo para preservar a continuidade da argumentação.

As tabelas mantêm a numeração original para conservar as remissões feitas no texto.

Tabela 1. Requisitos funcionais do sistema de software de contagem

Grupo

Requisito funcional

Papel na solução

Núcleo da contagem

Aquisição e processamento de vídeo

Ler fluxos contínuos de câmera ou arquivos gravados

Núcleo da contagem

Detecção por quadro

Localizar peixes e fornecer caixas delimitadoras com confiança

Núcleo da contagem

Rastreamento temporal

Associar detecções entre quadros e manter IDs persistentes

Núcleo da contagem

Contagem por linha virtual

Registrar eventos quando uma trajetória válida cruza a linha

Núcleo da contagem

Interface e controle básico

Exibir contagem em tempo real e permitir início/parada

Apoio experimental

Extração inteligente de frames

Selecionar quadros representativos para anotação

Apoio experimental

Pré-anotação assistida

Integrar servidor de inferência com Label Studio

Apoio experimental

Preparação e estratificação

Organizar conjuntos de treino/validação/teste com splits fixos

Apoio experimental

Orquestração de treinos

Executar treinamentos por sementes e gerar relatórios

Operação e auditoria

Região de Interesse (ROI)

Restringir o processamento à área útil da canaleta

Operação e auditoria

Ajuste de linha de contagem

Configurar posição e sentido de cruzamento na cena

Operação e auditoria

Gravação e metadados

Salvar vídeos brutos e registros em JSONL por quadro

Fonte: elaborada pelo autor (2026).

Tabela 2. Requisitos não funcionais e critérios de avaliação

Requisito

Descrição técnica

Forma de avaliação

Acurácia de contagem

Minimizar o erro absoluto em relação à referência real

MAE por vídeo e saldo acumulado

Robustez visual

Tolerar reflexos, respingos, sombras e oclusões parciais

Desempenho nos 8 vídeos experimentais

Eficiência computacional

Executar inferência e tracking em tempo real

FPS médio e tempo de processamento por quadro

Reprodutibilidade

Permitir repetição idêntica de treinos e avaliações

Splits com semente fixa e relatórios CSV

Auditabilidade

Garantir verificação posterior de cada evento contabilizado

Metadados JSONL e vídeos brutos gravados

Configurabilidade

Permitir alteração de ROI, linha e limiares sem alterar código

Arquivos de configuração YAML

Fonte: elaborada pelo autor (2026).

Tabela 3. Módulos integrantes da arquitetura de software

Módulo

Responsabilidade principal

Classe / Elemento base

Fonte de Vídeo

Leitura sequencial de frames da câmera ou de arquivo MP4

VideoSource / cv2.VideoCapture

Gerenciador de ROI

Aplicação de polígono e recorte (crop/mask) para inferência

ROIManager

Detector de Objetos

Inferência de caixas delimitadoras e níveis de confiança

YOLODetector / Ultralytics

Rastreador Temporal

Associação de detecções entre quadros consecutivos

ByteTracker

Gerenciador de IDs

Confirmação temporal, filtragem por tamanho e controle de expiração

IDManager

Contador por Linha

Detecção de cruzamento vetorial em linha virtual de chegada

LineCounter

Interface Web

Servidor REST e streaming MJPEG para monitoramento remoto

FastAPI / uvicorn

Gravador e Auditoria

Persistência de vídeo bruto e metadados por quadro em JSONL

SessionRecorder

Configuração

Centralização de parâmetros em arquivos de especificação YAML

AppConfig

Fonte: elaborada pelo autor (2026).

Tabela 4. Etapas do fluxo experimental organizadas pelo Dataset Studio

Etapa

Operação principal

Evidência preservada

Origem

Cadastro dos vídeos e das unidades de captura

Identidade das mídias, hashes e configuração de extração

Extração

Amostragem uniforme ou assistida e seleção de frames

Manifesto de frames e relação com o vídeo de origem

Anotação

Integração com o Label Studio e recuperação das revisões

Tarefas, exportações e revisão selecionada

Versionamento

Materialização das imagens e rótulos e divisão agrupada

Manifesto, configuração, relatório de construção e hashes

Treinamento

Fixação da versão, do peso inicial e dos hiperparâmetros

Receita, log, métricas, pesos e cópia da proveniência do dataset

Avaliação

Aplicação do melhor checkpoint ao conjunto de teste de imagens

Métricas e artefatos associados à execução de treinamento

Fonte: elaborada pelo autor (2026).


1 Mestrando no Programa de Pós-Graduação em Engenharia Aplicada e Sustentabilidade, Instituto Federal Goiano – Campus Rio Verde. Servidor do IFG – Campus Itumbiara (Tecnologia da Informação). 

2 Orientador. Prof. Dr., Programa de Pós-Graduação em Engenharia Aplicada e Sustentabilidade, Instituto Federal Goiano – Campus Rio Verde.

3 Coorientador. Prof. Dr., Programa de Pós-Graduação em Engenharia Aplicada e Sustentabilidade, Instituto Federal Goiano – Campus Rio Verde. E-mail: [clique para visualizar o e-mail]acesse o artigo original para visualizar o e-mail.