senior-computer-vision について
senior-computer-vision は、検出、セグメンテーション、データセット準備、モデル最適化、デプロイを扱うコンピュータービジョンエンジニアリング向けスキルです。スクリプトを使い、学習設定の生成やデータ処理、推論最適化を進められます。
主な機能
- 01ビジョンモデルの学習設定生成
- 02データセット変換と拡張のパイプライン構築
- 03データセットのクリーニングと分割
- 04推論モデルのベンチマークと最適化
- 05検出、セグメンテーション、デプロイを網羅
活用シーン
- 01YOLO または 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 システムのデプロイに対応する、本番環境向けコンピュータービジョンエンジニアリングのスキルです。
目次
- クイックスタート
- 主な専門分野
- 技術スタック
- ワークフロー 1:物体検出パイプライン
- ワークフロー 2:モデルの最適化とデプロイ
- ワークフロー 3:カスタムデータセットの準備
- アーキテクチャ選択ガイド
- 参考ドキュメント
クイックスタート
# 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 | 2 段階方式で、位置特定の精度が高くなります |
| 小さな物体 | 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 の主要指標 |
| 適合率 | >0.8 | 偽陽性が少ないこと |
| 再現率 | >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% |
ステップ 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')"
ステップ 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:カスタムデータセットの準備
コンピュータービジョンのデータセットをトレーニング用に準備する場合は、このワークフローを使用します。
ステップ 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
ステップ 2:クリーンアップと検証を行う
# Remove corrupted and duplicate images
python scripts/dataset_pipeline_builder.py data/raw/ \
--clean \
--remove-corrupted \
--remove-duplicates \
--output data/cleaned/
ステップ 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 |
ステップ 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 }
ステップ 5:トレーニング/検証/テストに分割する
python scripts/dataset_pipeline_builder.py data/augmented/ \
--split 0.8 0.1 0.1 \
--stratify \
--seed 42 \
--output data/final/
データ分割の指針:
| データセットのサイズ | トレーニング | 検証 | テスト |
|---|---|---|---|
| <1,000 images | 70% | 15% | 15% |
| 1,000-10,000 | 80% | 10% | 10% |
| >10,000 | 90% | 5% | 5% |
ステップ 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 | 2段階方式、高品質 |
| DINO-4scale | 85ms | 49.0 mAP | 最先端の 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 images | 10K-100K+ images |
| トレーニング時間 | 短い | 長い(より多くのエポックが必要) |
| 推論速度 | 高速 | 低速 |
| 小さな物体 | 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 対応