关于 senior-computer-vision
senior-computer-vision 是面向计算机视觉工程的技能,涵盖检测、分割、数据准备、模型优化与部署。它提供脚本化流程,帮助构建训练配置、整理数据集并评估推理优化方案。
主要功能
- 01生成视觉模型训练配置
- 02构建数据集转换与增强流程
- 03清理并划分数据集
- 04基准测试和优化推理模型
- 05涵盖检测、分割与视觉部署
适用场景
- 01为 YOLO 或 Faster R-CNN 配置训练
- 02将标注格式转换为 COCO
- 03为训练集执行清理和增强
- 04将模型导出并优化至目标运行时
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill senior-computer-vision安装后在 Claude Code 中输入/senior-computer-vision确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/computer_vision_architectures.mdobject_detection_optimization.mdproduction_vision_systems.mdreference-docs-and-commands.mdscripts/dataset_pipeline_builder.pyinference_optimizer.pyvision_model_trainer.py详细介绍
高级计算机视觉工程师
面向目标检测、图像分割和视觉 AI 系统部署的生产级计算机视觉工程技能。
目录
快速开始
# Generate training configuration for YOLO or Faster R-CNN
python scripts/vision_model_trainer.py models/ --task detection --arch yolov8
# Analyze model for optimization opportunities (quantization, pruning)
python scripts/inference_optimizer.py model.pt --target onnx --benchmark
# Build dataset pipeline with augmentations
python scripts/dataset_pipeline_builder.py images/ --format coco --augment
核心能力
本技能提供以下方面的指导:
- 目标检测:YOLO 系列(v5-v11)、Faster R-CNN、DETR、RT-DETR
- 实例分割:Mask R-CNN、YOLACT、SOLOv2
- 语义分割:DeepLabV3+、SegFormer、SAM(Segment Anything)
- 图像分类:ResNet、EfficientNet、Vision Transformers(ViT、DeiT)
- 视频分析:目标跟踪(ByteTrack、SORT)、动作识别
- 3D 视觉:深度估计、点云处理、NeRF
- 生产部署:ONNX、TensorRT、OpenVINO、CoreML
技术栈
| 类别 | 技术 |
|---|---|
| 框架 | PyTorch、torchvision、timm |
| 检测 | Ultralytics(YOLO)、Detectron2、MMDetection |
| 分割 | segment-anything、mmsegmentation |
| 优化 | ONNX、TensorRT、OpenVINO、torch.compile |
| 图像处理 | OpenCV、Pillow、albumentations |
| 标注 | CVAT、Label Studio、Roboflow |
| 实验跟踪 | MLflow、Weights & Biases |
| 服务化 | Triton Inference Server、TorchServe |
工作流 1:目标检测流水线
从零开始构建目标检测系统时使用此工作流。
步骤 1:定义检测需求
分析检测任务需求:
Detection Requirements Analysis:
- Target objects: [list specific classes to detect]
- Real-time requirement: [yes/no, target FPS]
- Accuracy priority: [speed vs accuracy trade-off]
- Deployment target: [cloud GPU, edge device, mobile]
- Dataset size: [number of images, annotations per class]
步骤 2:选择检测架构
根据需求选择架构:
| 需求 | 推荐架构 | 原因 |
|---|---|---|
| 实时(>30 FPS) | YOLOv8/v11、RT-DETR | 单阶段,针对速度优化 |
| 高精度 | Faster R-CNN、DINO | 两阶段,定位更准确 |
| 小目标 | YOLO + SAHI、Faster R-CNN + FPN | 多尺度检测 |
| 边缘部署 | YOLOv8n、MobileNetV3-SSD | 轻量级架构 |
| 基于 Transformer | DETR、DINO、RT-DETR | 端到端,无需 NMS |
步骤 3:准备数据集
将标注转换为所需格式:
# COCO format (recommended)
python scripts/dataset_pipeline_builder.py data/images/ \
--annotations data/labels/ \
--format coco \
--split 0.8 0.1 0.1 \
--output data/coco/
# Verify dataset
python -c "from pycocotools.coco import COCO; coco = COCO('data/coco/train.json'); print(f'Images: {len(coco.imgs)}, Categories: {len(coco.cats)}')"
步骤 4:配置训练
生成训练配置:
# For Ultralytics YOLO
python scripts/vision_model_trainer.py data/coco/ \
--task detection \
--arch yolov8m \
--epochs 100 \
--batch 16 \
--imgsz 640 \
--output configs/
# For Detectron2
python scripts/vision_model_trainer.py data/coco/ \
--task detection \
--arch faster_rcnn_R_50_FPN \
--framework detectron2 \
--output configs/
步骤 5:训练与验证
# Ultralytics training
yolo detect train data=data.yaml model=yolov8m.pt epochs=100 imgsz=640
# Detectron2 training
python train_net.py --config-file configs/faster_rcnn.yaml --num-gpus 1
# Validate on test set
yolo detect val model=runs/detect/train/weights/best.pt data=data.yaml
步骤 6:评估结果
需要重点分析的指标:
| 指标 | 目标 | 说明 |
|---|---|---|
| mAP@50 | >0.7 | IoU 为 0.5 时的平均精度均值 |
| mAP@50:95 | >0.5 | COCO 主要指标 |
| Precision | >0.8 | 误报率低 |
| Recall | >0.8 | 漏检率低 |
| 推理时间 | <33ms | 对应 30 FPS 实时 |
工作流 2:模型优化与部署
将训练好的模型准备用于生产部署时使用此工作流。
步骤 1:测量基线性能
# Measure current model performance
python scripts/inference_optimizer.py model.pt \
--benchmark \
--input-size 640 640 \
--batch-sizes 1 4 8 16 \
--warmup 10 \
--iterations 100
预期输出:
Baseline Performance (PyTorch FP32):
- Batch 1: 45.2ms (22.1 FPS)
- Batch 4: 89.4ms (44.7 FPS)
- Batch 8: 165.3ms (48.4 FPS)
- Memory: 2.1 GB
- Parameters: 25.9M
步骤 2:选择优化策略
| 部署目标 | 优化路径 |
|---|---|
| NVIDIA GPU(云端) | PyTorch → ONNX → TensorRT FP16 |
| NVIDIA GPU(边缘) | PyTorch → TensorRT INT8 |
| Intel CPU | PyTorch → ONNX → OpenVINO |
| Apple Silicon | PyTorch → CoreML |
| 通用 CPU | PyTorch → ONNX Runtime |
| 移动端 | PyTorch → TFLite 或 ONNX Mobile |
步骤 3:导出为 ONNX
# Export with dynamic batch size
python scripts/inference_optimizer.py model.pt \
--export onnx \
--input-size 640 640 \
--dynamic-batch \
--simplify \
--output model.onnx
# Verify ONNX model
python -c "import onnx; model = onnx.load('model.onnx'); onnx.checker.check_model(model); print('ONNX model valid')"
步骤 4:应用量化(可选)
使用校准进行 INT8 量化:
# Generate calibration dataset
python scripts/inference_optimizer.py model.onnx \
--quantize int8 \
--calibration-data data/calibration/ \
--calibration-samples 500 \
--output model_int8.onnx
量化影响分析:
| 精度 | 大小 | 速度 | 精度下降 |
|---|---|---|---|
| FP32 | 100% | 1x | 0% |
| FP16 | 50% | 1.5-2x | <0.5% |
| INT8 | 25% | 2-4x | 1-3% |
Step 5: 转换为目标运行时
# TensorRT (NVIDIA GPU)
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')"
Step 6: 对优化后的模型进行基准测试
python scripts/inference_optimizer.py model.engine \
--benchmark \
--runtime tensorrt \
--compare model.pt
预期加速比:
Optimization Results:
- Original (PyTorch FP32): 45.2ms
- Optimized (TensorRT FP16): 12.8ms
- Speedup: 3.5x
- Accuracy change: -0.3% mAP
工作流 3:自定义数据集准备
在为训练准备计算机视觉数据集时使用此工作流。
Step 1: 审计原始数据
# Analyze image dataset
python scripts/dataset_pipeline_builder.py data/raw/ \
--analyze \
--output analysis/
分析报告包括:
Dataset Analysis:
- Total images: 5,234
- Image sizes: 640x480 to 4096x3072 (variable)
- Formats: JPEG (4,891), PNG (343)
- Corrupted: 12 files
- Duplicates: 45 pairs
Annotation Analysis:
- Format detected: Pascal VOC XML
- Total annotations: 28,456
- Classes: 5 (car, person, bicycle, dog, cat)
- Distribution: car (12,340), person (8,234), bicycle (3,456), dog (2,890), cat (1,536)
- Empty images: 234
Step 2: 清洗与验证
# Remove corrupted and duplicate images
python scripts/dataset_pipeline_builder.py data/raw/ \
--clean \
--remove-corrupted \
--remove-duplicates \
--output data/cleaned/
Step 3: 转换标注格式
# Convert VOC to COCO format
python scripts/dataset_pipeline_builder.py data/cleaned/ \
--annotations data/annotations/ \
--input-format voc \
--output-format coco \
--output data/coco/
支持的格式转换:
| 源格式 | 目标格式 |
|---|---|
| Pascal VOC XML | COCO JSON |
| YOLO TXT | COCO JSON |
| COCO JSON | YOLO TXT |
| LabelMe JSON | COCO JSON |
| CVAT XML | COCO JSON |
Step 4: 应用数据增强
# Generate augmentation config
python scripts/dataset_pipeline_builder.py data/coco/ \
--augment \
--aug-config configs/augmentation.yaml \
--output data/augmented/
检测任务推荐的数据增强:
# configs/augmentation.yaml
augmentations:
geometric:
- horizontal_flip: { p: 0.5 }
- vertical_flip: { p: 0.1 } # Only if orientation invariant
- 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 } # YOLO-style mosaic
- mixup: { p: 0.1 } # Image mixing
- cutout: { num_holes: 8, max_h_size: 32, max_w_size: 32, p: 0.3 }
Step 5: 创建训练集/验证集/测试集划分
python scripts/dataset_pipeline_builder.py data/augmented/ \
--split 0.8 0.1 0.1 \
--stratify \
--seed 42 \
--output data/final/
划分策略指南:
| 数据集规模 | 训练集 | 验证集 | 测试集 |
|---|---|---|---|
| <1,000 张图像 | 70% | 15% | 15% |
| 1,000-10,000 | 80% | 10% | 10% |
| >10,000 | 90% | 5% | 5% |
Step 6: 生成数据集配置
# For Ultralytics YOLO
python scripts/dataset_pipeline_builder.py data/final/ \
--generate-config yolo \
--output data.yaml
# For Detectron2
python scripts/dataset_pipeline_builder.py data/final/ \
--generate-config detectron2 \
--output detectron2_config.py
架构选择指南
目标检测架构
| 架构 | 速度 | 精度 | 最适合 |
|---|---|---|---|
| YOLOv8n | 1.2ms | 37.3 mAP | 边缘设备、移动端、实时场景 |
| YOLOv8s | 2.1ms | 44.9 mAP | 速度与精度平衡 |
| YOLOv8m | 4.2ms | 50.2 mAP | 通用场景 |
| YOLOv8l | 6.8ms | 52.9 mAP | 高精度 |
| YOLOv8x | 10.1ms | 53.9 mAP | 最高精度 |
| RT-DETR-L | 5.3ms | 53.0 mAP | Transformer,无需 NMS |
| Faster R-CNN R50 | 46ms | 40.2 mAP | 两阶段,高质量 |
| DINO-4scale | 85ms | 49.0 mAP | SOTA Transformer |
分割架构
| 架构 | 类型 | 速度 | 最适合 |
|---|---|---|---|
| YOLOv8-seg | 实例分割 | 4.5ms | 实时实例分割 |
| Mask R-CNN | 实例分割 | 67ms | 高质量掩码 |
| SAM | 可提示分割 | 50ms | 零样本分割 |
| DeepLabV3+ | 语义分割 | 25ms | 场景解析 |
| SegFormer | 语义分割 | 15ms | 高效语义分割 |
CNN 与 Vision Transformer 的权衡
| 方面 | CNN(YOLO、R-CNN) | ViT(DETR、DINO) |
|---|---|---|
| 所需训练数据 | 1K-10K 张图像 | 10K-100K+ 张图像 |
| 训练时间 | 快 | 慢(需要更多轮次) |
| 推理速度 | 更快 | 更慢 |
| 小目标 | 借助 FPN 表现良好 | 需要多尺度 |
| 全局上下文 | 有限 | 出色 |
| 位置编码 | 隐式 | 显式 |
参考文档
→ 详见 references/reference-docs-and-commands.md
性能指标
| 指标 | 实时 | 高精度 | 边缘 |
|---|---|---|---|
| FPS | >30 | >10 | >15 |
| mAP@50 | >0.6 | >0.8 | >0.5 |
| 延迟 P99 | <50ms | <150ms | <100ms |
| GPU 显存 | <4GB | <8GB | <2GB |
| 模型大小 | <50MB | <200MB | <20MB |
资源
- 架构指南:
references/computer_vision_architectures.md - 优化指南:
references/object_detection_optimization.md - 部署指南:
references/production_vision_systems.md - 脚本:
scripts/目录,包含自动化工具
评论
支持 Markdown