
भौतिक तस्वीरों में अदृश्य हाइपरलिंक्स
Matthew Tancik, Ben Mildenhall, Ren Ng कैलिफोर्निया विश्वविद्यालय, बर्कले

यह रिपोजिटरी यहाँ पाई जाने वाली ArXiv रिपोर्ट के लिए कोड रिलीज़ है। यह परियोजना अवधारणात्मक समानता बनाए रखते हुए छवियों में डेटा छिपाने की खोज करती है। हमारा योगदान एन्कोडेड छवि (StegaStamp) को प्रिंट करने और कैमरे से फोटो खींचने के बाद (ये कदम छवि में विकृतियाँ लाते हैं) डेटा निकालने की क्षमता है। इस रिपोजिटरी में पेपर में दिखाए गए परिणामों को दोहराने के लिए कोड और पूर्व-प्रशिक्षित मॉडल शामिल हैं। इसके अतिरिक्त, रिपोजिटरी में एन्कोडर और डिकोडर मॉडल को प्रशिक्षित करने के लिए आवश्यक कोड शामिल है।
यदि आप हमारे कार्य को उपयोगी पाते हैं, तो कृपया उद्धृत करने पर विचार करें:
@inproceedings{2019stegastamp,
title={StegaStamp: Invisible Hyperlinks in Physical Photographs},
author={Tancik, Matthew and Mildenhall, Ben and Ng, Ren},
booktitle={IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2020}
}
git clone --recurse-submodules https://github.com/tancik/StegaStamp.git
cd StegaStamp
pip install -r requirements.txt
TRAIN_PATH = DIR_OF_DATASET_IMAGES
bash scripts/base.sh EXP_NAME
प्रशिक्षण train.py में किया जाता है। इसमें कई हाइपरपैरामीटर हैं, जिनमें से अधिकांश ऑगमेंटेशन पैरामीटर के अनुरूप हैं। scripts/bash.sh एक अच्छा प्रारंभिक बिंदु प्रदान करता है।
डिटेक्टर मॉडल (जिसका उपयोग StegaStamps को सेगमेंट करने के लिए किया जाता है) के लिए प्रशिक्षण कोड इस रिपोजिटरी में शामिल नहीं है। पेपर में उपयोग किए गए मॉडल को यहाँ जारी किए गए BiSeNet मॉडल का उपयोग करके प्रशिक्षित किया गया था। CROP_WIDTH और CROP_HEIGHT को 1024 पर सेट किया गया था, अन्य सभी पैरामीटर डिफ़ॉल्ट पर सेट किए गए थे। डेटासेट बड़ी छवियों पर यादृच्छिक रूप से विकृत StegaStamps रखकर उत्पन्न किया गया था।
प्रशिक्षण को विज़ुअलाइज़ करने के लिए निम्न आदेश चलाएँ और अपने ब्राउज़र में http://localhost:6006 पर जाएँ।
tensorboard --logdir logs
स्क्रिप्ट encode_image.py का उपयोग किसी छवि या छवियों के निर्देशिका में संदेश को एन्कोड करने के लिए किया जा सकता है। डिफ़ॉल्ट मॉडल एक utf-8 एन्कोडेड गुप्त संदेश की अपेक्षा करता है जो <= 7 वर्णों का होता है (100 बिट संदेश -> ECC के बाद 56 बिट)।
एक छवि में संदेश एन्कोड करें:
python encode_image.py \
saved_models/stegastamp_pretrained \
--image test_im.png \
--save_dir out/ \
--secret Hello
यह StegaStamp और मूल छवि पर लागू किए गए अवशेष दोनों को सहेजेगा।
स्क्रिप्ट decode_image.py का उपयोग StegaStamp से संदेश को डिकोड करने के लिए किया जा सकता है।
उपयोग उदाहरण:
python decode_image.py \
saved_models/stegastamp_pretrained \
--image out/test_hidden.png
स्क्रिप्ट detector.py का उपयोग किसी छवि में StegaStamps का पता लगाने और डिकोड करने के लिए किया जा सकता है। यह उन मामलों में उपयोगी है जहां कई StegaStamps मौजूद हैं या StegaStamp छवि के फ्रेम को नहीं भरता है।
डिटेक्टर का उपयोग करने के लिए, सुनिश्चित करें कि आपने स्थापना अनुभाग में बताए अनुसार डिटेक्टर मॉडल डाउनलोड कर लिया है। अनुशंसित इनपुट वीडियो रिज़ॉल्यूशन 1920x1080 है।
python detector.py \
--detector_model detector_models/stegastamp_detector \
--decoder_model saved_models/stegastamp_pretrained \
--video test_vid.mp4
परिणामों को सहेजने के लिए --save_video FILENAME फ्लैग जोड़ें।
--visualize_detector फ्लैग का उपयोग डिटेक्टर नेटवर्क के आउटपुट को विज़ुअलाइज़ करने के लिए किया जा सकता है। मास्क सेगमेंटेशन मास्क से मेल खाता है, रंगीन बहुभुजों को ह्यूरिस्टिक्स के एक सेट का उपयोग करके इस सेगमेंटेशन मास्क में फिट किया जाता है। डिटेक्टर आउटपुट शोरगुल वाले हो सकते हैं और स्टेगास्टैम्प के आकार के प्रति संवेदनशील होते हैं। इस पेपर में डिटेक्शन नेटवर्क के और अनुकूलन का पता नहीं लगाया गया है।