【ControlNet SoftEdge】Cannyより高精度なエッジ検出

【ControlNet SoftEdge】Cannyより高精度なエッジ検出 ツール

「SoftEdgeというプリプロセッサは、どんなことができるの?」
「Cannyより高精度なエッジ検出を行いたい」

このような場合には、この記事の内容が参考になります。
この記事では、ControlNetのプリプロセッサであるSoftEdgeについて解説しています。

本記事の内容

  • SoftEdgeとは?
  • SoftEdgeの利用方法
  • SoftEdgeの動作確認

それでは、上記に沿って解説していきます。

SoftEdgeとは?

ここで言うSoftEdgeとは、ControlNetのプリプロセッサのことを指します。

このSoftEdgeを用いると、エッジ検出モデルであるDexiNedを機能させることができます。
DexiNedとは、Dense Extreme Inception Network for Edge Detectionの略称です。
https://arxiv.org/abs/2112.02250

DexiNedは、ディープラーニングに基づいたエッジ検出器と言えます。
エッジ検出器と言えば、Cannyが有名です。

Cannyについては、次の記事で説明しています。

Cannyは、ControlNetのプリプロセッサでは最古参になります。
おそらく、みなさんも一度は利用したことがあるでしょう。

SoftEdgeを用いると、そのCannyと同じようにエッジ検出を行うことができます。
そして、SoftEdge(本体はDexiNed)はCannyよりも高精度と言われています。

実際、どれほど高精度なのでしょうか?
簡単にですが、比較してみましょう。

まずは、線が描きこまれたアニメ画像の場合です。

このような画像であれば、そこまで大きな差はありません。
左がCannyでエッジ検出した結果であり、右がSoftEdge(DexiNed)でエッジ検出した結果になります。

しかし、これが次のような写真のような画像となると事情が異なってきます。

同じく、左がCanny、右がSoftEdgeによるモノです。

一応、Cannyで最も精度が高いと思われるモデルを利用しています。

以上、SoftEdgeについて説明しました。
次は、SoftEdgeの利用方法を説明します。

SoftEdgeの利用方法

SoftEdgeの利用方法を説明します。
この記事では、AUTOMATIC1111版web UIでの利用を前提とします。

ここでは、SDXL 1.0ベースのモデルに関して説明します。
と言っても、SD 1.5との違いは利用するモデルぐらいでしょう。

SDXL 1.0ベースの場合、webUIのバージョンはv1.6.0以降である必要があります。

よくわからない場合は、最新のweb UIを利用しましょう。
web UIの準備ができたら、次はSoftEdge用のモデルをダウンロードします。

lllyasviel/sd_control_collection at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

上記ページから、次のファイルを選択します。

とりあえずは、fp16 モデル形式で問題はないでしょう。
fp32 モデル形式が必要な場合は、次のページからダウンロードできます。

controlnet-sd-xl-1.0-softedge-dexined.safetensors · SargeZT/controlnet-sd-xl-1.0-softedge-dexined at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

もちろん、fp32 モデル形式のファイルは2倍のサイズとなります。

ダウンロードしたファイルは、次の場所に保存します。

ファイルを保存できたら、「SoftEdge」をプリプロセッサとして選択してみましょう。
そうすると、次のように選択された状態になります。

fp 32モデル形式を設置しているなら、次のように表示されます。

モデルが出てこない場合は、モデル読み込みのアイコンをクリックしましょう。

ここまで確認できれば、SoftEdgeが利用できるようになっています。

以上、SoftEdgeの利用方法を説明しました。
次は、SoftEdgeの動作確認を説明します。

SoftEdgeの動作確認

SoftEdgeでは、「Preprocessor」を以下から選択することができます。

  • softedge_hed
  • softedge_hedsafe
  • softedge_pidinet
  • softedge_pidisafe

デフォルトでは、「softedge_pidinet」となっています。
興味がある方は、それぞれを詳しく確認してみてください。

hedは、Holistically-Nested Edge Detectionの略称です。
pidinetは、Pixel Difference Networks for Efficient Edge Detectionの略称になります。

ここでは、以下の画像タイプ別に確認してみましょう。

  • アニメ
  • 写真

アニメ

左から、「Preprocessor」の順番通りに生成した結果です。

プロンプトは、以下を入力しています。

Digital painting depicting a scene from the animated film 'Spirited Away'. The mysterious figure, No-Face, sits at the center of a grand feast, surrounded by a plethora of vibrant and intricately detailed dishes, ranging from seafood to desserts. Excited spirit creatures gather around, eager to partake in the meal. The environment is characterized by warm lighting, and the enchanting, otherworldly atmosphere of the bathhouse is captured through floating green orbs and soft, ethereal backgrounds

このプロンプトは、ChatGPTに作成させています。

SoftEdge利用時には、プロンプトがなくても動きます。
ただ、プロンプトがあった方が着色の面でベターな結果になります。

その肝心の結果は、微妙と言うか良くないです。
アニメ画像では、Cannyの方が断然良い結果となります。

左はCanny、右がSoftEdgeで最も良かった「softedge_hed」の結果です。
モデルは、BreakDomainXLを利用しています。

写真

左から、「Preprocessor」の順番通りに生成した結果です。

プロンプトは、以下を入力しています。

Digital photography of a woman with blonde hair wearing a light gray blazer, standing on a city street with historic architecture in the background, illuminated by soft ambient lighting, focused subject with blurred background, high-resolution, natural colors

これもChatGPTに作成させています。
ただし、GPT-4Vは人の顔が認識できる実写の場合は次のように拒否することがあります。

そのような場合、セッションを変えてみるとイケる場合があります。
気まぐれ過ぎて、正直よくわかりません。

写真の場合の結果は、アニメよりも全然良いです。
そして、Cannyにも圧勝しています。

判定の基準は、あくまで元画像にどれだけ近いかということです。

左がCannyの結果で、右が「softedge_hed」の結果です。
「softedge_pidisafe」以外はどれも良い感じとなっています。

モデルは、Juggernaut XLを利用しています。

あと、FreeUを適用して高画質化も実施しています。

以上、SoftEdgeの動作確認を説明しました。

タイトルとURLをコピーしました