界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
设计与创意 · SKILL.md

senior-computer-vision

senior-computer-vision

【设计与创意】Skill de engenharia de visão computacional para detecção de objetos, segmentação de imagens e sistemas de IA visual. Cobre arquiteturas CNN e Vision Transformer, detecção YOLO/Faster R-CNN/DETR, segmentação Mask R-CNN/SAM e implantação em produção com ONNX/TensorRT. Inclui frameworks PyTorch, torchvision, Ultralytics, Detectron2 e MMDetection. Use qu…

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: "senior-computer-vision" description: "Skill de engenharia de visão computacional para detecção de objetos, segmentação de imagens e sistemas de IA visual. Cobre arquiteturas CNN e Vision Transformer, detecção YOLO/Faster R-CNN/DETR, segmentação Mask R-CNN/SAM e implantação em produção com ONNX/TensorRT. Inclui frameworks PyTorch, torchvision, Ultralytics, Detectron2 e MMDetection. Use quando construir pipelines de detecção, treinar modelos personalizados, otimizar inferência ou implantar sistemas de visão." agents:

  • claude-code

Engenheiro Sênior de Visão Computacional

Skill de engenharia de visão computacional em produção para detecção de objetos, segmentação de imagens e implantação de sistemas de IA visual.

Sumário

Início Rápido

# Gerar configuração de treinamento para YOLO ou Faster R-CNN
python scripts/vision_model_trainer.py models/ --task detection --arch yolov8

# Analisar modelo para oportunidades de otimização (quantização, pruning)
python scripts/inference_optimizer.py model.pt --target onnx --benchmark

# Construir pipeline de dataset com augmentações
python scripts/dataset_pipeline_builder.py images/ --format coco --augment

Especialização Principal

Esta skill fornece orientação sobre:

  • Detecção de Objetos: Família YOLO (v5-v11), Faster R-CNN, DETR, RT-DETR
  • Segmentação de Instâncias: Mask R-CNN, YOLACT, SOLOv2
  • Segmentação Semântica: DeepLabV3+, SegFormer, SAM (Segment Anything)
  • Classificação de Imagens: ResNet, EfficientNet, Vision Transformers (ViT, DeiT)
  • Análise de Vídeo: Rastreamento de objetos (ByteTrack, SORT), reconhecimento de ação
  • Visão 3D: Estimativa de profundidade, processamento de nuvem de pontos, NeRF
  • Implantação em Produção: ONNX, TensorRT, OpenVINO, CoreML

Tech Stack

CategoriaTecnologias
FrameworksPyTorch, torchvision, timm
DetecçãoUltralytics (YOLO), Detectron2, MMDetection
Segmentaçãosegment-anything, mmsegmentation
OtimizaçãoONNX, TensorRT, OpenVINO, torch.compile
Processamento de ImagemOpenCV, Pillow, albumentations
AnotaçãoCVAT, Label Studio, Roboflow
Rastreamento de ExperimentosMLflow, Weights & Biases
ServingTriton Inference Server, TorchServe

Fluxo de Trabalho 1: Pipeline de Detecção de Objetos

Use este fluxo de trabalho ao construir um sistema de detecção de objetos do zero.

Passo 1: Definir Requisitos de Detecção

Analisar os requisitos da tarefa de detecção:

Análise de Requisitos de Detecção:
- Objetos-alvo: [listar classes específicas a detectar]
- Requisito de tempo real: [sim/não, FPS alvo]
- Prioridade de acurácia: [trade-off velocidade vs acurácia]
- Alvo de implantação: [GPU cloud, dispositivo edge, mobile]
- Tamanho do dataset: [número de imagens, anotações por classe]

Passo 2: Selecionar Arquitetura de Detecção

Escolher arquitetura com base nos requisitos:

RequisitoArquitetura RecomendadaPor que
Tempo real (>30 FPS)YOLOv8/v11, RT-DETRSingle-stage, otimizado para velocidade
Alta acuráciaFaster R-CNN, DINOTwo-stage, melhor localização
Objetos pequenosYOLO + SAHI, Faster R-CNN + FPNDetecção multi-escala
Implantação edgeYOLOv8n, MobileNetV3-SSDArquiteturas leves
Baseado em TransformerDETR, DINO, RT-DETREnd-to-end, sem NMS necessário

Passo 3: Preparar Dataset

Converter anotações para o formato necessário:

# Formato COCO (recomendado)
python scripts/dataset_pipeline_builder.py data/images/ \
    --annotations data/labels/ \
    --format coco \
    --split 0.8 0.1 0.1 \
    --output data/coco/

# Verificar dataset
python -c "from pycocotools.coco import COCO; coco = COCO('data/coco/train.json'); print(f'Imagens: {len(coco.imgs)}, Categorias: {len(coco.cats)}')"

Passo 4: Configurar Treinamento

Gerar configuração de treinamento:

# Para Ultralytics YOLO
python scripts/vision_model_trainer.py data/coco/ \
    --task detection \
    --arch yolov8m \
    --epochs 100 \
    --batch 16 \
    --imgsz 640 \
    --output configs/

