
पहचान सत्यापन और वीडियो कॉन्फ्रेंसिंग सिस्टम के प्रवेश परीक्षण के लिए रीयल-टाइम डीपफेक टूलकिट। रेड टीम संचालन के लिए फेस स्वैप, इमेज एनीमेशन और वर्चुअल कैमरा इंजेक्शन का समर्थन करता है।
डॉट (जिसे डीपफेक आक्रामक टूलकिट भी कहा जाता है) वास्तविक समय में नियंत्रणीय डीपफेक को वर्चुअल कैमरों में इंजेक्शन के लिए तैयार करता है। डॉट को उदाहरण के लिए, पहचान सत्यापन और वीडियो कॉन्फ्रेंसिंग प्रणालियों के विरुद्ध पैठ परीक्षण करने के लिए बनाया गया है, जिसका उपयोग सुरक्षा विश्लेषकों, रेड टीम सदस्यों और बायोमेट्रिक्स शोधकर्ताओं द्वारा किया जाता है।
यदि आप उद्योग में डीपफेक के साथ पैठ परीक्षणों के लिए डॉट के उपयोग के बारे में अधिक जानना चाहते हैं, तो ये लेख पढ़ें: The Verge और Biometric Update.
डॉट अनुसंधान और प्रदर्शन उद्देश्यों के लिए विकसित किया गया है। अंतिम उपयोगकर्ता के रूप में, इस प्रोग्राम का उपयोग करते समय सभी लागू कानूनों का पालन करना आपकी जिम्मेदारी है। लेखक और योगदान देने वाले डेवलपर्स कोई देयता नहीं लेते हैं और इस प्रोग्राम के उपयोग से होने वाले किसी भी दुरुपयोग या क्षति के लिए जिम्मेदार नहीं हैं।
संक्षेप में, डॉट इस प्रकार काम करता है
flowchart LR;
A(your webcam feed) --> B(suite of realtime deepfakes);
B(suite of realtime deepfakes) --> C(virtual camera injection);
डॉट द्वारा समर्थित सभी डीपफेक को अतिरिक्त प्रशिक्षण की आवश्यकता नहीं होती है। इनका उपयोग वास्तविक समय में तुरंत एक फोटो पर किया जा सकता है जो चेहरे के प्रतिरूपण का लक्ष्य बन जाता है। समर्थित विधियाँ:
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 चलाएँ ताकि किसी भी विस्तारित विशेषताओं को हटाया जा सकेShow Package Contents चुनेंContents/MacOS फ़ोल्डर से dot-executable चलाएँउपयोग उदाहरण:
source फ़ील्ड में स्रोत छवि निर्दिष्ट करें।target फ़ील्ड में कैमरा आईडी नंबर निर्दिष्ट करें। अधिकांश मामलों में, 0 सही कैमरा आईडी है।config_file फ़ील्ड में कॉन्फ़िग फ़ाइल निर्दिष्ट करें। ड्रॉपडाउन सूची से एक डिफ़ॉल्ट कॉन्फ़िगरेशन चुनें या एक कस्टम फ़ाइल का उपयोग करें।use_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 पर डॉट का उपयोग करने के लिए (अनुशंसित नहीं), --use_gpu फ़्लैग पास न करें।
अस्वीकरण: हम निम्नलिखित प्रदर्शन के लिए
SimSwapतकनीक का उपयोग करते हैं
उपरोक्त किसी भी विधि के माध्यम से डॉट चलाने से data/ फ़ोल्डर से स्रोत छवियों का उपयोग करके इनपुट वीडियो फ़ीड पर वास्तविक समय का डीपफेक उत्पन्न होता है।
डॉट चलाने पर उपलब्ध नियंत्रण विकल्पों की एक सूची ऊपर दिखाए अनुसार टर्मिनल विंडो पर दिखाई देती है। आप संबंधित नियंत्रण कुंजी दबाकर विभिन्न स्रोत छवियों के माध्यम से टॉगल और चयन कर सकते हैं।
नियंत्रण विकल्पों की बेहतर समझ के लिए निम्नलिखित डेमो वीडियो देखें:
कंटेनर बनाएँ
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 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 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 चलाएँ।
Sources अनुभाग में, Add बटन ("+" चिह्न) पर दबाएँ,
Windows Capture चुनें और OK दबाएँ। दिखाई देने वाली विंडो में, Window ड्रॉप-डाउन मेनू में "[python.exe]: fomm" चुनें और OK दबाएँ। फिर Edit -> Transform -> Fit to screen चुनें।
OBS Studio में, Tools -> VirtualCam पर जाएँ। AutoStart चेक करें,
Buffered Frames को 0 पर सेट करें और Start दबाएँ।
अब OBS-Camera कैमरा Zoom (या अन्य वीडियोकॉन्फ्रेंसिंग सॉफ्टवेयर) में उपलब्ध होना चाहिए।
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 खोलें और जाँचें कि tools --> 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 खोलेंtools --> v4l2sink पर जाएँ/dev/video2 और YUV420 चुनेंstart पर क्लिक करेंOBS Cam चुनें--use_cam फ़्लैग के साथ चलाएँयदि आप किसी मोबाइल ऐप के विरुद्ध परीक्षण कर रहे हैं, तो वर्चुअल कैमरों को इंजेक्ट करना अधिक कठिन होता है। एक विकल्प मोबाइल एमुलेटर का उपयोग करना और फिर भी वर्चुअल कैमरा इंजेक्शन का सहारा लेना है।
डॉट चलाएँ। अधिक जानकारी के लिए डॉट चलाना देखें।
OBS Studio चलाएँ और वर्चुअल कैमरा सेट अप करें। वर्चुअल-कैमरा-इंजेक्शन देखें।
Genymotion डाउनलोड और इंस्टॉल करें।
Genymotion खोलें और एंड्रॉइड एमुलेटर सेट करें।
एंड्रॉइड एमुलेटर के साथ डॉट सेट करें:
camera पर क्लिक करें और फ्रंट और बैक कैमरों के रूप में OBS-Camera चुनें। डॉट विंडो का एक पूर्वावलोकन दिखाई देना चाहिए।
यदि कोई पूर्वावलोकन नहीं है, तो OBS और एमुलेटर को पुनरारंभ करें और पुनः प्रयास करें।
यदि वह काम नहीं करता है, तो e2eSoft VCam या ManyCam जैसे किसी भिन्न वर्चुअल कैमरा सॉफ्टवेयर का उपयोग करें।dot डीपफेक आउटपुट होना चाहिए।एक NVIDIA GeForce RTX 2070 के साथ AMD Ryzen 5 2600 सिक्स-कोर प्रोसेसर पर परीक्षण किया गया
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 के तहत वितरित किया जाता है। डॉट कई ओपन सोर्स लाइब्रेरीज़ का उपयोग करता है। यदि आप डॉट का उपयोग करते हैं, तो सुनिश्चित करें कि आप उनके लाइसेंस से भी सहमत हैं। विशेष रूप से, यह कोडबेस निम्नलिखित शोध परियोजनाओं के शीर्ष पर बनाया गया है:
यदि आपके पास डॉट को बेहतर बनाने के विचार हैं, तो बेझिझक प्रासंगिक Issues और PRs खोलें। रिपॉजिटरी में योगदान देने से पहले कृपया CONTRIBUTING.md पढ़ें।
dot चलाएँdot बहुत धीमा है और मैं इसे वास्तविक समय में नहीं चला सकतासुनिश्चित करें कि आप इसे --use_gpu फ़्लैग का उपयोग करके GPU कार्ड पर चला रहे हैं। CPU अनुशंसित नहीं है। यदि आप अभी भी इसे बहुत धीमा पाते हैं, तो हो सकता है कि आप इसे 8GB से कम RAM वाले पुराने GPU मॉडल पर चला रहे हों।
dot केवल वेबकैम फ़ीड के साथ काम करता है या पूर्व-रिकॉर्ड किए गए वीडियो के साथ भी?आप इन स्क्रिप्ट्स द्वारा पूर्व-रिकॉर्ड की गई वीडियो फ़ाइल पर dot का उपयोग कर सकते हैं या सीधे Colab पर आज़मा सकते हैं।