写真の山を、顔を中心にクロップする必要がありました。縦向きの写真を、動画用の横向きフレームにするのです。基本的なクロップは、画像の中央や、指示すれば上または下を取りますが、被写体を見つけることはできません。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モードで、実行のたびに次の写真を取り出します。
何回実行するか? バッチ数は、写真の枚数(例えば18)に設定します。ただしバッチ数は100で止まります。500枚なら、止めるまでキューに入れ続ける**Run (Instant)**を使います。速いので、20〜30分放っておけば、千枚の写真が終わります。
次に、Image Resizeノードが、比率を保ったまま各写真の長辺が1920ピクセルになるように縮尺します。私の写真は、こうすると縦向きのフルHDフレームにうまく収まりました。
2. Florence 2で顔を見つける
ComfyUI ManagerからFlorence 2パックをインストールします。モデルは、初回の実行時に自動でダウンロードされます。
どのモデルか:
- Base: 顔を見つけるような簡単なタスクには完璧で、速いです。あまり誤作動しません。
- Large: かなり遅いものの、単なるボックスではなく、手と腕のような実際の形を輪郭取りできます。
- Fine-tuned(ft)版: 使い道が見つかりませんでした。良い結果が出たことがありません。
メインのFlorence 2ノードで、見つけたいもの(「face」「hands」「t-shirt」)を入力し、タスクをcaption to phrase groundingにします。これが、対象の位置のマスクを返すタスクです。ほかのタスクは、画像のキャプションを書くなどの別の仕事をします。他のワークフローでは便利ですが、ここでは使いません。
マスクのプレビューが、見つけたものを表示します。取りすぎることもあります。ある写真では顔ではなく赤ん坊全体を拾い、2人が写った写真では、片方の顔しか見つけないことがありました。「faces」や「two faces」のような変化を試してください。プロンプトは、できるだけシンプルにしています。
3. マスクを拡大して、フレームを設定する
検出されたボックスはぴったりで、そこまで詰めたクロップは顔に食い込みます。Grow Maskノードがそれを拡大し、ここでは200ピクセルです。ぴったりにしたければ0、非常に大きな写真ならもっと大きく(6,000ピクセルの写真ならより大きな拡大が必要)します。拡大すると角が面取りされますが、最終的なクロップは長方形なので無視してください。
拡大したマスクは、フレームに対してまだ形が合わないことがあるので、私が通して使っている寸法の1920 × 1080にクロップします。
4. クロップして書き出す
Image Crop by Maskが、バッチローダーから元の写真を受け取り、マスクでクロップします。そのクロップは中途半端なサイズになりうるので、最後のImage Resizeをfill/crop方式にして、正確なHDに揃え、必要なら少し余計に切り落とします。
映画風のフレームを狙っていて、結果は完璧でした。本当にきれいなフレーミングです。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ピクセル)ことで、クロップに余裕ができます。非常に大きな写真では、さらに拡大してください。

