
城さん
フリーランスの方から問い合わせがあり、BiRefNet HRを半信半疑で試してみたのですが、デスクの前で思わず雄叫びを上げました!
今までの苦労は何だったのか…。
概要


FlameML(機械学習)では絶対無理そうなフッテージを選びました(D-Log / D-Gamut)。


ロジックフォーラムにも記載があったMatchboxシェーダーをBatch Schematicに追加します。


検索フィールドにPreを入力してPre BRNシェーダーをBatch Schematicにロード。



特に設定項目はなし。
BiRefNetなどのモデルを実行する推論ノードのFront入力に接続されたクリップにこのシェーダーを適用します
。


InferenceノードをBatch Schematicに追加すると、モデルをロードする必要があるので、ダウンロードしたBiRefNet_HR-general-epoch_130.onnxを選択します。
トレーニング済みのONNX機械学習モデルを使用してクリップにエフェクトを適用します。
ONNXは、異なるディープラーニングフレームワーク間で機械学習モデルを相互にやり取りできるようにするためのオープンソース形式。
主に高精度な背景除去(Background Removal)のために設計されたディープラーニングモデルであり、特に高解像度(High-Resolution)の画像において、被写体の複雑な境界線を驚くほど正確に切り抜くことを目的としています。


Inferenceノード名が選択したONNX名に。ノードを選択すると、This may take a few seconds.(処理に数秒かかることがあります。)が表示。



Change Modelと、Input / Output Resizingの項目だけ。


Post BRNシェーダーをBatch Schematicにロード。



設定項目なし。
BiRefNetなどのモデルを実行する推論ノードのResult出力にこのシェーダーを適用します。シグモイド関数を用いて画像のコントラストを調整します。



CompノードをBatch Schematicに追加して確認。思っていたより自然に切り抜かれている。すごい。ただ、髪の毛のディテールがもう少しかな?
シーン参照色空間


Pre BRN / Post BRNノードにノートがあるので確認。
このシェーダーは、モデルが期待する値に一致するようにピクセルを正規化します。入力が16ビット浮動小数点(fp)または32ビット浮動小数点(fp)でない場合、ノードの出力を手動で16ビットfpに変更する必要があります。


今回使用したフッテージは、D-Log / D-Gamut (Apple ProRes422 HQ)10ビットなので、シーン参照色空間(浮動小数点数)に置き換える必要があるので、Colour ManagementノードをBatch Schematicに追加します。


Input Transform > Working SpaceをACEScgに変更。


Post BRNノードを選択すると、This may take a few seconds.(処理に数秒かかることがあります。)が表示。しばらくすると…。えー !マジでスゲー !マスクとは言わずセグメンテーションマップって言うみたいです。

完璧 !

お見事 !


ズームすると、エッジがギザギザしてる。何か間違えたかな?


Compノードのフロントが、D-Log / D-Gamutのままだったので、ACEScgに変更。滑らかなエッジに。
タグ


Post BRNノード選択時、ビューポートはACES 2.0 – SDR 100nit (Rec.709)なので、マスクが少し暗くなります。


Post BRNノードのタグを変更するので、Colour ManagementノードをBatch Schematicに追加。


Tag Only > Tagged Colour Space > Data / Matteに切り替え。


ビューポートがMatteで表示。


Compノードを複製。


Colour Managementノードの出力を複製したCompノードのマスク入力に。



Diffrences MatteからCompノードを確認。どちらも同じ結果でした。