# Para Detectron2
python scripts/vision_model_trainer.py data/coco/ \
    --task detection \
    --arch faster_rcnn_R_50_FPN \
    --framework detectron2 \
    --output configs/

Passo 5: Treinar e Validar

# Treinamento Ultralytics
yolo detect train data=data.yaml model=yolov8m.pt epochs=100 imgsz=640

# Treinamento Detectron2
python train_net.py --config-file configs/faster_rcnn.yaml --num-gpus 1

# Validar no conjunto de teste
yolo detect val model=runs/detect/train/weights/best.pt data=data.yaml

Passo 6: Avaliar Resultados

Métricas principais a analisar:

MétricaMetaDescrição
mAP@50>0.7Mean Average Precision com IoU 0.5
mAP@50:95>0.5Métrica primária COCO
Precisão>0.8Poucos falsos positivos
Recall>0.8Poucas detecções perdidas
Tempo de inferência<33msPara 30 FPS em tempo real

Fluxo de Trabalho 2: Otimização e Implantação de Modelo

Use este fluxo de trabalho ao preparar um modelo treinado para implantação em produção.

Passo 1: Avaliar Desempenho de Baseline

# Medir desempenho atual do modelo
python scripts/inference_optimizer.py model.pt \
    --benchmark \
    --input-size 640 640 \
    --batch-sizes 1 4 8 16 \
    --warmup 10 \
    --iterations 100

Saída esperada:

Desempenho Baseline (PyTorch FP32):
- Batch 1: 45.2ms (22.1 FPS)
- Batch 4: 89.4ms (44.7 FPS)
- Batch 8: 165.3ms (48.4 FPS)
- Memória: 2.1 GB
- Parâmetros: 25.9M

Passo 2: Selecionar Estratégia de Otimização

Meta de ImplantaçãoCaminho de Otimização
GPU NVIDIA (cloud)PyTorch → ONNX → TensorRT FP16
GPU NVIDIA (edge)PyTorch → TensorRT INT8
CPU IntelPyTorch → ONNX → OpenVINO
Apple SiliconPyTorch → CoreML
CPU genéricoPyTorch → ONNX Runtime
MobilePyTorch → TFLite ou ONNX Mobile

Passo 3: Exportar para ONNX

# Exportar com tamanho de batch dinâmico
python scripts/inference_optimizer.py model.pt \
    --export onnx \
    --input-size 640 640 \
    --dynamic-batch \
    --simplify \
    --output model.onnx

# Verificar modelo ONNX
python -c "import onnx; model = onnx.load('model.onnx'); onnx.checker.check_model(model); print('Modelo ONNX válido')"

Passo 4: Aplicar Quantização (Opcional)

Para quantização INT8 com calibração:

# Gerar dataset de calibração
python scripts/inference_optimizer.py model.onnx \
    --quantize int8 \
    --calibration-data data/calibration/ \
    --calibration-samples 500 \
    --output model_int8.onnx

Análise do impacto da quantização:

PrecisãoTamanhoVelocidadeQueda de Acurácia
FP32100%1x0%
FP1650%1.5-2x<0.5%
INT825%2-4x1-3%

Passo 5: Converter para Runtime Alvo

# TensorRT (GPU NVIDIA)
trtexec --onnx=model.onnx --saveEngine=model.engine --fp16

# OpenVINO (Intel)
mo --input_model model.onnx --output_dir openvino/

# CoreML (Apple)
python -c "import coremltools as ct; model = ct.convert('model.onnx'); model.save('model.mlpackage')"

Passo 6: Avaliar Desempenho do Modelo Otimizado

python scripts/inference_optimizer.py model.engine \
    --benchmark \
    --runtime tensorrt \
    --compare model.pt

Speedup esperado:

Resultados de Otimização:
- Original (PyTorch FP32): 45.2ms
- Otimizado (TensorRT FP16): 12.8ms
- Speedup: 3.5x
- Mudança de acurácia: -0.3% mAP

Fluxo de Trabalho 3: Preparação de Dataset Personalizado

Use este fluxo de trabalho ao preparar um dataset de visão computacional para treinamento.

Passo 1: Auditar Dados Brutos

# Analisar dataset de imagens
python scripts/dataset_pipeline_builder.py data/raw/ \
    --analyze \
    --output analysis/

O relatório de análise inclui:

Análise do Dataset:
- Total de imagens: 5.234
- Tamanhos de imagem: 640x480 a 4096x3072 (variável)
- Formatos: JPEG (4.891), PNG (343)
- Corrompidos: 12 arquivos
- Duplicatas: 45 pares

Análise de Anotações:
- Formato detectado: Pascal VOC XML
- Total de anotações: 28.456
- Classes: 5 (carro, pessoa, bicicleta, cachorro, gato)
- Distribuição: carro (12.340), pessoa (8.234), bicicleta (3.456), cachorro (2.890), gato (1.536)
- Imagens vazias: 234

