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

- Name
- Youngju Kim
- @fjvbn20031
プロローグ - コンピュータビジョンは「見る」ではなく「問う」になった
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年現在二つが併存している。
差異を整理すると次のようになる。
| 項目 | Detectron2 | Detectron3 |
|---|---|---|
| 既定バックボーン | ResNet, ViT | ConvNeXt v2, DINOv3, SAM2エンコーダ |
| 検出ヘッド | Mask R-CNN, Cascade R-CNN | Mask R-CNN, Mask2Former, ViTDet |
| 学習フレームワーク | PyTorch 1.x/2.x | PyTorch 2.5+, torch.compile既定 |
| Configシステム | YACS (yaml) | LazyConfig (pythonic) |
| 分散学習 | DDP | FSDP + 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まで出た。一社が一年に一〜二回メジャーを出す速度は他のどのビジョン・フレームワークも追いつけない。
核心を整理すると次のようになる。
| バージョン | リリース | 核心変化 | ライセンス |
|---|---|---|---|
| YOLOv8 | 2023 | Anchor-free、classification/segmentation統合 | AGPL-3.0 |
| YOLOv9 | 2024 | PGI(Programmable Gradient Information)、GELAN | AGPL-3.0 |
| YOLOv10 | 2024 | NMS-freeヘッド、end-to-end学習 | AGPL-3.0 |
| YOLOv11 | 2025 | C3k2ブロック、SPPF + C2PSA、より少ないパラメータ | AGPL-3.0 |
| YOLOv12 | 2026 | Attention中心アーキテクチャ、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系の家族は次の通り。
| モデル | リリース | パラメータ | 特徴 |
|---|---|---|---|
| SAM | 2023 | 91M-636M | 画像セグメンテーション |
| SAM 2 | 2024 | 39M-224M | 動画+画像 |
| SAM 2.1 | 2024末 | 同上 | 小オブジェクト・遮蔽処理改善 |
| SAMURAI | 2024 | 同上 | カルマン・フィルタ・ベースの追跡強化 |
| FastSAM | 2023 | 68M | YOLOv8-segバックボーン、50倍速い |
| MobileSAM | 2023 | 9.8M | モバイル向け軽量化 |
| EfficientSAM | 2023 | 26M | KDで軽量化 |
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 Pose | 33 | モバイル実時間 |
| OpenPose | 25(BODY_25) | マルチパーソン、古い標準 |
| AlphaPose | 17(COCO) | Top-down精度 |
| MMPose | 17〜133 | 最も広いモデル・カタログ |
| DWPose | 133(全身+顔+手) | ControlNet姿勢条件の標準 |
| RTMPose | 17 | モバイル実時間、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が道具の中で直接呼ばれる。
| 道具 | ライセンス | 強み |
|---|---|---|
| CVAT | MIT、オープンソース | 最も広い形式サポート、動画に強い |
| Label Studio | Apache 2.0 | NLP/オーディオ/画像統合、MLバックエンド |
| Roboflow Annotate | 商用SaaS | SAM/Grounding DINO統合、コラボ |
| VIA | BSD、オープンソース | 軽量で単一HTMLファイル |
チーム単位の作業ならRoboflowやCVAT、モデル統合が重要ならLabel Studio、5分で始める必要があるならVIA。
第20章 - 推論ランタイム - ONNX Runtime, TensorRT, OpenVINO
学習されたモデルを速く実行することが推論ランタイムの仕事だ。2026年の選択肢。
| ランタイム | ターゲット | 強み |
|---|---|---|
| ONNX Runtime | クロスプラットフォーム | CPU/GPU/NPUすべて、最も標準 |
| TensorRT | NVIDIA GPU | 最速、INT8/FP8量子化 |
| OpenVINO | Intel CPU/iGPU/NPU | x86 PCで最強 |
| CoreML | Apple Silicon | iOS/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
- OpenCV - https://opencv.org/
- OpenCV 5.x roadmap - https://github.com/opencv/opencv/wiki/OpenCV-5
- MediaPipe - https://developers.google.com/mediapipe
- MediaPipe Tasks API - https://developers.google.com/mediapipe/solutions/tasks
- Detectron2 - https://github.com/facebookresearch/detectron2
- Detectron2 Model Zoo - https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md
- Ultralytics YOLO - https://github.com/ultralytics/ultralytics
- Ultralytics docs - https://docs.ultralytics.com/
- MMDetection - https://github.com/open-mmlab/mmdetection
- MMPose - https://github.com/open-mmlab/mmpose
- Roboflow - https://roboflow.com/
- Roboflow Supervision - https://github.com/roboflow/supervision
- HuggingFace Transformers Vision - https://huggingface.co/docs/transformers/main/en/tasks/object_detection
- Segment Anything 2 - https://github.com/facebookresearch/sam2
- SAM 2 paper - https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/
- Grounding DINO - https://github.com/IDEA-Research/GroundingDINO
- Grounding SAM - https://github.com/IDEA-Research/Grounded-Segment-Anything
- Florence-2 - https://huggingface.co/microsoft/Florence-2-large
- YOLO-World - https://github.com/AILab-CVC/YOLO-World
- DUSt3R - https://github.com/naver/dust3r
- MASt3R - https://github.com/naver/mast3r
- VGGT - https://github.com/facebookresearch/vggt
- Depth Anything v2 - https://github.com/DepthAnything/Depth-Anything-V2
- Marigold - https://github.com/prs-eth/Marigold
- Apple DepthPro - https://github.com/apple/ml-depth-pro
- DINOv3 - https://github.com/facebookresearch/dinov3
- CLIP - https://github.com/openai/CLIP
- SigLIP 2 - https://huggingface.co/collections/google/siglip2
- DWPose - https://github.com/IDEA-Research/DWPose
- ByteTrack - https://github.com/ifzhang/ByteTrack
- ONNX Runtime - https://onnxruntime.ai/
- TensorRT - https://developer.nvidia.com/tensorrt
- OpenVINO - https://docs.openvino.ai/
- Apple CoreML - https://developer.apple.com/documentation/coreml
- TFLite - https://www.tensorflow.org/lite
- NCNN - https://github.com/Tencent/ncnn
- MNN - https://github.com/alibaba/MNN
- CVAT - https://github.com/cvat-ai/cvat
- Label Studio - https://labelstud.io/
- Naver Labs Europe - https://europe.naverlabs.com/
- Lunit - https://www.lunit.io/
- Preferred Networks - https://www.preferred.jp/en/