Foundation Models による画像理解と、Vision フレームワークの高い画像分析機能を Foundation Models に組み込む方法。Vision フレームワークが被写体の領域を推定してくれる、サリエンシー(顕著性)分析ができることを知った。
What’s new in image understanding
0:00 – Introduction
- Vision と Foundation Models の新しい画像理解機能
- Tap-to-segment API
- 大規模言語モデルへの画像入力
- 画像ベースのツール呼び出し
- watchOS 上の Vision
1:36 – Segment images with tap-to-segment
- Vision の新しいタップしてセグメント API
- ポイントタップ・矩形選択・なげなわストローク・スクリブル(選択したい範囲をざっくり塗りつぶし)またはその組み合わせで画像内の任意オブジェクトを切り抜き
- 実装手順
ImageRequestHandlerにイメージを渡して初期化GenerateIterativeSegmentationRequest(seed: point)でリクエスト生成handler.perform(request)で観察結果(observation)を取得しpixelBufferをマスクとして利用request.addIncludedPoint(newPoint)で追加タップによるマスクの精緻化が可能
- 座標系:左下に原点がある、正規化座標系(0〜1)を使用
- なげなわストロークの線幅は太めが推奨(画像全体幅の1%以上):細いと良い結果が得られない
- 制約:初めての実行前にオンデバイスモデルのダウンロードが必要
request.donwloadAssets()で取得request.assetStatusで確認
5:50 – Image inputs for Foundation Models
- Foundation Models フレームワークで画像を直接 LLM に渡す方法
- キャプション生成・シーン理解・レシピ作成・インテリアデザイン提案などのタスクに対応
Promptブロック内にAttachment(image)を含めるだけで画像を渡せる
- Vision vs Foundation Models の使い分け
- Vision:決定論的な特定タスクにファインチューニング(セグメンテーション・特徴抽出など)、映像フレームごとのリアルタイム処理ができる高速さ
- Foundation Models:柔軟な自然言語を伴う理解や生成タスク
- Vision の専門性と FM の汎用性を組み合わせ
7:57 – Image-based tool calling
- 画像引数を受け取るツールで LLM の能力を拡張する手法
Toolプロトコルに準拠したツールを定義し、@GenerableなArgumentsにImageReferenceを含めるImageReferenceの解決@SessionProperty(\.history)でセッション履歴トランスクリプトを取得imageReference.resolve(in: transcript)で実際の画像を取り出すimageAttachment.pixelBuffer()でピクセルデータを取得
- 組み込み Vision ツール
BarcodeReaderTool:バーコード読み取りOCRTool:30以上の言語に対応- Vision によって、セグメンテーション、顔分析、ポーズ推定、物体検出と分類、軌道分析やオブジェクトトラッキングが可能
13:09 – Vision on watchOS
- watchOS で Vision を使ってウォッチアプリを強化
- サリエンシー(顕著性)解析でコンパクトな UI に最適な被写体を自動クロップ
GenerateObjectnessBasedSaliencyImageRequestで被写体の注目度を算出observation.salientObjects.firstで最も目立つオブジェクトのNormalizedRectを取得- ウォッチの小さな画面に常に最も関連性の高い部分を表示できる