![見出し画像](https://assets.st-note.com/production/uploads/images/154088758/rectangle_large_type_2_9103f674ad6a9631220e57bd612fc268.png?width=1200)
【ComfyUI】 CogVideoXでvideo2videoを試してみた
この記事では、ComfyUIとCogVideoXを使って既存の動画を編集する方法を紹介します。サンプルワークフローを用いながら、各ノードの設定や役割を解説し、さらにプロンプトとdenoise_strengthの値を変更することで動画がどのように変化するかを具体的に示します。ControlNetのような高度な編集はまだ難しいものの、CogVideoXの基本的な使い方と可能性を理解するのに役立つでしょう。
CogVideoXの基本的な使い方は、以下の記事をご覧ください。
AICU media様がComfyUIの使い方を一から教えるマガジン「ComfyUIマスターガイド」を連載しています。こちらのマガジンに掲載する記事の執筆協力をしておりますので、ComfyUIを学びたい方は、ぜひ以下のリンクよりマガジンをご購読ください!
1. CogVideoXの基本的な使用方法
使用するモデル「CogVideoX」の基本的な使用方法に関しては、前回の記事で紹介しているので、以下のリンクより前回の記事をご覧ください。本記事では、この辺りの説明は割愛します。
2. 使用するカスタムノード
ComfyUI-CogVideoXWrapper
CogVideoXをComfyUIで使用するためのカスタムノード「ComfyUI-CogVideoXWrapper」については、前回の記事で紹介しているので、以下のリンクより前回の記事をご覧ください。
ComfyUI-KJNodes
ComfyUI-KJNodesは、ComfyUIの既存ノードの機能を組み合わせて作成された便利なノードを提供しています。今回使用するサンプルワークフローで、このカスタムノードを使っているため、インストールが必要になります。インストールは、ComfyUI Managerから可能です。
ComfyUI-VideoHelperSuite
生成した画像を動画ファイルとして出力するために「ComfyUI-VideoHelperSuite」を使用します。ComfyUI-VideoHelperSuiteは、ComfyUI Managerからインストールすることができます。以下がComfyUI-VideoHelperSuiteのリポジトリです。
3. 参照に使用する動画
今回使用する動画は、pixabayから以下の動画を使わせていただきました。お猿さんの動画です。
![](https://assets.st-note.com/img/1726021724-bMxZsq40QoOAuEFnBHT6vyYh.png?width=1200)
以下のリンクよりダウンロード可能です。
4. ワークフローの全体像
ComfyUI-CogVideoXWrapperのリポジトリでサンプルのワークフローを提供しています。今回は、その中の「cogvideo_5b_vid2vid_example_01.json」を使用します。以下のリンクからワークフローをダウンロードし、ComfyUIにロードしてください。
以下がワークフローの全体図です。
![](https://assets.st-note.com/img/1726020254-TJBRW6FK5yZ0VklaezwbgrdH.png?width=1200)
このワークフローをフローチャートで以下のように図示しました。
![](https://assets.st-note.com/img/1726121173-XfsBCydzNZOEkuS1J7eHDhp9.png?width=1200)
ワークフローは、以下のような流れで処理されていきます。
VHS_LoadVideo(動画読み込み)から始まり、入力動画を読み込みます。
GetImageSizeAndCount(画像サイズと数の取得)とImageResizeKJ(画像リサイズ)を通じて、動画フレームが処理されます。
DownloadAndLoadCogVideoModel(CogVideoモデルのダウンロードと読み込み)がCogVideoモデルを提供します。
CLIPLoader(CLIPローダー)がCLIPモデルを読み込み、テキストエンコーディングに使用されます。
2つのCogVideoTextEncode(CogVideoテキストエンコード)ノードがポジティブとネガティブのプロンプトを処理します。
CogVideoSampler(CogVideoサンプラー)が、エンコードされた画像、テキストの条件付け、CogVideoモデルを組み合わせて新しいフレームを生成します。
生成されたフレームはCogVideoDecode(CogVideoデコード)によってデコードされます。
ImageConcanate(画像連結)で元の画像と生成された画像が連結されます。
最後に、VHS_VideoCombine(動画結合)を使用して最終的な動画が生成されます。
5. 各ノードの解説
以下より各ノードの解説をします。CogVideoX関連のノードに関しては、前回の記事で説明済みのため、割愛します。
Frames to load
「Load Video (Upload)」ノードに接続し、読み込むフレーム数を設定します。サンプルワークフローでは、33フレームに設定されています。
![](https://assets.st-note.com/img/1726108532-sCSDtfOF7nZHy3WPLpJmjUqI.png)
Load Video (Upload)
参照元動画を読み込みます。「choose video to upload」から先ほどダウンロードした動画をアップロードしてください。
![](https://assets.st-note.com/img/1726108813-2QFIiHYceJTKkdmjfNqUtuPC.png)
入力
meta_batch: バッチ処理を行う場合は、VHS_BatchManager ノードの出力を入力します。
vae: 読み込んだ画像を潜在変数に変換する場合は、VAE モデルを入力します。
frame_load_cap: 読み込むフレーム数の上限を指定します。0を指定すると、すべてのフレームを読み込みます。
出力
IMAGE: 読み込まれた画像シーケンス。vae が指定されていない場合は、画像のリストになります。vae が指定されている場合は、潜在変数 を含む辞書になります。
frame_count: 読み込まれたフレーム数。
audio: ビデオに音声がある場合は、音声データを含む辞書。
video_info: 読み込まれたビデオの情報を含む辞書。
ウィジェット
video: 読み込むビデオを選択します。
force_rate: フレームレートを強制的に変更します。0-60の範囲で設定し、0を設定すると、元のフレームレートが維持されます。
force_size: フレームサイズを変更するかどうかを指定します。
Disabled: サイズ変更を行いません。
Custom Height: 高さをcustom_heightで指定し、幅はアスペクト比を維持して自動調整します。
Custom Width: 幅をcustom_widthで指定し、高さはアスペクト比を維持して自動調整します。
Custom: 幅と高さをcustom_widthとcustom_heightで指定します。
256x?: 幅を256に固定し、高さはアスペクト比を維持して自動調整します。
?x256: 高さを256に固定し、幅はアスペクト比を維持して自動調整します。
256x256: 幅と高さを256に固定します。
512x?: 幅を512に固定し、高さはアスペクト比を維持して自動調整します。
?x512: 高さを512に固定し、幅はアスペクト比を維持して自動調整します。
512x512: 幅と高さを512に固定します。
skip_first_frames: ビデオの先頭からスキップするフレーム数を設定します。
select_every_nth: 読み込むフレームを間引く場合の間隔を設定します。
Get Image Size & Count
画像のサイズとフレーム数を取得し、それを出力して次のノードに渡します。
![](https://assets.st-note.com/img/1726116742-fMBlSCUz4Nd2ZRWPchkayAI9.png?width=1200)
入力
image: サイズとバッチサイズを取得する画像。
出力
image: 入力された画像 (変更なし)。
width: 画像の幅 (ピクセル単位)。
height: 画像の高さ (ピクセル単位)。
count: バッチサイズ (画像の枚数)。
Resize Image
Resize Imageは、ComfyUIで画像のサイズ変更を行うためのノードです。様々な入力オプションがあり、柔軟なサイズ変更処理を実現できます。
![](https://assets.st-note.com/img/1726120262-CiWZHFjnMTSqbOw1kBsh9NEo.png?width=1200)
入力
image: サイズを変更する画像。
get_image_size: この入力に画像を接続すると、その画像のサイズがターゲットサイズとして使用されます。他のノードでサイズ変更された画像のサイズを継承する際に便利です。
width_input, height_input: これらの入力に整数値を接続すると、それぞれターゲットの幅と高さとして使用されます。他のノードから計算されたサイズ値を使用する際に便利です。
出力
IMAGE: サイズが変更された画像。
width: 画像の幅。
height: 画像の高さ。
ウィジェット
width: ノードのウィジェットで直接ターゲットの幅を指定します。
height: ノードのウィジェットで直接ターゲットの高さを指定します。
upscale_method: アップスケール方法を指定します。選択肢は以下の通りです。
nearest-exact: 最近傍補間 (最近傍点のピクセル値をそのまま使用)
bilinear: バイリニア補間 (周辺4点のピクセル値を重み付け平均)
area: 面積平均補間 (周辺ピクセル値の面積比で重み付け平均)
bicubic: バイキュービック補間 (周辺16点のピクセル値を三次関数で補間)
lanczos: ランチョス補間 (周辺ピクセル値をsinc関数で補間)
keep_proportion: Trueに設定すると、アスペクト比を維持したままサイズ変更を行います。
divisible_by: 幅と高さをこの値で割り切れるように調整します。
crop: クロップ方法を指定します。選択肢は以下の通りです。
disabled: クロップを行いません。
center: 画像の中心を基準にクロップを行います。
CogVideo ImageEncode
CogVideo ImageEncodeは、入力画像を CogVideoX モデルの潜在空間 (Latent Space) にエンコードします。潜在空間とは、画像の重要な特徴を圧縮して表現した空間のことです。CogVideoX は、この潜在空間上で動作することで、高品質なビデオ生成を実現します。
![](https://assets.st-note.com/img/1726122203-5hSW3oRiwJ7pQAurEH8Tl9nG.png?width=1200)
入力
pipeline: DownloadAndLoadCogVideoModelノードから出力された CogVideoXPipelineを含む辞書を受け取ります。
image: エンコードする入力画像を受け取ります。
mask: 入力画像に適用するマスク画像を受け取ります。マスクされた領域は、ビデオ生成時に変更されません。
出力
samples: エンコードされた潜在空間のテンソルを出力します。
ウィジェット
chunk_size: 時間方向のチャンクサイズを指定します。デフォルトは 16 です。大きな値ほどメモリ使用量が増加しますが、処理速度が向上する可能性があります。
enable_vae_slicing: VAE (Variational Autoencoder) のスライスを有効にするかどうかを指定します。デフォルトは True です。True に設定すると、VAE の処理を複数のステップに分割することで GPU メモリ使用量を削減できます。
6. ワークフローの実行
それでは、これまでの設定でワークフローを実行します。お猿さんを青くするような以下のプロンプトを入力しました。
A medium shot of three fantastical blue-furred Hamadryas baboons perched on a weathered log in a natural setting. The baboons, exhibiting an unusual blue hue, display typical Hamadryas social behavior as they huddle together. Capture the details of their fur, their expressive faces, and the contrast of their vibrant blue color against the natural browns and greens of the environment.
CogVideo Samplerのdenoise_strengthを変えて、動画の変化を確認しました。まずは、denoise_strengthを0.85にして生成した結果です。元の動画のニュアンスは残っているものの、かなり大胆な変化が見られます。
![](https://assets.st-note.com/production/uploads/images/154086172/picture_pc_cc3fdf7a4f03395dc8866622270ca48d.gif?width=1200)
次は、denoise_strengthを0.50にして生成した結果です。ほとんど変化は見られず、毛並みが若干青色になっている程度です。
![](https://assets.st-note.com/production/uploads/images/154086413/picture_pc_61b872ba565f71a617a4159d6cbddc4d.gif?width=1200)
ControlNetがないので、元の形状を維持しながら特定の箇所だけ変更するということが難しいと感じました。今後CogVideoXが発展し、ControlNetにも対応すれば、用途が大きく広がるので、今後の発展に期待です!
![](https://assets.st-note.com/img/1726146850-2t4yx0eY37FKkBQqZghuHmPi.png?width=1200)
この記事でご紹介したAI技術の応用方法について、もっと詳しく知りたい方や、実際に自社のビジネスにAIを導入したいとお考えの方、私たちは、企業のAI導入をサポートするAIコンサルティングサービスを提供しています。以下のようなニーズにお応えします。
AIを使った業務効率化の実現
データ分析に基づくビジネス戦略の立案
AI技術の導入から運用・教育までの全面サポート
専門家によるカスタマイズされたAIソリューションの提案
初回相談無料ですので、お気軽にご相談ください。以下のリンクからお問い合わせください。