Gemini API で 動画の質問応答 を試す
「Gemini API」で動画の質問応答を試したので、まとめました。
1. Gemini 1.5 Pro の 動画データ入力
「Gemini 1.5 Pro」で動画データでの入力が可能になりました。
サポートしているファイル形式は、次のとおりです。
「File API」は動画を1フレーム/秒(FPS)でサンプリングしますが、最適な推論品質を提供するために変更される可能性があります。解像度や品質に関係なく、個々の画像は258トークンを使用します。
2. 動画の質問応答
動画の質問応答の手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install -U -q google-generativeai
(2) 「Google AI Studio」でAPIキーを取得し、シークレットの「GOOGLE_API_KEY」に登録後、以下のセルを実行。
from google.colab import userdata
import google.generativeai as genai
# 環境変数の準備 (左端の鍵アイコンでGOOGLE_API_KEYを設定)
GOOGLE_API_KEY=userdata.get("GOOGLE_API_KEY")
genai.configure(api_key=GOOGLE_API_KEY)
(3) 動画の準備。
今回は、オープンソースな短編映画「Big Buck Bunny」を使用します。
# 動画の準備
!wget https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4
(4) 動画のアップロード
「File API」は2GB未満のファイルを受信することが可能で、プロジェクト毎に最大20GBのファイルを保存できます。ファイルの有効期限は2日間で、APIからダウンロードすることはできません。
# 動画のアップロード
video_file = genai.upload_file(path="BigBuckBunny_320x180.mp4")
print("Completed upload:", video_file.uri)
Completed upload: https://generativelanguage.googleapis.com/v1beta/files/XXXXXXXXXXXX
(5) File APIが動画受信を完了したかどうかを確認。
動画をアップロードした後、video_file.state.nameで、File APIが動画受信を完了したかどうかを確認できます。
import time
# APIがファイルを受信したことを確認
while video_file.state.name == "PROCESSING":
print('Waiting for video to be processed.')
time.sleep(10)
video_file = genai.get_file(video_file.name)
if video_file.state.name == "FAILED":
raise ValueError(video_file.state.name)
print("Video processing complete:", video_file.uri)
Waiting for video to be processed.
Waiting for video to be processed.
Video processing complete: https://generativelanguage.googleapis.com/v1beta/files/XXXXXXXXXXXX
(6) 動画の質問応答。
# モデルの準備
model = genai.GenerativeModel(
model_name="models/gemini-1.5-pro-latest"
)
# 推論の実行
response = model.generate_content(
["この動画を日本語で説明してください。", video_file],
request_options={"timeout": 600} # タイムアウト指定
)
print(response.text)
このビデオは、ビッグバックバニーという太ったウサギのアニメーション映画のトレーラーです。
**ストーリー**
ビッグバックバニーは、いたずら好きのリス、ネズミ、キツネのトリオに繰り返しいたずらされます。ウサギは最初はいたずらに耐えていますが、最終的に限界に達し、トリオに復讐することを決意します。
**シーンごとの説明**
* **0:00-0:22:** タイトルカードが表示されます。「THE PEACH OPEN MOVIE PROJECT PRESENTS BIG BUCK BUNNY」
* **0:23-0:55:** ビッグバックバニーが巣穴から出てきて、ストレッチをして周囲を見渡します。
* **0:56-1:37:** ビッグバックバニーは牧草地を歩き、花や蝶を楽しみます。木の枝から落ちて、リンゴを拾います。
* **1:38-2:28:** いたずら好きのトリオがリンゴを盗みます。ビッグバックバニーは彼らを追いかけますが、彼らは木に登って逃げます。
* **2:29-3:15:** ビッグバックバニーはトリオに仕返しをするために罠を仕掛けます。しかし、罠はうまくいかず、ビッグバックバニー自身が被害を受けてしまいます。
* **3:16-3:44:** ビッグバックバニーはトリオを捕まえようとしますが、彼らは逃げます。ビッグバックバニーは怒り、彼らを追いかけることを誓います。
* **3:45-4:58:** ビッグバックバニーはトリオを狩るための武器を作ります。彼は弓矢と槍を作ります。
* **4:59-6:19:** ビッグバックバニーはトリオを狩りに行きますが、彼らは逃げます。ビッグバックバニーは彼らを追いかけ続けます。
* **6:20-7:40:** ビッグバックバニーはついにトリオの一人、リスを捕まえます。ビッグバックバニーはリスを叱りますが、最終的には逃がしてしまいます。
* **7:41-8:09:** ビッグバックバニーは家に帰ります。彼はまだトリオに腹を立てていますが、彼らに仕返しをするのを諦めます。
* **8:10-9:40:** エンドクレジットが表示されます。
**トレーラーの雰囲気**
トレーラーはユーモラスで軽快な雰囲気です。ビッグバックバニーの滑稽な行動とトリオのいたずらが笑いを誘います。
**映画への期待**
トレーラーから判断すると、この映画は家族全員で楽しめるコメディのようです。ビッグバックバニーのいたずら好きのトリオとの戦いは、きっと多くの笑いを生み出すでしょう。
(7) ファイルの削除。
# ファイルの削除
genai.delete_file(video_file.name)