Skip to content
Published on

コンピュータビジョン・フレームワーク2026完全ガイド - OpenCV 4・MediaPipe・Detectron2・YOLO v11・MMDetection・SAM 2・Grounding DINO徹底解説

Authors

プロローグ - コンピュータビジョンは「見る」ではなく「問う」になった

2010年代のコンピュータビジョンには明確な形があった。SIFT・HOG・Haarで特徴を抽出し、SVM・ランダムフォレストで分類し、OpenCVがすべてを束ねた。2020年代前半はResNet・EfficientNet・Mask R-CNNの時代だった - データセットを集め、モデルを学習し、mAPを伸ばすことが仕事の90%だった。

2026年の風景は違う。「この写真で赤いヘルメットを被った人の姿勢を推定せよ」という一文がGrounding DINOで箱を取り、SAM 2でマスクを作り、MMPoseでキーポイントを抽出する三行のパイプラインで終わる。学習はほとんどしない。代わりに私たちは「どのモデルをどの順番で呼ぶか」を設計する。

本記事は2026年のコンピュータビジョン・スタックを一息で整理する。OpenCVの基本からSAM 2とVLM、DINOv3とDUSt3R、そしてモバイル推論まで - どこでどの道具を使うか、その判断基準を一ページに収めた。


第1章 - 2026年CVスタックの地図

個別の道具に入る前に、全体の地図を描こう。2026年のコンピュータビジョンは五つの層(レイヤー)に分かれる。

[Layer 5] Vision Language Model (VLM)
            GPT-4o, Claude 3.5 Sonnet, Gemini 2.0 Flash
            Qwen2-VL, InternVL 2.5, Pixtral 12B
                       |
[Layer 4] Open-Vocabulary Foundation
            Grounding DINO 1.6, Florence-2, YOLO-World
            SAM 2, DINOv3, CLIP, SigLIP
                       |
[Layer 3] Task-Specific Model
            YOLO v11, Detectron3, MMDetection
            MMPose, DWPose, ByteTrack, Depth Anything v3
                       |
[Layer 2] Inference Runtime
            ONNX Runtime, TensorRT, OpenVINO
            CoreML, TFLite, NCNN, MNN
                       |
[Layer 1] Image I/O & Primitives
            OpenCV 4.10, Pillow-SIMD
            FFmpeg, GStreamer

層が上がるほど「知能」は上がるが、遅延も一緒に上がる。VLMは秒に1〜2フレーム、YOLO v11は秒に100フレーム以上。 この両端をどう組み合わせるかが2026年のビジョンエンジニアの仕事だ。

一行で要約: 「VLMで問いを受け、YOLOで答えを描く。」


第2章 - OpenCV 4.10/5.x - 依然としてすべての始まり

OpenCVは死んでいない。むしろ2026年にさらに堅牢になった。理由は単純だ - 画像を読み、切り抜き、色空間を変え、動画フレームをデコードする仕事はどんな深層学習パイプラインでも必ず必要になる。

2026年5月時点でOpenCV 4.10はLTSであり、5.0ベータが活発に開発中だ。変化の核心三つを押さえる。

第一に、DNNモジュールがONNX推論の基本機能になった。 PyTorchやTensorFlowを経ずにcv2.dnn.readNetFromONNX()一行でYOLO・ResNet・ViTを呼ぶ。

第二に、G-API(Graph API)が安定した。 入力から出力までをグラフで表現し、OpenCL・CUDA・Vulkanバックエンドの上で実行する。モバイル・組込で特に強力だ。

第三に、CUDA・OpenCL加速がビルトインだ。 cv2.cudaモジュールでGaussian blur・optical flow・画像ワーピングをGPU上で直接走らせる。

import cv2

