{"id":14958903,"url":"https://github.com/harveyslash/deep-steganography","last_synced_at":"2025-05-02T12:31:15.858Z","repository":{"id":106556301,"uuid":"117307856","full_name":"harveyslash/Deep-Steganography","owner":"harveyslash","description":"Hiding Images within other images using Deep Learning","archived":false,"fork":false,"pushed_at":"2018-04-25T12:52:14.000Z","size":1913,"stargazers_count":209,"open_issues_count":3,"forks_count":46,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-07T01:53:17.604Z","etag":null,"topics":["autoencoders","convolutional-neural-networks","deep-learning","deep-neural-networks","nips-2017","tensorflow","tensorflow-experiments"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/harveyslash.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-13T02:43:49.000Z","updated_at":"2025-03-23T13:32:07.000Z","dependencies_parsed_at":"2023-03-13T14:39:07.867Z","dependency_job_id":null,"html_url":"https://github.com/harveyslash/Deep-Steganography","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harveyslash%2FDeep-Steganography","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harveyslash%2FDeep-Steganography/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harveyslash%2FDeep-Steganography/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/harveyslash%2FDeep-Steganography/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/harveyslash","download_url":"https://codeload.github.com/harveyslash/Deep-Steganography/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252038128,"owners_count":21684628,"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":["autoencoders","convolutional-neural-networks","deep-learning","deep-neural-networks","nips-2017","tensorflow","tensorflow-experiments"],"created_at":"2024-09-24T13:18:28.652Z","updated_at":"2025-05-02T12:31:14.948Z","avatar_url":"https://github.com/harveyslash.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deep-Steganography\n\nTensorflow Implementation of [Hiding Images in Plain Sight: Deep Steganography](https://papers.nips.cc/paper/6802-hiding-images-in-plain-sight-deep-steganography) (unofficial)\n\n[Steganography](https://en.wikipedia.org/wiki/Steganography) is the science of Hiding a message in another message. In this case, a Picture is hidden inside another picture using Deep Learning.\n\nBlog Post on it can be found [here](https://buzzrobot.com/hiding-images-using-ai-deep-steganography-b7726bd58b06)\n\n## Dependencies Installation \nThe dependencies can be installed by using \n```\npip install -r requirements.txt\n```\nThis will install the tensorflow CPU version by default.\nIf you would like to use your GPU , you can do \n```\npip install --force-reinstall tensorflow-gpu\n```\nThis basically reinstalls the gpu version of tensorflow for your system. \n\n\n\n## Framework\nThe Framework takes in Two images. One is the secret image(extreme right) and another is the cover image(extreme left). \n\nThe goal is to 'hide' the secret image in the cover image such that only the cover image is visible. This is the covered image(Center Left)\n\nThen , this hidden image can be passed to a Revealing network, which can get the hidden image back(Center Right).\n\n\n\n![Current System State](_images/current_state.png)\nAs you can see, it is visually very hard to realise that the covered image is an image that has been tampered with. Yet the Reveal network can get back almost all of the important parts of the image. \n\n\n### Architecture \n![network_design](_images/network_diagram.png)\nPrep Net, Hide Net , and Reveal net have the same convolutional block structure. Therefore, in the image , only the reveal network is shown, and prep/hide networks are collapsed (to make the image fit).  \n\n### Loss Curves\nTwo networks were trained with different beta values (0.25 and .75).Both had a batch size of 8. The loss curves are shown for them:\nBeta = .25\n![beta .25](_images/loss_beta_0.25.png)\n\nBeta = .75\n![beta .75](_images/loss_beta_.75.png)\n\n\n## Demo: \n\nIn order to test the working of the networks , we have written a browser inplementation using Keras JS. \nYou can find it here: \n\nhttps://harveyslash.github.io/Deep-Steg-JS/\nDue to the extremely high computational resources that it requires, it takes about 3 minutes to setup. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharveyslash%2Fdeep-steganography","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharveyslash%2Fdeep-steganography","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharveyslash%2Fdeep-steganography/lists"}