見出し画像

Gemini API で 動画の質問応答 を試す

「Gemini API」で動画の質問応答を試したので、まとめました。


1. Gemini 1.5 Pro の 動画データ入力

「Gemini 1.5 Pro」で動画データでの入力が可能になりました。
サポートしているファイル形式は、次のとおりです。

・MP4 : video/mp4
・MPEG : video/mpeg
・MOV : video/mov
・AVI : video/avi
・FLV : video/x-flv
・MPG : video/mpg
・WebM : video/WebM
・WMV : video/WMV
・3GPP : video/3gpp

「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」を使用します。

(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org and licensed under the Creative Commons Attribution 3.0 License.
# 動画の準備
!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)



いいなと思ったら応援しよう!