メインコンテンツへスキップ
見出し画像

Google Colabの強力GPUを使って美女画像から美女の動画を作ってみた

    Google Colabで割り当てられる「T4 GPU」は、AIの計算に特化したかなりパワフルな業務用GPU(グラフィックボード)で、画像を作成するばかりではなくて、画像を動画にすることもできます。

    Google Colabで画像を作成する方法は、1つ前のこちらの記事で無償公開しているので、興味ある方はそちらもご覧ください。

    Googleから機材を無償でレンタルしているだけなので、Google社のマーク・電子透かしなどが入らない独自の生成画像・動画として安心して活用することができます。

    先ずは、完成した動画から

    Google Colabで作成した動画の完成品です。現状においては、1.5秒と極めて短いものを作成するのが限度になっています。

    画像

    具体的な動画の作成手順

    ステップ1:Google Colabに行く

    1. Google Colab にアクセスする。

    2. 「ノートブックを新規作成」を開く。

    3. メニューを開く 画面の一番上にあるメニューバーから 「ランタイム」 をクリックし、その中にある 「ランタイムのタイプを変更」 をクリックしてGPUを選択する設定画面で「T4 GPU」(無料のやつです)に変更し、保存ボタンを押します。

    ステップ2:Colabを使って画像から動画を作成

    Colabのノートブックで、新しいコードセル([+コード])を追加して、以下のコードを貼り付けてください。

    以下のコードを実行すると、プログラムのすぐ下に 「Upload」というボタン が下に出てくるので、そこから画像をアップロードして、1~2分ほど待てば、勝手に完了します。パソコン、スマホのどちらからでもOKです。

    画像

    Python

    import torch
    from diffusers import StableVideoDiffusionPipeline
    from diffusers.utils import load_image, export_to_video
    from google.colab import files
    import ipywidgets as widgets
    from PIL import Image
    import io
    
    print("🔄 まずはAIモデルを準備します(初回は数分かかります)...")
    
    # 1. AIモデルの読み込み
    model_id = "stabilityai/stable-video-diffusion-img2vid-xt"
    pipe = StableVideoDiffusionPipeline.from_pretrained(
        model_id, 
        torch_dtype=torch.float16, 
        variant="fp16"
    )
    pipe.enable_model_cpu_offload()
    
    print("✨ 準備完了!下の『Upload』ボタンから画像をえらんでね!")
    print("--------------------------------------------------")
    
    # 2. アップロードボタンの作成
    uploader = widgets.FileUpload(accept='.jpg,.jpeg,.png', multiple=False)
    display(uploader)
    
    # ボタンが押されたら動くプログラム
    def on_upload_change(change):
        if not uploader.value:
            return
        
        print("\n📥 画像を受け取りました!動画に変換します...")
        
        try:
            uploaded_file = uploader.value[0] if isinstance(uploader.value, list) else list(uploader.value.values())[0]
            
            if 'content' in uploaded_file:
                image_bytes = uploaded_file['content']
            else:
                image_bytes = uploaded_file.content
                
            image = Image.open(io.BytesIO(image_bytes))
            image = image.resize((1024, 576))
            
            # 3. 動画生成(エラーが出ない安全な設定に直しました)
            print("🎬 強力GPUが計算中...(約1〜2分待ってね)")
            frames = pipe(
                image, 
                decode_chunk_size=4, 
                fps=14, 
                num_frames=21,        # 1.5秒に調整(顔の崩れ対策)
                motion_bucket_id=40   # 動きを少し抑えて顔を綺麗にキープ
            ).frames[0]
            
            # 4. 保存とダウンロード
            output_video_path = "output_video.mp4"
            export_to_video(frames, output_video_path, fps=14)
            
            print("✨ 動画が完成しました!自動的にパソコンへダウンロードします。")
            files.download(output_video_path)
            
        except Exception as e:
            print(f"❌ エラーが発生しました: {e}")
    
    # ボタンの監視設定
    uploader.observe(on_upload_change, names='value')
    1. 右側の再生ボタンを押して「コードを実行」します。

    1. 画面に出てきた 「Upload」ボタンをクリック します。

    画像
    Uploadが出現する
    1. あなたのパソコンから、あの画像(myfile.jpeg)を選択します。

    2. これだけで自動的に動画生成が始まり、終わると勝手にダウンロードされます!

    以下のような短い動画が完成しました!

    画像

    長い動画を作成することは可能?

    動画を長くすることはできますが、一筋縄ではいかないというのが現在の動画生成AIのリアルなところです。

    いま使っているStable Video Diffusion(SVD)というモデルのまま、コードの設定(num_frames)を増やして3秒や5秒といった長い動画を無理やり作ろうとすると、次のような壁にぶつかります。

    🛑 長い動画を作ろうとすると起きる「2つの壁」

    1. 後半がさらに大パニック(崩壊)を起こす さっき「1.5秒でも最後の方の顔がおかしくなった」とお話ししましたが、これを3秒、5秒と伸ばしていくと、後半は顔どころか画面全体がグチャグチャに溶けた抽象画のようになってしまいます。AIの「予想ミス」がさらに何倍も蓄積してしまうためです。

    2. GPUのメモリが足りなくてクラッシュする(Out of Memory) 長い動画を作る=GPUが一度に計算する画像(コマ数)が爆発的に増える、ということです。Colabの無料枠で使えるT4 GPUのメモリ容量を超えてしまい、動画が完成する前にプログラムが強制終了(エラー)してしまいます。


    あなたへのおすすめ