5.9K Views
May 21, 24
スライド概要
「Mobile勉強会 Wantedly × チームラボ × Sansan #14」での発表資料です。
https://wantedly.connpass.com/event/316051/
フリーランスiOSエンジニア 「エンジニアと人生」コミュニティ主宰
GPT-4o with iOS マルチーモーダルAPIに備える 堤 修一 (@shu223)
自己紹介 • 堤 修一 • @shu223 (GitHub, Zenn, Qiita, note, Docswell, 𝕏, YouTube, Podcast, etc...) • 書籍(商業出版4冊、個人出版多数 @BOOTH):
2024.5.13 GPT-4o発表 Hello GPT-4o | OpenAI 1行目: We’re announcing GPT-4o, our new flagship model that can reason across audio, vision, and text in real time. 「マルチモーダル」が肝
GPT-4oのモダリティ GPT-4o (“o” for “omni”) is a step towards much more natural human-computer interaction—it accepts as input any combination of text, audio, image, and video and generates any combination of text, audio, and image outputs. • 入力: テキスト・音声・画像・動画のあらゆる組み合わせ • 出力: テキスト・音声・画像のあらゆる組み合わせ
End-to-end With GPT-4o, we trained a single new model end-toend across text, vision, and audio, meaning that all inputs and outputs are processed by the same neural network. 音声 → [Whisper] → テキスト → [GPT] → テキスト → [TTS] → 音声 ⇓ 音声 → [GPT] → 音声
「マルチモーダルコミュニケーショ ン」の主戦場といえば・・・
スマホ • いつでもどこでも使える • みんな持ってる • マイク・カメラ完備 • (テキスト入力めんどくさい)
本発表のテーマ: モバイルアプリ ⇔ GPT のマルチモーダルコミュニケーションに備えよう
もうAPIは対応しているのか?
Chat Completion API対応状況 モデルにGPT-4oを指定可能 add gpt-4o model (#1417) · openai/openai-python
各種モダリティのAPI対応状況 モダリティ 入力 出力 テキスト ◯ ◯ 画像 ◯ ✕ 動画 △(後述) - 音声 ✕ ✕
Chat Completion APIに画像・動画を投げる
API Reference - OpenAI API
• 画像: "image_url" に画像データやURLを入れる
• 動画: フレーム画像を複数入れる
"content": [
{
"type": "image_url",
"image_url": ...
}
]
動画理解は可能だが、動画というモダリティに 完全に対応しているとは言い難い To-Be: 動画 → [GPT] → 出力 As-Is: 動画 → 複数の画像 → [GPT] → 出力
(補足)動画を複数画像に分解して送る方法の問題点 • End-to-endで学習されたGPT-4oのモダリティを活かせていな い • クライアントサイドで動画のデコード処理のオーバーヘッド • 動画フォーマットをデコードして送るためデータ量も増える • 音声情報も使用されない
(補足)OpenAI APIのVision機能について • GPT-4 Turbo with Visionモデルがリリースされた2023年 11月にAPIが追加 • 同月、OpenAIのAPIドキュメントにVision機能の使い方が追 加 • 動画を個々のフレーム画像に分割してモデルに入力すること で動画の内容理解ができると説明されている → つまりこのへんはGPT-4oの新機能ではない
GPT-4oのマルチモーダル入力をiOSか ら試す
デモ - iOS×GPT-4oでリアルタイム 動画理解
iOSで使えるOpenAI APIクライアント いろいろある が、現段階では MacPaw/OpenAI でよさそう • スター数がもっとも多い( 利用実績) • 直近でもメンテされている • 依存ライブラリなし • ストリーミングAPI、画像生成、TTS等もサポート
MacPaw/OpenAI は Vision API をサポート しているのか? READMEには何も書いてないが、ソースコードを読むと実はサポー トしている 1 1 調査の詳細: MacPaw/OpenAI はマルチモーダル入力に対応しているのか
iOS×GPT-4oで画像理解 • プロンプト: "What's in this image?" • (コードは公開予定)
iOS×GPT-4oで動画の要約 • プロンプト:"動画の要約を提供してく ださい。" • 60sの動画から2秒おきにフレーム抽出 /長辺768pxになるようリサイズ 2 • (コードは公開予定) 2 関連記事: GPTによる動画理解のOpenAI公式ガイドを読む
iOS×GPT-4oでリアルタイム 動画理解 • "detail" は "low" を指定 • 512x512にリサイズ&クロップ • 前フレームの説明テキストも同梱 • 並列化はまだ • (コードは公開予定)
ストリーミング入出力に備える モダリティ 入力 出力 テキスト ◯ ◯ 画像 ◯ ✕ 動画 ここ - 音声 ここ ここ
このへんをヒントに備えておくとよさそう? • Whisper API・・・音声入力API • TTS API・・・音声出力API
Whisper API(音声入力) • ストリーミング入力はサポートしてない • 「音声をチャンクごとに送る」方式でストリーミングを実現し ているサードパーティー実装はいろいろある
TTS API(音声出力) • ストリーミング出力をサポートしている • ドキュメント: Text to speech - OpenAI API • Python実装 • 残念ながら MacPaw/OpenAI ではストリーム出力はサポート していなかった(ソース読んで確認) • (Contributionチャンス!)
新APIのリリースに気付くには 公式Pythonライブラリのreleaseをwatchする https://github.com/openai/openai-python/releases
まとめ • GPT-4oの「マルチモーダル」はスマホで大活躍しそう • OpenAI APIの現在の対応状況 • iOSでの「GPT-4oを用いた画像理解・動画理解」の実装 • ストリーミング入出力対応に備えよう
ご清聴ありがとうございました!