# 1) 画像を読む - 色空間はBGR(注意)
img = cv2.imread('input.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 2) リサイズ - INTER_AREAは縮小に最適
small = cv2.resize(img_rgb, (640, 640), interpolation=cv2.INTER_AREA)

# 3) DNN推論 - ONNXモデルを直接ロード
net = cv2.dnn.readNetFromONNX('yolov11n.onnx')
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

blob = cv2.dnn.blobFromImage(small, 1/255.0, (640, 640), swapRB=True)
net.setInput(blob)
outputs = net.forward()

覚えておくべき二つ: OpenCVはBGR色空間を使う(PIL/PyTorchと違う)、imreadは失敗するとNoneを返す(例外を投げない)。この二つで2026年も毎週誰かがデバッグに一時間を捨てている。


第3章 - MediaPipe 0.10 / MediaPipe Studio - モバイル実時間の新標準

GoogleのMediaPipeは2024年後半に大きな変化があった。それまでの「MediaPipe Solutions API」がMediaPipe Tasks APIに統合され、ノーコード学習・デプロイ・ツールのMediaPipe Studioが登場した。

2026年時点でMediaPipeは次のソリューションを一行APIで提供する。

  • Hand Landmarker - 21個の手キーポイント
  • Pose Landmarker - 33個の身体キーポイント+セグメンテーション・マスク
  • Face Landmarker - 478個の顔メッシュ+Blendshape
  • Image Embedder - MobileNet-V3埋め込み
  • Object Detector - EfficientDet-Lite
  • Image Segmenter - Selfie segmentation, hair segmentation
  • Gesture Recognizer - 事前学習された7つのジェスチャー
  • Image Classifier - EfficientNet-Lite
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

# Pose Landmarker - 一行のインスタンス生成
options = vision.PoseLandmarkerOptions(
    base_options=python.BaseOptions(model_asset_path='pose_landmarker.task'),
    running_mode=vision.RunningMode.VIDEO,
    num_poses=2,
    min_pose_detection_confidence=0.5,
)
landmarker = vision.PoseLandmarker.create_from_options(options)

# フレームごとに推論
result = landmarker.detect_for_video(mp_image, timestamp_ms)
for pose in result.pose_landmarks:
    for lm in pose:
        print(lm.x, lm.y, lm.z, lm.visibility)

MediaPipeの真価はモバイルで30〜60 FPSが保証される点にある。同じ作業をPyTorchで書くとモバイルでは5 FPSも難しい。CPU/GPU/NPU自動ディスパッチ、TFLite軽量化、XNNPACKバックエンドまで束ねられた結果だ。

限界も明確だ - 事前定義された作業以外は使えず、自分で学習するならMediaPipe Model Makerで迂回する必要がある。MediaPipeの居場所は「決められた仕事を速く」だ。


第4章 - Detectron2 / Detectron3 - メタの正統派検出ツールキット

Meta AI ResearchのDetectron2は2019年リリース以降、学界の事実上の標準だった。2025年末にDetectron3がベータで出て、2026年現在二つが併存している。

差異を整理すると次のようになる。

項目Detectron2Detectron3
既定バックボーンResNet, ViTConvNeXt v2, DINOv3, SAM2エンコーダ
検出ヘッドMask R-CNN, Cascade R-CNNMask R-CNN, Mask2Former, ViTDet
学習フレームワークPyTorch 1.x/2.xPyTorch 2.5+, torch.compile既定
ConfigシステムYACS (yaml)LazyConfig (pythonic)
分散学習DDPFSDP + activation checkpoint

Detectron2コードの断片。

from detectron2 import model_zoo
from detectron2.config import get_cfg
from detectron2.engine import DefaultPredictor

cfg = get_cfg()
cfg.merge_from_file(model_zoo.get_config_file(
    "COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"
))
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url(
    "COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"
)
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5

predictor = DefaultPredictor(cfg)
outputs = predictor(image)
# outputs["instances"].pred_boxes, pred_masks, pred_classes

Detectron3のLazyConfigはyamlの代わりにPythonオブジェクトで設定を書く。IDEオートコンプリート・型チェックが効き、分岐ロジックが入っても綺麗に保たれる。

いつDetectronを使うか? 論文を再現するとき、COCO/LVISベンチマークを比較するとき、そして「標準的な」Mask R-CNNベースラインが必要なとき。実際のプロダクションではYOLOやMMDetectionに移行することが多い。


第5章 - YOLO系 - v8からv12までの分岐

Ultralyticsが管理するYOLO系は2024年にv8、2024年後半にv9、2025年にv10、2025年後半にv11、そして2026年初めにv12まで出た。一社が一年に一〜二回メジャーを出す速度は他のどのビジョン・フレームワークも追いつけない。

核心を整理すると次のようになる。

バージョンリリース核心変化ライセンス
YOLOv82023Anchor-free、classification/segmentation統合AGPL-3.0
YOLOv92024PGI(Programmable Gradient Information)、GELANAGPL-3.0
YOLOv102024NMS-freeヘッド、end-to-end学習AGPL-3.0
YOLOv112025C3k2ブロック、SPPF + C2PSA、より少ないパラメータAGPL-3.0
YOLOv122026Attention中心アーキテクチャ、FlashAttentionベースAGPL-3.0

YOLOの魅力は一段落で十分だ。

from ultralytics import YOLO

# 1) モデル・ロード - 8つの作業が一つのAPI
model = YOLO('yolo11n.pt')         # nano
# model = YOLO('yolo11n-seg.pt')   # segmentation
# model = YOLO('yolo11n-pose.pt')  # pose
# model = YOLO('yolo11n-obb.pt')   # oriented bounding box
# model = YOLO('yolo11n-cls.pt')   # classification

# 2) 推論
results = model('input.jpg')
for r in results:
    print(r.boxes.xyxy)    # 座標
    print(r.boxes.conf)    # 信頼度
    print(r.boxes.cls)     # クラス

# 3) 学習
model.train(data='coco.yaml', epochs=100, imgsz=640)

# 4) エクスポート - ONNX, TensorRT, CoreML, TFLiteすべて一行
model.export(format='onnx')
model.export(format='engine')      # TensorRT
model.export(format='coreml')

AGPLライセンスに注意。 YOLOモデルをSaaS・ウェブサービスに使うとソースコード公開義務が生じる。商用利用はUltralytics Enterpriseライセンスを購入する必要がある。この問題のせいで一部の企業はRT-DETR・DAMO-YOLO・D-FINEのようなApache-2.0代替を使う。


第6章 - MMDetection / MMCV / OpenMMLab - 最も広いカタログ

上海AI研究所が運営するOpenMMLabはビジョン分野で最も広いモデル・カタログを持つ。MMDetection(検出)、MMSegmentation(分割)、MMPose(姿勢)、MMTracking(追跡)、MMDetection3D(3D検出)、MMYOLO(YOLO系統合)など10以上のサブプロジェクトがある。

特徴は二つ。

第一に、すべてのモデルが同じconfigシステムを共有する。 Mask R-CNNをConvNeXtバックボーンに変え、FPNをBiFPNに変え、ヘッドをDETRに変える作業がyaml数行で済む。

第二に、ベンチマーク再現が強力だ。 論文結果が±0.3 mAP以内に入るのが普通だ。学界標準に最も近いフレームワークだ。

from mmdet.apis import init_detector, inference_detector

config = 'configs/yolox/yolox_s_8xb8-300e_coco.py'
checkpoint = 'yolox_s.pth'

model = init_detector(config, checkpoint, device='cuda:0')
result = inference_detector(model, 'demo.jpg')
# result.pred_instances.bboxes, scores, labels

MMDetectionの欠点は学習曲線が急なこと。 Configシステム・Registryパターン・Hookシステムをすべて理解しないと自分のモデルを差し込めない。「速く始める」より「深く入る」に向いた道具だ。


第7章 - Roboflow Universe + Supervision - アノテーションから学習まで

Roboflowはビジョン・データのGitHubのような場所にいる。2026年現在Roboflow Universeには30万以上の公開データセットと5万以上の事前学習モデルがホストされている。

核心ツール二つ。

Roboflow Annotate - ウェブ・ベースのアノテーション。ボックス・ポリゴン・キーポイント・OBBをすべてサポート。Auto-label機能がSAM・Grounding DINOを呼んで下書きを作る。

Supervision - Roboflowがオープンソースで公開したビジョン・ユーティリティ。可視化・フィルタリング・メトリクス・トラッカーが一つのパッケージにある。

import supervision as sv
from ultralytics import YOLO

model = YOLO('yolo11n.pt')
results = model('input.jpg')[0]

# Roboflow SupervisionのDetectionオブジェクトに変換
detections = sv.Detections.from_ultralytics(results)

# 可視化 - ボックス+ラベル一行
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()

annotated = box_annotator.annotate(scene=image, detections=detections)
annotated = label_annotator.annotate(scene=annotated, detections=detections)

# 追跡 - ByteTrack一行
tracker = sv.ByteTrack()
detections = tracker.update_with_detections(detections)

Supervisionの利点はモデル推論と可視化・メトリクスを分離している点。 YOLO・Detectron・MMDetectionの出力を同じDetectionsオブジェクトに統一してくれる。


第8章 - HuggingFace Transformers Vision - ViTからDETRまで

HuggingFace TransformersはNLPだけのライブラリではない。2026年時点でビジョン・モデルだけで200以上が登録されている。

代表モデル・カタログ。

  • ViT(Vision Transformer) - 分類の標準
  • DETR / Deformable DETR / DINO - トランスフォーマ・ベースの検出
  • Mask2Former / OneFormer - 統合セグメンテーション
  • OWL-ViT / OWLv2 - オープン語彙検出
  • CLIP / SigLIP / SigLIP 2 - 画像-テキスト埋め込み
  • DINOv2 / DINOv3 - 自己教師あり学習バックボーン
  • SAM / SAM 2 - セグメンテーション
  • Depth Anything v2 / v3 - 深度推定
from transformers import pipeline

# 分類 - 一行
classifier = pipeline('image-classification', model='google/vit-base-patch16-224')
print(classifier('input.jpg'))

# 検出
detector = pipeline('object-detection', model='facebook/detr-resnet-50')

# オープン語彙検出
detector = pipeline('zero-shot-object-detection', model='google/owlv2-base-patch16-ensemble')
print(detector('input.jpg', candidate_labels=['cat', 'dog', 'person']))

# セグメンテーション
segmenter = pipeline('image-segmentation', model='facebook/mask2former-swin-large-coco-panoptic')

pipeline()一行で推論が終わるのがHuggingFaceの魅力だ。モデルを変えるなら文字列だけ変えればよい。ただし学習は別のツールに行くのがよい - HF Trainerはビジョンではあまり馴染まない。PyTorch LightningやMMDetectionの方が自然だ。


第9章 - Segment Anything 2(SAM 2)- 動画マスクの新標準

MetaのSAM(Segment Anything Model)は2023年4月に初めて出た。2024年7月SAM 2がリリースされ、画像だけでなく動画に対するメモリ・アテンションが追加された。一つのフレームでマスクを取れば、残りのフレームが自動的に追跡される。

2026年時点でSAM系の家族は次の通り。

モデルリリースパラメータ特徴
SAM202391M-636M画像セグメンテーション
SAM 2202439M-224M動画+画像
SAM 2.12024末同上小オブジェクト・遮蔽処理改善
SAMURAI2024同上カルマン・フィルタ・ベースの追跡強化
FastSAM202368MYOLOv8-segバックボーン、50倍速い
MobileSAM20239.8Mモバイル向け軽量化
EfficientSAM202326MKDで軽量化

SAM 2の使用例。

from sam2.build_sam import build_sam2_video_predictor

predictor = build_sam2_video_predictor(
    'configs/sam2_hiera_l.yaml',
    'checkpoints/sam2_hiera_large.pt'
)

# 動画初期化
state = predictor.init_state(video_path='video.mp4')

# 最初のフレームでクリック一回 - マスク自動追跡
predictor.add_new_points(
    inference_state=state,
    frame_idx=0,
    obj_id=1,
    points=[[210, 350]],
    labels=[1]
)

# すべてのフレームに対してマスクを追跡
for frame_idx, obj_ids, masks in predictor.propagate_in_video(state):
    # masks shape: (num_objects, H, W)
    pass

SAM 2の価値は**「一度教えれば永続的に追跡する」**という点だ。ラベリング費用が動画の長さに比例しなくなる。CVAT・Label Studio・Roboflowがすべて基本機能としてSAM 2統合を取り入れた。


第10章 - Grounding DINO 1.5 / 1.6 - テキストで箱を描く

IDEA ResearchのGrounding DINOは「オープン語彙検出」という作業を標準にしたモデルだ。2023年に1.0が出て、2024年に1.5 Pro/Edge、2024年後半に1.6が出た。

伝統的なYOLO・Detectronは学習時に見たクラス(80個・1203個)だけを検出する。Grounding DINOは違う - **「赤い車」・「ドアの取っ手」・「傘を持っている人」**のような自然言語プロンプトで箱を描く。

from groundingdino.util.inference import load_model, load_image, predict

model = load_model('GroundingDINO_SwinT_OGC.cfg.py', 'groundingdino_swint_ogc.pth')
image_source, image = load_image('input.jpg')

# 自然言語プロンプト - 名詞句をピリオド(.)で区切る
TEXT_PROMPT = 'red car. person holding umbrella. door handle.'
BOX_THRESHOLD = 0.35
TEXT_THRESHOLD = 0.25

boxes, logits, phrases = predict(
    model=model,
    image=image,
    caption=TEXT_PROMPT,
    box_threshold=BOX_THRESHOLD,
    text_threshold=TEXT_THRESHOLD,
)

Grounding SAM - Grounding DINOで箱を取り、SAM(あるいはSAM 2)でその箱の中のマスクを作るパイプライン。2026年のラベリング開始点の事実上の標準。

# 1) Grounding DINOで箱
boxes, _, _ = predict(model_gdino, image, 'cat. dog.', 0.35, 0.25)

# 2) SAMでマスク
sam_predictor.set_image(image_source)
masks, _, _ = sam_predictor.predict(box=boxes, multimask_output=False)

この二行が「データセットなしのオブジェクト分割」のすべてだ。1万枚に手でボックスを描いていた仕事が30分のスクリプトで終わる。


第11章 - Florence-2, YOLO-World - もう一つのオープン語彙

オープン語彙陣営にはGrounding DINO以外にも二つの強者がいる。

Florence-2(Microsoft、2024)- 分類・キャプショニング・検出・分割・OCRを一つのモデルで処理する。0.23Bと0.77Bパラメータで非常に小さいのに性能が良い。自然言語プロンプトではなくタスク・トークンを使う - <OD>(detection)、<DENSE_REGION_CAPTION><REFERRING_EXPRESSION_SEGMENTATION>など。

from transformers import AutoProcessor, AutoModelForCausalLM

processor = AutoProcessor.from_pretrained('microsoft/Florence-2-large', trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained('microsoft/Florence-2-large', trust_remote_code=True)

prompt = '<OD>'  # Object Detectionタスク・トークン
inputs = processor(text=prompt, images=image, return_tensors='pt')
generated_ids = model.generate(**inputs, max_new_tokens=1024, num_beams=3)
generated_text = processor.batch_decode(generated_ids, skip_special_tokens=False)[0]
parsed = processor.post_process_generation(generated_text, task='<OD>', image_size=(W, H))

YOLO-World(Tencent、2024)- YOLO速度にオープン語彙を載せた。Grounding DINOより10〜20倍速く、自然言語プロンプトで学習なしに検出する。

from ultralytics import YOLOWorld

model = YOLOWorld('yolov8x-worldv2.pt')
model.set_classes(['red car', 'door handle', 'person holding umbrella'])
results = model.predict('input.jpg')

いつどれを使うか。品質が最優先ならGrounding DINO 1.6速度が最優先ならYOLO-World複数の作業を一つのモデルに束ねたいならFlorence-2。この三つが2026年オープン語彙の三角形だ。


第12章 - VLM(Vision Language Model)- 「画像に問う」

2024年にGPT-4Vが登場した後、VLMはコンピュータビジョンの新しい層になった。2026年5月時点の主要VLM。

クローズドソース(API)

  • GPT-4o / GPT-4.5-vision(OpenAI)
  • Claude 3.5 Sonnet / Claude 4 Opus(Anthropic)
  • Gemini 2.0 Flash / Gemini 2.0 Pro(Google)

オープンソース

  • Qwen2-VL / Qwen2.5-VL(Alibaba)- 2B/7B/72B
  • InternVL 2.5(OpenGVLab)- 1B/2B/4B/8B/26B/40B/76B
  • Llava-OneVision(Bytedance/UW)- 0.5B/7B/72B
  • CogVLM2(Zhipu)- 19B
  • Phi-3.5-vision(Microsoft)- 4.2B
  • Pixtral 12B(Mistral)- 12B

VLMの使用パターンは二つに分かれる。

(a) Vision QA - 「この写真に何人いる?」

from anthropic import Anthropic
import base64

client = Anthropic()
with open('input.jpg', 'rb') as f:
    img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')

message = client.messages.create(
    model='claude-3-5-sonnet-20241022',
    max_tokens=1024,
    messages=[{
        'role': 'user',
        'content': [
            {'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
            {'type': 'text', 'text': 'How many people are in this image?'}
        ]
    }]
)

(b) Structured Output - 「このレシートから項目・金額をJSONで抽出せよ」

# JSONスキーマを強制するとOCR+パースが一回の呼び出しで終わる
schema = {
    'type': 'object',
    'properties': {
        'items': {'type': 'array', 'items': {
            'type': 'object',
            'properties': {
                'name': {'type': 'string'},
                'price': {'type': 'number'},
                'quantity': {'type': 'integer'}
            }
        }},
        'total': {'type': 'number'}
    }
}

VLMの限界も明確だ。(1) 座標が弱い - 「左上から三番目のオブジェクト」はよく分かるが、正確なピクセル座標は不正確。(2) 高価で遅い - GPT-4oで1万枚を処理すると10〜50ドル、YOLOなら無料で1分。(3) 決定論的でない - 同じ質問に違う答えが出る可能性がある。

だからパターン: VLMに「何を探すか」を問い、伝統モデルに「どこにあるか」を問う。


第13章 - 3Dビジョン - DUSt3R, MASt3R, VGGT

2024〜2025年の3Dビジョンで最大の変化は「二枚の写真だけで3D再構成」が可能になったことだ。

DUSt3R(Naver Labs Europe、2024)- 二枚の画像を受け取り、ピクセル別3Dポイントマップを直接回帰する。カメラ内部パラメータを知らなくても動作する。伝統的なSfM・MVSの複雑なパイプラインを一つのモデルに縮めた。

MASt3R(Naver Labs、2024)- DUSt3R+マッチング。二枚の画像間のピクセル対応を一緒に出力する。SLAM・ローカライゼーションに直接使える。

VGGT(Meta、2025)- Visual Geometry Grounded Transformer。複数の画像を一度に受け取り、カメラ・ポーズ・深度マップ・ポイントマップを同時に推定する。DUSt3Rのペアワイズ限界を超えた。

Spann3R(2024)- メモリ・トークンを通じてシーケンシャル3D再構成を行う。動画SLAMに近い結果を得る。

from dust3r.inference import inference
from dust3r.model import AsymmetricCroCo3DStereo

model = AsymmetricCroCo3DStereo.from_pretrained('naver/DUSt3R_ViTLarge_BaseDecoder_512_dpt')

images = load_images(['img1.jpg', 'img2.jpg'], size=512)
pairs = make_pairs(images, scene_graph='complete', prefilter=None, symmetrize=True)
output = inference(pairs, model, device='cuda', batch_size=1)
# outputからpointmap, confidence, depthを抽出

3Dビジョン分野の韓国の貢献が大きいところだ。Naver Labs Europeのグルノーブル・チームがDUSt3R・MASt3R・CroCoをすべて作った。


第14章 - Depth Anything v2/v3, Marigold, DepthPro

単眼深度推定は2024〜2025年に爆発的に発展した。

Depth Anything v2(HKU、2024)- 6200万枚の未ラベル画像で学習した強力な深度推定モデル。Small(24M)・Base(97M)・Large(335M)・Giant(1.3B)の四サイズ。Depth Anything v3(2025)は動画一貫性とメトリック深度を強化した。

Marigold(ETH Zürich、2024)- Stable Diffusionを深度推定にファインチューン。ディフュージョン・ベースなのでディテールは良いが遅い。

DepthPro(Apple、2024)- 一枚からメトリック深度を0.3秒以内に推定。iPhoneのLiDARなしの深度推定の基盤だ。

from transformers import pipeline

pipe = pipeline(task='depth-estimation', model='depth-anything/Depth-Anything-V2-Large-hf')
depth = pipe('input.jpg')['depth']  # PIL Image

いつどれを使うか。相対深度で十分ならDepth Anything、メトリック深度が必要ならDepthPro、ディテール最優先ならMarigold。


第15章 - 姿勢推定 - MMPose, OpenPose, AlphaPose, DWPose

姿勢推定(Pose Estimation)はキーポイントを見つける作業だ。2026年の標準カタログ。

道具キーポイント特徴
MediaPipe Pose33モバイル実時間
OpenPose25(BODY_25)マルチパーソン、古い標準
AlphaPose17(COCO)Top-down精度
MMPose17〜133最も広いモデル・カタログ
DWPose133(全身+顔+手)ControlNet姿勢条件の標準
RTMPose17モバイル実時間、MMPose所属

DWPoseが2024〜2026年の姿勢分野の事実上の標準になった。理由は単純だ - ControlNet・AnimateDiff・Stable Video DiffusionがすべてDWPoseキーポイントを条件として受け取る。 生成型AIの姿勢条件はほとんどDWPoseだ。

from mmpose.apis import inference_topdown, init_model

config = 'configs/wholebody_2d_keypoint/rtmpose/cocktail14/rtmw-x_8xb320-270e_cocktail14-384x288.py'
checkpoint = 'rtmw-x_simcc-cocktail14_pt-ucoco_270e-384x288.pth'

model = init_model(config, checkpoint, device='cuda')
results = inference_topdown(model, 'input.jpg', bboxes=person_boxes)
# results[i].pred_instances.keypoints, keypoint_scores

第16章 - オブジェクト追跡 - ByteTrack, BoT-SORT, OC-SORT, DEVA

動画で同じオブジェクトに同じIDを付ける作業が追跡(tracking)だ。2026年の標準は四つに絞られる。

追跡器入力特徴
ByteTrack(2022)ボックス+信頼度低信頼度ボックスも二段階マッチング。最も広く使われる
BoT-SORT(2022)ボックス+ReID埋め込みカメラ動き補償
OC-SORT(2023)ボックス観測中心、遮蔽に強い
DEVA(2023)ボックス+マスクSAMとペア、動画セグメンテーション追跡

ByteTrackはRoboflow Supervisionに統合されていて一行で終わる。

import supervision as sv

tracker = sv.ByteTrack(track_thresh=0.5, track_buffer=30)

for frame, detections in stream():
    detections = tracker.update_with_detections(detections)
    # detections.tracker_idにIDが入っている

SAM 2自体が追跡器の役を果たす点も覚えておこう。一つのフレームでクリックすれば動画全体でマスクが追跡される。追跡とセグメンテーションが一つのモデルに合わさった。


第17章 - ディフュージョン・ベースのビジョン - ControlNet, IP-Adapter

生成型ビジョンはもう「別の分野」ではない。ControlNet・IP-Adapterは検出・分割結果を入力条件として受け取り、新しい画像を生成する。

  • ControlNet - Canny edge, depth, pose(DWPose), segmentation, normalなどを条件として受け取る
  • IP-Adapter - 画像自体をスタイル/内容の条件として受け取る
  • T2I-Adapter - より軽量のControlNet代替
from diffusers import StableDiffusionXLControlNetPipeline, ControlNetModel
import torch

controlnet = ControlNetModel.from_pretrained('thibaud/controlnet-openpose-sdxl-1.0', torch_dtype=torch.float16)
pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
    'stabilityai/stable-diffusion-xl-base-1.0',
    controlnet=controlnet,
    torch_dtype=torch.float16
).to('cuda')

pose_image = compute_dwpose(input_image)  # DWPoseキーポイント画像
image = pipe('a person dancing in the rain', image=pose_image).images[0]

このコード片が**「ビジョン認識 -> ビジョン生成」**パイプラインの標準だ。検出と生成が同じ道具のチェーンの中に入った。


第18章 - 埋め込みモデル - CLIP, SigLIP, DINOv2, DINOv3

画像をベクトルに変える道具は2026年最も多く呼ばれるコンピュータビジョン・モデルだ。画像検索・重複削除・クラスタリング・ゼロショット分類がすべて埋め込みの上で動作する。

モデル学習信号次元強み
CLIP(2021)画像-テキスト・ペア512/768テキストと整列
OpenCLIP同上、より大きなデータ同上より強いベースライン
SigLIP(2023)Sigmoid loss同上CLIPより効率的
SigLIP 2(2024)マルチタスク同上OCR・文書に強い
DINOv2(2023)自己教師あり(SSL)768/1024/1536テキスト非依存、強い特徴
DINOv3(2025)自己教師あり、より大きい同上DINOv2の後継

いつどの埋め込みを使うか。

  • テキストで画像検索 -> CLIP / SigLIP 2
  • 画像で画像検索 -> DINOv3
  • ダウンストリーム分類ヘッド学習 -> DINOv3
  • OCR・文書作業 -> SigLIP 2
from transformers import AutoModel, AutoProcessor
import torch

model = AutoModel.from_pretrained('facebook/dinov3-vitl-pretrain-lvd1689m')
processor = AutoProcessor.from_pretrained('facebook/dinov3-vitl-pretrain-lvd1689m')

inputs = processor(images=image, return_tensors='pt')
with torch.no_grad():
    outputs = model(**inputs)

embedding = outputs.last_hidden_state.mean(dim=1)  # (1, 1024)

第19章 - アノテーション・ツール - CVAT, Label Studio, Roboflow, VIA

ラベリング・ツールは2026年に一つの共通点を共有する - AI-assistが既定。 SAM・Grounding DINO・YOLOが道具の中で直接呼ばれる。

道具ライセンス強み
CVATMIT、オープンソース最も広い形式サポート、動画に強い
Label StudioApache 2.0NLP/オーディオ/画像統合、MLバックエンド
Roboflow Annotate商用SaaSSAM/Grounding DINO統合、コラボ
VIABSD、オープンソース軽量で単一HTMLファイル

チーム単位の作業ならRoboflowやCVAT、モデル統合が重要ならLabel Studio、5分で始める必要があるならVIA。


第20章 - 推論ランタイム - ONNX Runtime, TensorRT, OpenVINO

学習されたモデルを速く実行することが推論ランタイムの仕事だ。2026年の選択肢。

ランタイムターゲット強み
ONNX RuntimeクロスプラットフォームCPU/GPU/NPUすべて、最も標準
TensorRTNVIDIA GPU最速、INT8/FP8量子化
OpenVINOIntel CPU/iGPU/NPUx86 PCで最強
CoreMLApple SiliconiOS/macOS、ANE活用
TFLiteモバイル(Android)XNNPACK、Hexagon
NCNNモバイル/組込Tencent、ARM最適化
MNNモバイル/組込Alibaba、OpenCLに強い

YOLO一行ですべてエクスポート可能だ。

from ultralytics import YOLO
model = YOLO('yolo11n.pt')

model.export(format='onnx', dynamic=True, simplify=True)
model.export(format='engine', half=True)        # TensorRT FP16
model.export(format='openvino', int8=True)      # OpenVINO INT8
model.export(format='coreml', nms=True)         # CoreML
model.export(format='tflite', int8=True)        # TFLite INT8
model.export(format='ncnn')                     # NCNN

選択ルール。 NVIDIA GPUサーバー -> TensorRT。Intel PC -> OpenVINO。iOS/macOS -> CoreML。Android -> TFLite。よく分からなければ -> ONNX Runtime。


第21章 - モバイル・ビジョン - ML Kit, Vision Framework, MNN

モバイル・アプリでビジョンを使うならネイティブ・フレームワークが最も安全だ。

Google ML Kit(Android/iOS)- 顔・バーコード・テキスト・ランドマーク・翻訳・姿勢をすべて提供。デバイス・オンデバイス/サーバー・オプション。

Apple Vision Framework(iOS/macOS)- VNDetectFaceRectangles・VNDetectHumanBodyPoseRequestなど100以上のビジョン・リクエスト。2024年に追加されたVNGenerateForegroundInstanceMaskRequestはモバイルSAMだ。

MNN(Alibaba)- 中国モバイル・エコシステムの事実上の標準。アリババ・ピンドゥオドゥオ・バイトダンスのアプリに入っている。

// Swift / Apple Vision
import Vision

let request = VNDetectHumanBodyPoseRequest { request, error in
    guard let obs = request.results as? [VNHumanBodyPoseObservation] else { return }
    for observation in obs {
        let points = try? observation.recognizedPoints(.all)
        // pointsにキーポイントが入っている
    }
}
let handler = VNImageRequestHandler(cgImage: cgImage)
try? handler.perform([request])

ルール。 単純なML機能(顔・テキスト・バーコード)はネイティブ - 速く無料。カスタム・モデルはCoreML(iOS)/ TFLite(Android)- 自分のモデルを配布。


第22章 - 韓国のビジョン・エコシステム

韓国のコンピュータビジョン貢献は学界と産業の両側で太いものがある。

Naver Labs Europe - DUSt3R・MASt3R・CroCoのグルノーブル・チーム。3Dビジョンで世界最前線。

KAIST CVLab - 朴恩柄(パク・ウンビョン)・權仁素(クォン・インソ)・盧勇晩(ノ・ヨンマン)教授グループ。CVPR・ICCV定期発表。

Lunit - 医療画像AI。胸部X線・マンモグラフィ・デジタル病理でFDA・CE承認を多数獲得。INSIGHT CXR・MMG・BCCが主力。

Seerslab - AR/VR/ビジョン。Naver Zの子会社でZEPETO・SNOWの顔認識・フィルタ・エンジン担当。

VUNO - 医療画像AI。DeepASR・DeepCT・DeepBrain。

MakinaRocks - 産業ビジョン異常検知。半導体・ディスプレイ検査。

Riiid / Trinity / Innospace - 教育・国防領域。

韓国学界の強みは顔・OCR・自動運転・医療画像に集中している。CVPR発表数で韓国は世界4〜5位圏だ。


第23章 - 日本のビジョン・エコシステム

Preferred Networks(PFN) - 日本最大のAI企業。自社ビジョン・ライブラリPFN-Vision、化学・素材・ロボティクス・ビジョン。

ABEJA - 東京ベースのビジョンSaaS。小売・製造分野の店舗分析。

Recruit Holdings - ジョブズル・インディードなど子会社を通じてビジョン採用システム。

ALBERT(現Accenture Japan) - 産業AI/ビジョン・コンサルティング。

Nikon AI - 医療画像・産業検査。カメラ会社がビジョンAIに拡張。

LeapMind - 量子化推論エンジンBlueoilで組込ビジョンに強い。

SoftBank Robotics - Pepper・NAOのビジョン・システム。

Fast Retailing(UNIQLO) - 自社ビジョン・ライブラリで店舗カメラ分析。

日本学界はOCR・文書ビジョン・ロボティクス・ビジョンに強い。東大IIS・京大・名大・東工大が定期的にCVPR発表を出す。


第24章 - 2026年のコンピュータビジョン・エンジニアの姿勢

これまで整理した24章の結論を一ページに縮めるとこうだ。

(1) 学習はできるだけ避けよ。 事前学習モデル・オープン語彙・VLMの組み合わせで80%は終わる。データを1万枚集める時間よりGrounding DINOプロンプトを磨く時間の方が短い。

(2) パイプラインを設計せよ、モデルを学習するな。 2026年の仕事は「どのモデルをどの順番で呼ぶか」であって、「どの損失関数で学習するか」ではない。

(3) VLMと伝統モデルを分業させよ。 VLMに「何を探すか」を問い、伝統モデルに「どこにあるか」を問う。これが2026年のビジョン・システムの標準的な形だ。

(4) 推論ランタイムを軽く見るな。 PyTorchで30 FPSが出るモデルがTensorRTでは200 FPSが出る。6倍差はユーザ体験では別の製品だ。

(5) ライセンスをよく見よ。 YOLO系はAGPLだ。会社の製品にそのまま入れるとソースコード公開義務が生じる。RT-DETR・D-FINE・MMDetectionを代替として知っておけ。

(6) 「ピクセルの仕事」はOpenCVに任せよ。 色空間・リサイズ・デコード・エンコードは依然としてOpenCVが最も速く安定している。

(7) データセットよりラベリング・ツールが先だ。 SAM 2統合のCVAT/Roboflowから始めよ。手でボックスを描いていた時代は終わった。

ビジョン・エンジニアの未来は**「モデルを作る人」ではなく「モデルを束ねる人」**だ。道具は多い。並ぶ列を間違えるな。


References