Skip to content

Repository files navigation

Submódulo de Super-Resolução (SR)

Este submódulo é responsável pelo pipeline de Super-Resolução do projeto global de detecção de objetos. Ele atua como uma etapa modular de pré-processamento visual, utilizando a rede neural Real-ESRGAN (x4) para ampliar a resolução das imagens do dataset, readequar geometricamente as anotações no formato COCO e avaliar o impacto analítico dessas transições no desempenho dos detectores.


🛠️ Instalação e Pré-requisitos

Para garantir que o modelo utilize aceleração por hardware (GPU/CUDA), a instalação do PyTorch deve ser feita apontando para os binários corretos da NVIDIA antes de instalar as demais dependências.

  1. Instale o PyTorch com suporte a GPU (CUDA 11.8):
   pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url [https://download.pytorch.org/whl/cu118](https://download.pytorch.org/whl/cu118)
  1. Instale as demais dependências do submódulo:
    Instale as demais dependências do submódulo:

🚀 Como Rodar o Pipeline

O ecossistema deste submódulo é composto por 3 scripts principais que devem ser executados na ordem abaixo:

1. Upscaling das Imagens (super_res_dataset.py) Este script varre recursivamente a pasta de imagens de baixa resolução (input_root), aplica o modelo deep learning Real-ESRGAN e gera as novas imagens ampliadas, preservando a estrutura original de subpastas.

  • Como usar: Ajuste os caminhos de entrada/saída no bloco # --- CONFIGURAÇÕES --- do arquivo e execute:
   python super_res_dataset.py

2. Readequação dos Rótulos COCO (scale_coco_superres.py) Após ampliar as imagens, as coordenadas espaciais das Bounding Boxes antigas ficam defasadas. Este script lê os arquivos JSON (padrão COCO), multiplica os eixos e dimensões das caixas (bbox) pelo fator de amplicação da imagem e corrige quadraticamente a área (area).

  • Como usar: Ajuste os caminhos de entrada/saída no bloco # --- CONFIGURAÇÕES --- do arquivo e execute:
   python scale_coco_superres.py

3. Avaliação Comparativa de Transição (compare_predictions.py)

Script científico de diagnóstico. Embora seja utilizado no pipeline para cruzar os gabaritos e as predições do modelo Baseline (imagens normais) contra o modelo com Super-Resolução, ele é altamente versátil e pode ser facilmente adaptado para comparar o desempenho de quaisquer dois modelos de detecção. O script projeta as caixas de volta ao mesmo espaço dimensional para calcular o IoU cruzado e mapeia minuciosamente o comportamento de cada detector.

O grande diferencial desta ferramenta é a análise de transição de estado: ela calcula a quantidade de Verdadeiros Positivos (TP), Falsos Positivos (FP) e Falsos Negativos (FN) que foram mantidos, criados ou eliminados. Isso permite concluir analiticamente se as redes comparadas estão acertando e errando exatamente os mesmos alvos ou se possuem comportamentos e vieses de detecção distintos.

  • Como usar: Configure os caminhos dos 4 arquivos JSON (2 gabaritos e 2 predições) no PAINEL DE CONTROLE ao final do arquivo e execute:
   python compare_predictions.py
  • Saídas e Diagnóstico Visual::
    • Uma planilha .csv consolidando as métricas detalhadas por sequência de vídeo.
    • Arquivos de texto (.txt) contendo as listas com os frames críticos categorizados por tipo de transição (ex: frames onde houve ganhos de TP ou criação de novos FP). Atenção: Estas listas devem ser utilizadas como base para saber quais frames devem ser analisados visualmente (após passá-los por um script que desenhe as bounding boxes).

4. Integração com o Pipeline Global de Treinamento (Nested K-Fold)

Após gerar as imagens em alta resolução e readequar o arquivo coco_json, o dataset super-resolvido precisa ser formatado para o treinamento na YOLO. Como esta etapa utiliza os scripts globais de tratamento de dados do projeto, certifique-se de retornar à raiz do repositório principal e executar o fluxo abaixo apontando para a sua nova pasta de Super-Resolução:

  1. Conversão COCO para YOLO: Utilize o script de conversão do repositório global (convert_json2yolo.py) para transformar o JSON readequado (passo 2) em arquivos .txt individuais por frame.
  2. Geração de Backgrounds (Negativos): Gere os arquivos .txt de anotações no formato YOLO vazios para os frames sem objetos, mantendo a integridade para a avaliação de Falsos Positivos. Use o arquivo create_empty_files.py
  3. Fatiamento (Tiling): Rode o script de recorte (slice_all_videos.sh) apontando para as imagens SR e as labels YOLO recém-criadas.
  4. Nested K-Fold: Execute a separação de conjuntos (gera_splits.sh), gerando as listas de treino, validação e teste tanto para as imagens inteiras quanto para os recortes.
  5. Geração dos JSONs Finais: Por fim, rode a conversão de volta para COCO (make_20_coco_from_splits.sh) utilizando os splits gerados no passo anterior. Estes serão os arquivos definitivos usados para o treinamento e a validação do modelo.

🎯 Próximos Passos e Trabalhos Futuros

Com o pipeline de dados e os submódulos consolidados, o projeto possui as seguintes etapas mapeadas para a continuidade da pesquisa e experimentação:

  • Conclusão e Análise do Experimento com SR (Escala 4x): A base de dados submetida à Super-Resolução (que aplica um fator de 4x na largura e 4x na altura, resultando em uma área em pixels 16 vezes maior) já está gerada e pronta. O próximo passo imediato é conduzir o treinamento do modelo com este dataset até o fim e realizar uma análise rigorosa dos resultados, quantificando o impacto real da SR nas métricas de detecção (como Precision e Recall) para os alvos reduzidos.
  • Testes com Novas Taxas de Proporção: Explorar diferentes fatores de escala na arquitetura de Super-Resolução em substituição ao 4x padrão (ex: 2x, 8x ou abordagens fracionadas). O intuito é realizar um estudo de ablação para encontrar o "ponto ótimo" (sweet spot) entre o aumento de acurácia na detecção e o custo computacional (tempo de processamento e peso em disco) gerado pelo redimensionamento das imagens.

📂 Estrutura de Arquivos do Submódulo

super-resolution/
├── README.md               # Este arquivo de documentação
├── requirements.txt        # Dependências de bibliotecas
├── .gitignore              # Filtro de arquivos para o Git
├── prepare_images.py       # Script de inferência da Real-ESRGAN
├── scale_annotations.py    # Script de ajuste do formato COCO
└── evaluate_transition.py  # Script de avaliação e métricas comparativas

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages