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.
- 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
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.
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
cd attack_test
python test_openpose.py
python test_yolo.py
python test_dekr.py
cd quality
python main.py
python fid.py
cd security
python main.py
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.)
This code is based on diffusers, DEKR, stable-diffusion-webui, ultralytics.
Todo
