{"id":13791419,"url":"https://github.com/DAI-Lab/SteganoGAN","last_synced_at":"2025-05-12T10:31:45.257Z","repository":{"id":33826393,"uuid":"147863828","full_name":"DAI-Lab/SteganoGAN","owner":"DAI-Lab","description":"SteganoGAN is a tool for creating steganographic images using adversarial training.","archived":false,"fork":false,"pushed_at":"2023-03-23T03:34:08.000Z","size":44538,"stargazers_count":334,"open_issues_count":36,"forks_count":94,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-15T08:49:02.934Z","etag":null,"topics":["generative-adversarial-networks","steganography"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DAI-Lab.png","metadata":{"files":{"readme":"README.md","changelog":"HISTORY.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst"}},"created_at":"2018-09-07T19:03:04.000Z","updated_at":"2025-04-14T05:59:05.000Z","dependencies_parsed_at":"2024-01-07T01:42:22.904Z","dependency_job_id":"d2f178a6-79c1-4b06-a24b-abc5512f548d","html_url":"https://github.com/DAI-Lab/SteganoGAN","commit_stats":{"total_commits":127,"total_committers":9,"mean_commits":14.11111111111111,"dds":0.5669291338582677,"last_synced_commit":"513912f3dce2fb5001f3e140ad7378dacfc2a453"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DAI-Lab%2FSteganoGAN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DAI-Lab%2FSteganoGAN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DAI-Lab%2FSteganoGAN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DAI-Lab%2FSteganoGAN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DAI-Lab","download_url":"https://codeload.github.com/DAI-Lab/SteganoGAN/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253719974,"owners_count":21952934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["generative-adversarial-networks","steganography"],"created_at":"2024-08-03T22:00:59.975Z","updated_at":"2025-05-12T10:31:44.022Z","avatar_url":"https://github.com/DAI-Lab.png","language":"Python","funding_links":[],"categories":["Tools"],"sub_categories":["Steganography"],"readme":"\u003cp align=\"left\"\u003e\n\u003cimg width=15% src=\"https://dai.lids.mit.edu/wp-content/uploads/2018/06/Logo_DAI_highres.png\" alt=\"SteganoGAN\" /\u003e\n\u003ci\u003eAn open source project from Data to AI Lab at MIT.\u003c/i\u003e\n\u003c/p\u003e\n\n[![PyPI Shield](https://img.shields.io/pypi/v/steganogan.svg)](https://pypi.python.org/pypi/steganogan)\n[![Travis CI Shield](https://travis-ci.org/DAI-Lab/SteganoGAN.svg?branch=master)](https://travis-ci.org/DAI-Lab/SteganoGAN)\n[![Coverage Status](https://codecov.io/gh/DAI-Lab/SteganoGAN/branch/master/graph/badge.svg)](https://codecov.io/gh/DAI-Lab/SteganoGAN)\n[![Downloads](https://pepy.tech/badge/steganogan)](https://pepy.tech/project/steganogan)\n\n# SteganoGAN\n\n- License: MIT\n- Documentation: https://DAI-Lab.github.io/SteganoGAN\n- Homepage: https://github.com/DAI-Lab/SteganoGAN\n\n## Overview\n\n**SteganoGAN** is a tool for creating steganographic images using adversarial training.\n\n## Installation\n\nTo get started with **SteganoGAN**, we recommend using `pip`:\n\n```bash\npip install steganogan\n```\n\nAlternatively, you can clone the repository and install it from source by running `make install`:\n\n```bash\ngit clone git@github.com:DAI-Lab/SteganoGAN.git\ncd SteganoGAN\nmake install\n```\n\nFor development, you can use the `make install-develop` command instead in order to install all\nthe required dependencies for testing and linting.\n\n**NOTE** SteganoGAN currently requires `torch` version to be `1.0.0` in order to work properly.\n\n## Usage\n\n### Command Line\n\n**SteganoGAN** includes a simple command line interface for encoding and decoding steganographic\nimages.\n\n#### Hide a message inside an image\n\nTo create a steganographic image, you simply need to supply the path to the cover image and the\nsecret message:\n\n```\nsteganogan encode [options] path/to/cover/image.png \"Message to hide\"\n```\n\n#### Read a message from an image\n\nTo recover the secret message from a steganographic image, you simply supply the path to the\nsteganographic image that was generated by a compatible model:\n\n```\nsteganogan decode [options] path/to/generated/image.png\n```\n\n#### Additional options\n\nThe script has some additional options to control its behavior:\n\n* `-o, --output PATH`: Path where the generated image will be stored. Defaults to `output.png`.\n* `-a, --architecture ARCH`: Architecture to use, basic or dense. Defaults to dense.\n* `-v, --verbose`: Be verbose.\n* `--cpu`: force CPU usage even if CUDA is available. This might be needed if there is a GPU\n  available in the system but the VRAM amount is too low.\n\n**WARNING**: Make sure to use the same architecture specification (`--architecture`) during both\nthe encoding and decoding stage; otherwise, `SteganoGAN` will fail to decode the message.\n\n### Python\n\nThe primary way to interact with **SteganoGAN** from Python is through the `steganogan.SteganoGAN`\nclass. This class can be instantiated using a pretrained model:\n\n```python3\nfrom steganogan import SteganoGAN\nsteganogan = SteganoGAN.load(architecture='dense')\n```\n\nOnce we have loaded our model, we can give it the input image path, the output image path, and\nthe secret message:\n\n```\nsteganogan.encode('research/input.png', 'research/output.png', 'This is a super secret message!')\n```\n\nThis will generate an `output.png` image that closely resembles the input image but contains the\nsecret message. In order to recover the message, we can simply pass `output.png` to the `decode`\nmethod:\n\n```python3\nsteganogan.decode('research/output.png')\n'This is a super secret message!'\n```\n\n## Research\n\nWe provide example scripts in the `research` folder which demonstrate how you can train your own\n`SteganoGAN` models from scratch on arbitrary datasets. In addition, we provide a convenience\nscript in `research/data` for downloading two popular image datasets.\n\n## What's next?\n\nFor more details about **SteganoGAN** and all its possibilities and features, please check the\n[project documentation site](https://DAI-Lab.github.io/SteganoGAN/)!\n\n## Citing SteganoGAN\n\nIf you use SteganoGAN for your research, please consider citing the following work:\n\nZhang, Kevin Alex and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan. SteganoGAN: High\nCapacity Image Steganography with GANs. MIT EECS, January 2019. ([PDF](https://arxiv.org/pdf/1901.03892.pdf))\n\n```\n@article{zhang2019steganogan,\n  title={SteganoGAN: High Capacity Image Steganography with GANs},\n  author={Zhang, Kevin Alex and Cuesta-Infante, Alfredo and Veeramachaneni, Kalyan},\n  journal={arXiv preprint arXiv:1901.03892},\n  year={2019},\n  url={https://arxiv.org/abs/1901.03892}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDAI-Lab%2FSteganoGAN","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDAI-Lab%2FSteganoGAN","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDAI-Lab%2FSteganoGAN/lists"}