
リアルタイムのディープフェイクツールキット。身元確認システムやビデオ会議システムのペネトレーションテスト用。フェイススワップ、画像アニメーション、レッドチーム向け仮想カメラインジェクションをサポート。
dot(Deepfake Offensive Toolkit)は、リアルタイムで制御可能なディープフェイクを生成し、仮想カメラに注入するためのツールです。dot は、セキュリティアナリスト、レッドチームメンバー、生体認証研究者による、例えば本人確認システムやビデオ会議システムに対するペネトレーションテストを目的として作成されました。
dot が業界でディープフェイクを使ったペネトレーションテストにどのように利用されているかについて詳しく知りたい場合は、The Verge や Biometric Update の記事をお読みください。
dot は研究およびデモンストレーション目的で開発されています。エンドユーザーは、本プログラムを使用する際に適用されるすべての法律を遵守する責任を負います。作者および貢献開発者は、本プログラムの使用によって生じた誤用や損害について一切の責任を負わず、これらの行為に対して責任を負いません。
簡単に言うと、dot は次のように動作します:
flowchart LR;
A(Webカメラの映像) --> B(リアルタイムディープフェイク群);
B(リアルタイムディープフェイク群) --> C(仮想カメラへの注入);
dot がサポートするすべてのディープフェイクは、追加のトレーニングを必要としません。顔のなりすましの対象となる写真に対して、リアルタイムでその場で使用できます。対応している手法:
224 および 512
256 および 512お使いの OS 用の dot 実行ファイルをダウンロードして実行してください:
Windows(Windows 10 および 11 でテスト済み):
dot.zip をこちらからダウンロードし、解凍して dot.exe を実行してくださいUbuntu:
Mac(Apple M2 Sonoma 14.0 でテスト済み):
dot-m2.zip をこちらからダウンロードして解凍してくださいxattr -cr dot-executable.app を実行して拡張属性を削除してくださいContents/MacOS フォルダから dot-executable を実行してください使用例:
source フィールドにソース画像を指定します。target フィールドにカメラ ID 番号を指定します。ほとんどの場合、0 が正しいカメラ ID です。config_file フィールドに設定ファイルを指定します。ドロップダウンリストからデフォルトの設定を選択するか、カスタムファイルを使用します。use_gpu フィールドをチェックして GPU を使用します。RUN ボタンをクリックしてディープフェイクを開始します。各フィールドの詳細については、メニュー Help/Usage をクリックしてください。
インターフェースの理解を深めるために、次のデモ動画をご覧ください:
Linux
sudo apt install ffmpeg cmake
MacOS
brew install ffmpeg cmake
Windows
以下の手順は、お使いのマシンに Miniconda がインストールされていることを前提としています。インストールされていない場合は、こちらのインストール手順を参照してください。
conda env create -f envs/environment-gpu.yaml
conda activate dot
お使いのマシンにインストールされている CUDA バージョンに基づいて、torch と torchvision の依存関係をインストールします:
CUDA 11.8 をこちらからインストールします
conda から cudatoolkit をインストールします:conda install cudatoolkit=<cuda_version_no>(<cuda_version_no> をお使いのマシンのバージョンに置き換えてください)
torch と torchvision の依存関係をインストールします:pip install torch==2.0.1+<cuda_tag> torchvision==0.15.2+<cuda_tag> torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118。ここで <cuda_tag> は PyTorch で定義された CUDA タグです。たとえば、CUDA 11.8 の場合は、pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu118 となります。
注意:torch1.9.0+cu111 も使用可能です。
torch と torchvision が正しくインストールされたことを確認するには、次のコマンドを実行します:python -c "import torch; print(torch.cuda.is_available())"。出力が True であれば、CUDA サポート付きで依存関係がインストールされています。
conda env create -f envs/environment-apple-m2.yaml
conda activate dot
torch と torchvision が正しくインストールされたことを確認するには、次のコマンドを実行します:python -c "import torch; print(torch.backends.mps.is_available())"。出力が True であれば、Metal プログラミングフレームワークのサポート付きで依存関係がインストールされています。
conda env create -f envs/environment-cpu.yaml
conda activate dot
pip install -e .
dot --help を実行すると、利用可能なすべてのオプションの一覧が表示されます。
Simswap
dot -c ./configs/simswap.yaml --target 0 --source "./data" --use_gpu
SimSwapHQ
dot -c ./configs/simswaphq.yaml --target 0 --source "./data" --use_gpu
FOMM
dot -c ./configs/fomm.yaml --target 0 --source "./data" --use_gpu
FaceSwap CV2
dot -c ./configs/faceswap_cv2.yaml --target 0 --source "./data" --use_gpu
注意: 顔の超解像度を有効にするには、--gpen_type gpen_256 または --gpen_type gpen_512 フラグを使用します。CPU で dot を使用する場合(非推奨)は、--use_gpu フラグを渡さないでください。
免責事項: 以下のデモでは
SimSwap手法を使用しています
上記のいずれかの方法で dot を実行すると、data/ フォルダのソース画像を使用して、入力ビデオフィードにリアルタイムの Deepfake が生成されます。
dot を実行すると、上記のように、利用可能な制御オプションのリストがターミナルウィンドウに表示されます。関連する制御キーを押すことで、さまざまなソース画像を切り替えて選択できます。
制御オプションの理解を深めるために、次のデモ動画をご覧ください:
コンテナをビルドします
docker-compose up --build -d
コンテナにアクセスします
docker-compose exec dot "/bin/bash"
コンテナをビルドします
docker build -t dot -f Dockerfile .
コンテナを実行します
xhost +
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY \
-v .:/dot \
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
dot
こちらの Windows 向けの指示に従って、Docker で Web カメラをセットアップします。
コンテナをビルドします
docker build -t dot -f Dockerfile .
コンテナを実行します
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY=192.168.99.1:0 \
-v .:/dot \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
dot
こちらの指示に従って、Docker で Web カメラをセットアップします。
コンテナをビルドします
docker build -t dot -f Dockerfile .
コンテナを実行します
docker run -ti --gpus all \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
-e NVIDIA_VISIBLE_DEVICES=all \
-e PYTHONUNBUFFERED=1 \
-e DISPLAY=$IP:0 \
-v .:/dot \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--runtime nvidia \
--entrypoint /bin/bash \
-p 8080:8080 \
--device=/dev/video0:/dev/video0 \
dot
手順はお使いのオペレーティングシステムによって異なります。
OBS Studio をインストールします。
OBS Studio を実行します。
ソースセクションで追加ボタン("+" 記号)を押し、
Windows キャプチャを選択して OK を押します。表示されたウィンドウで、 ウィンドウのドロップダウンメニューから "[python.exe]: fomm" を選択し、OK を押します。 次に、編集 -> トランスフォーム -> 画面に合わせる を選択します。
OBS Studio で、ツール -> VirtualCam に移動します。自動起動にチェックを入れ、
バッファフレームを 0 に設定し、スタートを押します。
これで、Zoom(または他のビデオ会議ソフトウェア)で OBS-Camera カメラが利用可能になります。
sudo apt update
sudo apt install v4l-utils v4l2loopback-dkms v4l2loopback-utils
sudo modprobe v4l2loopback devices=1 card_label="OBS Cam" exclusive_caps=1
v4l2-ctl --list-devices
sudo add-apt-repository ppa:obsproject/obs-studio
sudo apt install obs-studio
OBS Studio を開き、ツール --> v4l2sink が存在するか確認します。
存在しない場合は、以下の手順に従ってください:
mkdir -p ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
ln -s /usr/lib/obs-plugins/v4l2sink.so ~/.config/obs-studio/plugins/v4l2sink/bin/64bit/
OBS Studio で仮想カメラを使用するには:
OBS Studio を開きますツール --> v4l2sink に移動します/dev/video2 と YUV420 を選択します開始 をクリックしますOBS Cam を選択します--use_cam フラグを付けて dot を実行し、カメラフィードを有効にしますモバイルアプリに対してテストを行う場合、仮想カメラの注入ははるかに困難です。代替手段として、モバイルエミュレーターを使用し、依然として仮想カメラの注入に頼ることができます。
dot を実行します。詳細は dot の実行 を参照してください。
OBS Studio を実行し、仮想カメラをセットアップします。詳細は 仮想カメラの注入 を参照してください。
Genymotion をダウンロードしてインストールします。
Genymotion を開き、Android エミュレーターをセットアップします。
Android エミュレーターで dot をセットアップします:
カメラ をクリックし、フロントカメラとバックカメラとして OBS-Camera を選択します。dot ウィンドウのプレビューが表示されるはずです。
プレビューが表示されない場合は、OBS とエミュレーターを再起動して再度試してください。
それでもうまくいかない場合は、e2eSoft VCam や ManyCam などの別の仮想カメラソフトウェアを使用してください。dot のディープフェイク出力がエミュレーターの電話カメラとして使用されるようになります。AMD Ryzen 5 2600 Six-Core Processor と NVIDIA GeForce RTX 2070 でテスト
Simswap: FPS 13.0
Simswap + gpen 256: FPS 7.0
SimswapHQ: FPS 11.0
FOMM: FPS 31.0
Macbook Air M2 2022 16GB でテスト
Simswap: FPS 3.2
Simswap + gpen 256: FPS 1.8
SimswapHQ: FPS 2.7
FOMM: FPS 2.0
これは商用の Sensity 製品ではなく、無保証で自由に配布されています
本ソフトウェアは BSD 3-Clause の下で配布されています。 dot は複数のオープンソースライブラリを利用しています。dot を使用する場合は、それらのライセンスにも同意していることを確認してください。特に、このコードベースは以下の研究プロジェクトを基に構築されています:
dot を改善するためのアイデアがありましたら、遠慮なく関連する Issue や PR を開いてください。リポジトリにコントリビュートする前に、CONTRIBUTING.md をお読みください。
dot を実行するdot が非常に遅く、リアルタイムで実行できません--use_gpu フラグを使用して GPU カード上で実行していることを確認してください。CPU は推奨されません。
それでも遅い場合は、古い GPU モデル(8GB 未満の RAM)を使用している可能性があります。
dot は Web カメラフィードでのみ動作しますか、それとも録画済みのビデオでも動作しますか?