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が良い出発点となります。
検出器モデル(StegaStampのセグメンテーションに使用)のトレーニングコードはこのリポジトリには含まれていません。論文で使用されたモデルは、こちらで公開されているBiSeNetモデルを使ってトレーニングされました。CROP_WIDTHとCROP_HEIGHTは1024に設定され、他のすべてのパラメータはデフォルトに設定されました。データセットは、歪んだStegaStampを大きな画像にランダムに配置することで生成されました。
トレーニングを可視化するには、以下のコマンドを実行し、ブラウザでhttp://localhost:6006にアクセスしてください。
tensorboard --logdir logs
スクリプトencode_image.pyを使用すると、画像または画像のディレクトリにメッセージをエンコードできます。デフォルトのモデルは、7文字以下のutf-8エンコードされた秘密情報を想定しています(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を使用すると、画像内のStegaStampを検出してデコードできます。これは、複数のStegaStampが存在する場合や、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フラグを使用すると、検出器ネットワークの出力を可視化できます。マスクはセグメンテーションマスクに対応し、色付きのポリゴンは一連のヒューリスティックを使用してこのセグメンテーションマスクにフィッティングされます。検出器の出力はノイズが多く、ステガスタンプのサイズに敏感です。検出ネットワークのさらなる最適化は、本論文では検討されていません。