Using Florence2 with ComfyUI  「Florence2で物体検出と画像解析」

31/08/2024

AI ComfyUI Workflow

 

in English

Florence2 is an open source model from Microsoft that is an excellent system for image detection and prompt creation. Let's use this with ComfyUI.

1.Introduction

Install "ComfyUI-Florence2" from ComfyUI Manager.

kijai/ComfyUI-Florence2: Inference Microsoft Florence2 VLM

kijai/ComfyUI-Florence2: Inference Microsoft Florence2 VLM

Inference Microsoft Florence2 VLM. Contribute to kijai/ComfyUI-Florence2 development by creating an account on GitHub.


2.Prompt Analysis

First, let's have the image analyzed and extract the prompts. Download this workflow [workflow - Florence2caption] and drag & drop it onto the ComfyUI screen.


If you select caption as the task item in the "Florence2Run" node, it will output an image prompt. If you select detailed_caption, it will give you a more detailed description.


The models for running Florence2 are automatically downloaded at runtime when you change the model from the Model entry in the "DownloadAndLoadFlorence2Model" node. The download location is ComfyUI/models/LLM.

For each model, please refer to the above github page with links to check the size and performance.


3.Object Detection

The next step is detection. Let's try to detect hair in an image. Download this workflow [workflow - Florence2referring] and drag & drop it onto the ComfyUI screen.


Set "referring_expression_segmentation" in the "Florence2Run" node's task and enter the word "hair" in the input field, hair is detected and a mask is output.


Now, YOLO is commonly used for detection, but what do you think is the difference?

YOLO is highly accurate, but it requires training if you want to detect something on your own. Florence2, on the other hand, allows you to make your own detections without training. For example, if you type in the word “earring” as follows


Florence2 detects it correctly. If you feel that the accuracy is not good, try lowering the value of "num_beams".


However, there were some problems when I used it. Let's detect a "coffee cup".


It only detected one of the two cups. I tried various ways, but in my environment, it only detects one when there are multiple targets, so I am looking for a way to fix it.


Conclusion. YOLO for accuracy and Florence2 for versatility.



日本語解説(in Japanese)

Florence2 は Microsoft のオープンソースモデルで、画像検出やプロンプト作成に優れたシステムです。これを ComfyUI で使用しましょう。

1.導入

ComfyUI Manager から ComfyUI-Florence2 をインストールします。

kijai/ComfyUI-Florence2: Inference Microsoft Florence2 VLM

kijai/ComfyUI-Florence2: Inference Microsoft Florence2 VLM

Inference Microsoft Florence2 VLM. Contribute to kijai/ComfyUI-Florence2 development by creating an account on GitHub.


2.プロンプト解析

まずは画像を解析させ、プロンプトを抽出してみましょう。こちらのワークフロー[workflow - Florence2caption] をダウンロードし、ComfyUI の画面にドラッグ&ドロップしてください。

Florence2Run ノードの task の項目を caption にすると、画像のプロンプトを出力してくれます。 detailed_caption 等を選択すると、より詳しく内容を説明してくれます。

Florence2 を動かすためのモデルは、実行時に自動でダウンロードされます。DownloadAndLoadFlorence2Model ノードの Model の項目からモデルを変更すると、そのモデルをダウンロードします。ダウンロードされる場所は ComfyUI/models/LLM です。

各モデルについては上記の github ページにリンクが貼ってあるので、サイズや性能をご確認ください。


3.物体検出

次は検出です。画像から髪を検出させてみます。こちらのワークフロー[workflow - Florence2referring] をダウンロードし、ComfyUI の画面にドラッグ&ドロップしてください。

Florence2Run ノードの task の項目を referring_expression_segmentation にし、入力欄に hair と入力し実行すると、髪を検出しマスクを出力します。


さてここで、検出なら YOLO が一般的ですが、違いは何だと思いますか?

YOLO は高い精度を誇りますが、独自に検出したいものがある場合、トレーニングが必要です。しかし Florence2 はトレーニング無しに独自の検出を行えます。例えば以下のようにイヤリングと入力すれば

ちゃんと検出してくれました。精度が悪いと感じた場合は num_beams の値を低くしてみてください。


ただ使ってみると問題点もありました。コーヒーカップを検出してみます。

2つあるカップのうち一つしか検出してくれませんでした。色々試したのですが、私の環境では対象が複数ある場合1つしか検出してくれないため、修正方法を模索しています。


結論。精度の YOLO、汎用性の Florence2 と言えます。


Ko-fi

Major Contents

Contact us

名前

メール *

メッセージ *

QooQ