ComfyUIのAIで、何千枚もの写真を顔を中心に自動クロップする

インテリジェントな一括クロップです。Florence 2がフォルダ内のすべての写真から顔(または名指ししたもの)を見つけ、ComfyUIがその周りを、任意のアスペクト比できれいに中央に収めてクロップします。

Anton Tenitsky2026年10月13日約8分で読めます動画版は下にあります

このガイドはAIで英語から翻訳したもので、誤りを含む可能性があります。英語の原文を読む。

それぞれ顔を中心に自動クロップした、マリリン・モンローの白黒写真のグリッド

写真の山を、顔を中心にクロップする必要がありました。縦向きの写真を、動画用の横向きフレームにするのです。基本的なクロップは、画像の中央や、指示すれば上または下を取りますが、被写体を見つけることはできません。AIならできます。このワークフローはフォルダ内のすべての写真から顔を見つけ、その周りをきれいなフレームでクロップします。手でもTシャツでも、名前を挙げられるものなら何でも、同じようにクロップできます。

デモには、マリリン・モンローのパブリックドメインの写真を使います。

顔の周りに横長のクロップ領域を配置した、マリリン・モンローの縦向きの写真
目標:写真の真ん中ではなく、顔の周りに置いた横向きのフレーム。

ポイント

  • Load Image Batch(incrementalモード)で写真のフォルダを読み込む。
  • Florence 2(タスク:caption to phrase grounding)で顔を見つける。
  • 顔の周りにクロップの余裕が出るよう、マスクを拡大する。
  • マスクでクロップし、fill cropでリサイズして正確なサイズ(私は1920 × 1080)にする。
  • 速度: 500〜1,000枚が、約20〜30分。

ワークフローは私のPatreonにあります。以下では、各部分の仕組みを説明します。

1. 写真を読み込んでリサイズする

Load Image Batchがフォルダを指定し、incremental imageモードで、実行のたびに次の写真を取り出します。

フォルダパスを指定してincremental imageに設定したLoad Image Batchノードと、Image Resizeノード
バッチインポート:フォルダパスとincrementalモード。

何回実行するか? バッチ数は、写真の枚数(例えば18)に設定します。ただしバッチ数は100で止まります。500枚なら、止めるまでキューに入れ続ける**Run (Instant)**を使います。速いので、20〜30分放っておけば、千枚の写真が終わります。

次に、Image Resizeノードが、比率を保ったまま各写真の長辺が1920ピクセルになるように縮尺します。私の写真は、こうすると縦向きのフルHDフレームにうまく収まりました。

2. Florence 2で顔を見つける

ComfyUI ManagerからFlorence 2パックをインストールします。モデルは、初回の実行時に自動でダウンロードされます。

モデルのドロップダウンを開いたFlorence2ModelLoaderノード
Florence 2のモデルローダー。顔にはbaseがよく機能します。

どのモデルか:

  • Base: 顔を見つけるような簡単なタスクには完璧で、速いです。あまり誤作動しません。
  • Large: かなり遅いものの、単なるボックスではなく、手と腕のような実際の形を輪郭取りできます。
  • Fine-tuned(ft)版: 使い道が見つかりませんでした。良い結果が出たことがありません。

メインのFlorence 2ノードで、見つけたいもの(「face」「hands」「t-shirt」)を入力し、タスクをcaption to phrase groundingにします。これが、対象の位置のマスクを返すタスクです。ほかのタスクは、画像のキャプションを書くなどの別の仕事をします。他のワークフローでは便利ですが、ここでは使いません。

顔が見つかった場所を白い長方形で示したマスクのプレビュー付きFlorence 2ノード
「Face」は顔の周りのボックスを見つけます。クロップには、大まかな位置で十分です。

マスクのプレビューが、見つけたものを表示します。取りすぎることもあります。ある写真では顔ではなく赤ん坊全体を拾い、2人が写った写真では、片方の顔しか見つけないことがありました。「faces」や「two faces」のような変化を試してください。プロンプトは、できるだけシンプルにしています。

3. マスクを拡大して、フレームを設定する

検出されたボックスはぴったりで、そこまで詰めたクロップは顔に食い込みます。Grow Maskノードがそれを拡大し、ここでは200ピクセルです。ぴったりにしたければ0、非常に大きな写真ならもっと大きく(6,000ピクセルの写真ならより大きな拡大が必要)します。拡大すると角が面取りされますが、最終的なクロップは長方形なので無視してください。

顔のボックスがより大きな八角形に拡大されたマスクのプレビュー
拡大したマスク。面取りされた角は関係ありません。クロップは長方形です。

拡大したマスクは、フレームに対してまだ形が合わないことがあるので、私が通して使っている寸法の1920 × 1080にクロップします。

4. クロップして書き出す

Image Crop by Maskが、バッチローダーから元の写真を受け取り、マスクでクロップします。そのクロップは中途半端なサイズになりうるので、最後のImage Resizeをfill/crop方式にして、正確なHDに揃え、必要なら少し余計に切り落とします。

顔を中心にフレーミングした、白黒写真の2つの映画的な横向きクロップ
結果:顔を中心にした、映画的な横向きのクロップ。

映画風のフレームを狙っていて、結果は完璧でした。本当にきれいなフレーミングです。Save Imageが、設定したフォルダにファイルを書き出します。ファイル名の作り方は、ワークフロー内のノートが説明しています。

解像度についての注意

クロップは顔にズームインするため、結果が小さくなることがあります。もっと大きくしたければ、アップスケーラーに通してください。無料のAIアップスケーリングのガイドにそのためのワークフローがあります。Florence 2でできることの詳細は、Florence 2であらゆるものをマスクするをご覧ください。

動画版を見る (7:15)

上の内容はすべて動画でも説明しています。画面を見ながら進めたい方はこちらをどうぞ。 動画は英語です。

よくある質問

ComfyUIで100枚を超える画像を処理するにはどうしますか?

バッチ数は100で止まります。それ以上は、止めるまで実行をキューに入れ続けるRun (Instant)を使います。500枚や1,000枚のフォルダは、20〜30分かかります。

顔の検出には、どのFlorence 2モデルを使うべきですか?

baseは速く、顔のような簡単なものはうまく扱えます。largeは遅いものの、形をより正確に輪郭取りできます。fine-tunedのバージョンは、使い道が見つかりませんでした。

マスクを拡大するのはなぜですか?

検出されたボックスは顔にぴったりです。拡大する(私は200ピクセル)ことで、クロップに余裕ができます。非常に大きな写真では、さらに拡大してください。

Anton Tenitsky は コンピュータグラフィックスで15年以上の経験を持つ3Dアーティストで、Nickelodeon、Gameloft、Marvel Rivalsをはじめ多くのクライアントと仕事をしてきました。 プロフィールを見る

関連ガイド