Skip to content

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

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

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

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上で直接走らせる。

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

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

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

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に統合されていて一行で終わる。

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

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

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

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/

현재 단락 (1/459)

2010年代のコンピュータビジョンには明確な形があった。SIFT・HOG・Haarで特徴を抽出し、SVM・ランダムフォレストで分類し、OpenCVがすべてを束ねた。2020年代前半はResNet・Ef...

작성 글자: 0원문 글자: 23,895작성 단락: 0/459