WWDC26:What’s New in Image Understanding

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 プロトコルに準拠したツールを定義し、@GenerableArgumentsImageReference を含める
  • 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 を取得
    • ウォッチの小さな画面に常に最も関連性の高い部分を表示できる

WWDC25:Read documents using the Vision framework

Vision フレームワークによる文書スキャンと、そのほか Vision に追加された API について。文書構造を直感的な設計で抽出できるのは嬉しい。

今回の主題ではないが、画像の美的スコアを算出する API があるとは知らなかった。このスコアリングを用いて、フリマやマッチング系などユーザー投稿画像に対する評価ができるかも?どんな画像に対してどんな結果が返るのか気になった。


0:00 – Introduction

  • Vision は機械学習を簡単にアプリに統合できる API を提供
  • 人・オブジェクト検出、身体・手のポーズ追跡、軌道解析など多様な用途に対応
  • 全ての API は完全にオンデバイス動作で、高性能かつセキュア
  • iOS, macOS, iPadOS, tvOS, visionOS で利用可能
  • 現在31種類の画像解析 API があり、今回2つの新機能を追加

1:22 – Reading documents

  • RecognizeDocumentsRequest の登場
    • 従来の RecognizeTextRequest はテキストの行を抽出するが、構造情報が失われる
    • 新しい API は文書の構造要素と重要情報を抽出可能
    • 26言語のテキスト認識に対応
    • テーブル、リスト、段落、QR コード、メールアドレス、電話番号、URL を検出
      • テーブルの場合、従来は情報構造のないテキストとテキストボックスの位置情報を突合させる必要があった
      • RecognizeDocumentRequest はテーブルごとペーストする
  • DocumentObservation の構造
    • 階層構造でテキスト、テーブル、リスト、バーコードを含むコンテナを表現
    • テーブルは2次元配列のセルで構成([[Cell]] 行・列でアクセス可能)
    • リストはアイテムで構成
    • テーブル、各要素は boundingRegion で座標情報を提供
  • 実用例:顧客登録シートの処理
    • 従来:各セルが個別オブジェクトとして返され、位置情報で行を判断
    • 新機能:テーブル構造が自動解析され、セルが行単位でグループ化
  • テキストデータの取得方法
    • transcript:コンテナ内の全テキストを単一文字列として取得
    • lines:テキストを行の配列として表示
    • paragraphsline を段落にグループ化
    • words:個別の単語リスト(中国語、日本語、韓国語、タイ語は非対応)
    • detectedData:メール、日付、URL などの重要データを自動検出
  • DataDetection フレームワークの活用
    • 電話番号、メールアドレス、郵便住所を多様な形式で検出
    • URL はリンクとして、時刻・日付はカレンダーイベントとして検出
    • 測定値と単位、金額と通貨を一緒に検出
    • 追跡番号、支払い ID、フライト番号も識別可能

13:35 – Camera lens smudge detection

  • DetectLensSmudgeRequest の導入
    • レンズの汚れにより低品質な写真が撮影されることを防ぐ
    • 汚れた画像を検出してユーザーにレンズの清掃やより良い写真の提供を促す
    • 高品質な画像のみを処理することを保証
  • 使用方法
    • smudge observation を生成し、confidence score(0〜1)で汚れの確率を示す
    • 1に近いほど汚れている可能性が高い
    • 適切な閾値(例:0.9)を設定してフィルタリング
  • 注意点と制限
    • カメラの動きによるブラー、長時間露光、雲や霧の画像も高いスコアを示す可能性
    • 低いスコアでも必ずしも高品質とは限らない
    • 他の Vision API との組み合わせ推奨:
      • DetectFaceCaptureQualityRequest:顔を含む画像の品質評価
      • CalculateImageAestheticScoresRequest:全体的な画像スコア評価(ドキュメントや領収書画像などユーティリティ画像の判別が可能)

17:59 – Hand pose update

  • 手のポーズ検出の改良
    • 2020年から DetectHandPoseRequest で21個の関節位置を検出
    • HandPoseObservation として結果を返す
    • ML 手ポーズ分類器(MLHandPoseClassifier)と手動作分類器(MLHandActionClassifier)を強化
  • 新モデルの特徴
    • より小さく現代化されたモデルに置き換え
    • 21個の関節検出は変わらず、精度向上
    • メモリ使用量とレイテンシを削減
    • 関節位置が以前のモデルと異なるため、既存の分類器の再トレーニングを推奨
  • 活用例
    • アプリ機能を制御するジェスチャ認識
    • カスタム手ポーズ・動作の分類器トレーニング