Este projeto automatiza a modelagem de ameaças em diagramas de arquitetura:
- Detecta componentes na imagem com YOLO (Ultralytics)
- Classifica os componentes detectados em classes
- Usa LLM + RAG (JSONs por classe) para gerar análise STRIDE
- Gera um relatório PDF por imagem
- Repositório (este GitHub)
- Vídeo (até 15 min) explicando solução e execução
- Relatórios gerados (PDF/CSV)
scripts/— pipeline e notebooks (entrada principal:main.ipynb)rag_documents/— base RAG em JSON (1 arquivo por classe)imagens/imagens_source/— imagens de entrada (diagramas)imagens/imagens_yolo_*— imagens de saída com bounding boxes (evidência)reports/— saídas finais e arquivos de apoioyolo_detections.csv/yolo_detections_classified.csvcomponent_classes.xlsx(mapeamento id -> classe)relatorio_stride_<nome>.pdf
models/— (opcional) peso do YOLObest.pt
- Conta Google (Drive)
- Chave da OpenAI configurada como Secret no Colab:
OPENAI_API_KEY
- Faça upload da pasta do projeto para o seu Drive em:
MyDrive/Tech Challenge 5/ - Abra no Colab:
scripts/main.ipynb - No Colab, adicione o Secret:
- Name:
OPENAI_API_KEY - Value: sua chave
- Name:
- Execute todas as células.
reports/yolo_detections.csvreports/yolo_detections_classified.csvreports/relatorio_stride_<imagem>.pdf
No notebook scripts/main.ipynb, a chave é lida via Secret do Colab e setada em variável de ambiente:
OPENAI_API_KEY
Para cada imagem:
- YOLO detecta componentes e gera CSV de detecções
- Um mapeamento (
component_classes.xlsx) associa cada componente a uma classe - Para cada classe encontrada, o pipeline:
- carrega o JSON RAG correspondente em
rag_documents/ - chama o LLM pedindo um JSON PT-BR com 6 itens STRIDE (ordem fixa)
- carrega o JSON RAG correspondente em
- O PDF final é montado via ReportLab
Por limite de tamanho e por não ser necessário para execução do pipeline, estes itens não ficam no GitHub:
- Dataset original (Kaggle) usado como base
yolo_dataset/(imagens/labels) usado no treino do YOLO
📌 Link do Drive (preencher):
- Dataset (Kaggle exportado / pasta
dataset/): [COLE_AQUI_O_LINK_DO_DRIVE] - YOLO dataset (pasta
yolo_dataset/comdata.yaml): [COLE_AQUI_O_LINK_DO_DRIVE]
Observação: os pesos e resultados do treino (curvas/matrizes +
best.pt) já estão no repositório emresultados_yolo/.
O pipeline usa o peso fine-tuned:
resultados_yolo/fine_tuning_train/weights/best.pt
Se você mover os arquivos de lugar, ajuste o caminho no notebook scripts/main.ipynb.
- Link: [COLE_AQUI_O_LINK_DO_VIDEO]
- SEU NOME
- NOME DO COLEGA 1
- NOME DO COLEGA 2