Passo 2: Limpar e Validar

# Remover imagens corrompidas e duplicadas
python scripts/dataset_pipeline_builder.py data/raw/ \
    --clean \
    --remove-corrupted \
    --remove-duplicates \
    --output data/cleaned/

Passo 3: Converter Formato de Anotação

# Converter VOC para formato COCO
python scripts/dataset_pipeline_builder.py data/cleaned/ \
    --annotations data/annotations/ \
    --input-format voc \
    --output-format coco \
    --output data/coco/

Conversões de formato suportadas:

DePara
Pascal VOC XMLCOCO JSON
YOLO TXTCOCO JSON
COCO JSONYOLO TXT
LabelMe JSONCOCO JSON
CVAT XMLCOCO JSON

Passo 4: Aplicar Augmentações

# Gerar configuração de augmentação
python scripts/dataset_pipeline_builder.py data/coco/ \
    --augment \
    --aug-config configs/augmentation.yaml \
    --output data/augmented/

Augmentações recomendadas para detecção:

# configs/augmentation.yaml
augmentations:
  geometric:
    - horizontal_flip: { p: 0.5 }
    - vertical_flip: { p: 0.1 }  # Apenas se invariante à orientação
    - rotate: { limit: 15, p: 0.3 }
    - scale: { scale_limit: 0.2, p: 0.5 }

  color:
    - brightness_contrast: { brightness_limit: 0.2, contrast_limit: 0.2, p: 0.5 }
    - hue_saturation: { hue_shift_limit: 20, sat_shift_limit: 30, p: 0.3 }
    - blur: { blur_limit: 3, p: 0.1 }

  advanced:
    - mosaic: { p: 0.5 }  # Mosaico estilo YOLO
    - mixup: { p: 0.1 }   # Mistura de imagens
    - cutout: { num_holes: 8, max_h_size: 32, max_w_size: 32, p: 0.3 }

Passo 5: Criar Divisões Treino/Val/Teste

python scripts/dataset_pipeline_builder.py data/augmented/ \
    --split 0.8 0.1 0.1 \
    --stratify \
    --seed 42 \
    --output data/final/

Diretrizes de estratégia de divisão:

Tamanho do DatasetTreinoValTeste
<1.000 imagens70%15%15%
1.000-10.00080%10%10%
>10.00090%5%5%

Passo 6: Gerar Configuração do Dataset

# Para Ultralytics YOLO
python scripts/dataset_pipeline_builder.py data/final/ \
    --generate-config yolo \
    --output data.yaml

# Para Detectron2
python scripts/dataset_pipeline_builder.py data/final/ \
    --generate-config detectron2 \
    --output detectron2_config.py

Guia de Seleção de Arquitetura

Arquiteturas de Detecção de Objetos

ArquiteturaVelocidadeAcuráciaMelhor Para
YOLOv8n1.2ms37.3 mAPEdge, mobile, tempo real
YOLOv8s2.1ms44.9 mAPVelocidade/acurácia balanceados
YOLOv8m4.2ms50.2 mAPUso geral
YOLOv8l6.8ms52.9 mAPAlta acurácia
YOLOv8x10.1ms53.9 mAPAcurácia máxima
RT-DETR-L5.3ms53.0 mAPTransformer, sem NMS
Faster R-CNN R5046ms40.2 mAPTwo-stage, alta qualidade
DINO-4scale85ms49.0 mAPSOTA transformer

Arquiteturas de Segmentação

ArquiteturaTipoVelocidadeMelhor Para
YOLOv8-segInstância4.5msSegmentação de instância em tempo real
Mask R-CNNInstância67msMáscaras de alta qualidade
SAMGuiado50msSegmentação zero-shot
DeepLabV3+Semântica25msAnálise de cena
SegFormerSemântica15msSegmentação semântica eficiente

Trade-offs CNN vs Vision Transformer

AspectoCNN (YOLO, R-CNN)ViT (DETR, DINO)
Dados de treinamento necessários1K-10K imagens10K-100K+ imagens
Tempo de treinamentoRápidoLento (precisa de mais épocas)
Velocidade de inferênciaMais rápidoMais lento
Objetos pequenosBom com FPNPrecisa multi-escala
Contexto globalLimitadoExcelente
Codificação posicionalImplícitaExplícita

Documentação de Referência

→ Veja references/reference-docs-and-commands.md para detalhes

Metas de Desempenho

MétricaTempo RealAlta AcuráciaEdge
FPS>30>10>15
mAP@50>0.6>0.8>0.5
Latência P99<50ms<150ms<100ms
Memória GPU<4GB<8GB<2GB
Tamanho do Modelo<50MB<200MB<20MB

Recursos

  • Guia de Arquitetura: references/computer_vision_architectures.md
  • Guia de Otimização: references/object_detection_optimization.md
  • Guia de Implantação: references/production_vision_systems.md
  • Scripts: diretório scripts/ para ferramentas de automação
我的收藏