Skip to content

Repository files navigation

Pose conditioned generative steganography(PCGS)

Abstract

Secure transmission of private information over public channels without arousing suspicion remains a fundamental challenge in steganography. Traditional methods modify pixel-level or frequency-domain features, masking them vulnerable to detection and degradation. Recent synthesis-based approaches leverage generative models to embed data but often suffer from limited capacity or visual artifacts. In this work, we propose a pose conditioned generative steganographic framework that decouples message representation from image content. Binary messages are first mapped to human poses using a geometry-aware codebook derived from real-world data. These poses then serve as structural conditions to guide diffusion-based image generation, producing semantically coherent and visually natural stego images. By encoding multiple human poses in a single image, our framework increases message capacity while preserving visual coherence. To enhance robustness, we introduce a randomized linear expansion scheme to stabilize pose-code mapping under occlusion and detection noise. We evaluate the method under various perturbations and assess detectability using state-of-the-art steganalysis models. Experimental results show strong imperceptibility, decoding accuracy, and semantic flexibility, highlighting the effectiveness of our framework in enabling secure and coverless generative steganography.

Requirements

  • We only test the code on Linux, but Windows may be supported as well.
  • Python == 3.10, pytorch == 2.6.0.
  • cuda == 11.8 We have done all development and testing using a NVIDIA RTX 4090.
conda create -n pcgs python==3.10
conda activate pcgs
pip install -r requirements.txt

Data preparation

For COCO data, please download from COCO download, 2017 Train/Val/Test is needed for COCO keypoints usage.

For COCO pose label, please download from Download Link.

For Viton-Hd data, please download from Viton-hd download.

Model preparation

To generate images, we utilize the Stable Diffusion WebUI provided by AUTOMATIC1111, in conjunction with the DreamShaper pretrained model, which is based on Stable Diffusion 1.5. The WebUI implementation is publicly available via Automatic111, and the DreamShaper model can be downloaded from its official release source: DreamShaper.

In addition, we also incorporate the ControlNet (Link) and ADetailer (Link) plugins within the WebUI to enhance pose conditioning and fine-grained facial details during image generation.

After setting up the generation models, you should run generate_pics/gen_1.py and generate_pics/gen_2.py to prepare the images required for FID evaluation.

The final directory data look like this:

${POSE_ROOT}
|-- data
`-- |-- coco
    |-- viton-hd
    |--example
    |--pose
    |-- source
    `-- stega 

To use the pose detector, please download pretrained models from zoo and make the model directory look like this:

${POSE_ROOT}
|-- model
`-- |-- imagenet
    |   |-- hrnet_w32-36af842e.pth
    |-- pose_coco
    |   |-- pose_dekr_hrnetw32_coco.pth
    |   |-- yolo11n-pose.pt
    | 	`-- yolo11x-pose.pt
    |-- pose_crowdpose
    |   |-- pose_dekr_hrnetw32_crowdpose.pth
    |   `-- pose_dekr_hrnetw48_crowdpose.pth
    `-- rescore
        |-- final_rescore_coco_kpt.pth

Experiments

Attack_test

cd attack_test
python test_openpose.py
python test_yolo.py
python test_dekr.py

Image quality evaluation

cd quality
python main.py
python fid.py

Security evaluation

cd security
python main.py

Draw_pose

cd drawer
python pose_gen_1.py # use the pose keypoints from the coco label given the binary code
python pose_gen_2.py # use the pose keypoitns from the results of pose detector (yolo et al.)

Acknowledgements

This code is based on diffusers, DEKR, stable-diffusion-webui, ultralytics.

Citation

Todo

About

The implementation of PCGS

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages