mcpField
S
senior-computer-vision

senior-computer-vision

github.com/alirezarezvani開発29.0k1.2k 回インストール今日更新
リポジトリ

senior-computer-vision について

senior-computer-vision は、検出、セグメンテーション、データセット準備、モデル最適化、デプロイを扱うコンピュータービジョンエンジニアリング向けスキルです。スクリプトを使い、学習設定の生成やデータ処理、推論最適化を進められます。

主な機能

  1. 01ビジョンモデルの学習設定生成
  2. 02データセット変換と拡張のパイプライン構築
  3. 03データセットのクリーニングと分割
  4. 04推論モデルのベンチマークと最適化
  5. 05検出、セグメンテーション、デプロイを網羅

活用シーン

  1. 01YOLO または Faster R-CNN の学習設定
  2. 02アノテーションの COCO 形式への変換
  3. 03学習データのクリーニングと拡張
  4. 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.md
object_detection_optimization.md
production_vision_systems.md
reference-docs-and-commands.md
scripts/
dataset_pipeline_builder.py
inference_optimizer.py
vision_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、DINO2 段階方式で、位置特定の精度が高くなります
小さな物体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.7IoU 0.5 における平均適合率
mAP@50:95>0.5COCO の主要指標
適合率>0.8偽陽性が少ないこと
再現率>0.8検出漏れが少ないこと
推論時間<33ms30 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 CPUPyTorch → ONNX → OpenVINO
Apple SiliconPyTorch → CoreML
汎用 CPUPyTorch → 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

量子化による影響の分析:

精度サイズ速度精度の低下
FP32100%1x0%
FP1650%1.5-2x<0.5%
INT825%2-4x1-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 XMLCOCO JSON
YOLO TXTCOCO JSON
COCO JSONYOLO TXT
LabelMe JSONCOCO JSON
CVAT XMLCOCO 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 images70%15%15%
1,000-10,00080%10%10%
>10,00090%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

アーキテクチャ選択ガイド

物体検出アーキテクチャ
アーキテクチャ速度精度最適な用途
YOLOv8n1.2ms37.3 mAPエッジ、モバイル、リアルタイム
YOLOv8s2.1ms44.9 mAP速度と精度のバランス
YOLOv8m4.2ms50.2 mAP汎用
YOLOv8l6.8ms52.9 mAP高精度
YOLOv8x10.1ms53.9 mAP最高精度
RT-DETR-L5.3ms53.0 mAPTransformer、NMS 不要
Faster R-CNN R5046ms40.2 mAP2段階方式、高品質
DINO-4scale85ms49.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 images10K-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/ ディレクトリにあります

コメント