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.
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.
- 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)- Instale as demais dependências do submódulo:
Instale as demais dependências do submódulo: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.py2. 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.pyScript 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 CONTROLEao 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).
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:
- 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.txtindividuais por frame. - Geração de Backgrounds (Negativos): Gere os arquivos
.txtde anotações no formato YOLO vazios para os frames sem objetos, mantendo a integridade para a avaliação de Falsos Positivos. Use o arquivocreate_empty_files.py - Fatiamento (Tiling): Rode o script de recorte (
slice_all_videos.sh) apontando para as imagens SR e as labels YOLO recém-criadas. - 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. - 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.
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.
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