{"id":22006480,"url":"https://github.com/anoff/deep-emoji-gan","last_synced_at":"2025-08-02T09:33:15.521Z","repository":{"id":75748643,"uuid":"96807752","full_name":"anoff/deep-emoji-gan","owner":"anoff","description":"being creative with AI and emojis 🙂 🤖","archived":false,"fork":false,"pushed_at":"2017-10-22T10:29:58.000Z","size":175472,"stargazers_count":21,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-10T17:19:18.425Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/anoff.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,"zenodo":null}},"created_at":"2017-07-10T18:13:38.000Z","updated_at":"2022-08-10T14:18:28.000Z","dependencies_parsed_at":"2023-06-07T13:45:18.940Z","dependency_job_id":null,"html_url":"https://github.com/anoff/deep-emoji-gan","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/anoff/deep-emoji-gan","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Fdeep-emoji-gan","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Fdeep-emoji-gan/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Fdeep-emoji-gan/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Fdeep-emoji-gan/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anoff","download_url":"https://codeload.github.com/anoff/deep-emoji-gan/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anoff%2Fdeep-emoji-gan/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268362943,"owners_count":24238543,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-30T01:12:26.197Z","updated_at":"2025-08-02T09:33:15.511Z","avatar_url":"https://github.com/anoff.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# deep emoji generative adversarial network\n\n\u003e (trying to) generate new emojis with DCGAN 🤗🏭\n\n## usage\n\nThe emojis are taken from a git submodule to initialize it after cloning this repo run:\n\n```sh\ngit submodule init\ngit submodule update\n```\n\nThe code itself is currently hosted in a jupyter notebook so you may run `jupyter notebook` to access the latest version of the GAN and run all the cells to learn the network.\n\n## development\n\nkeeping track of different network designs and hyperparameters\n\n### [15817e6](https://github.com/anoff/deep-emoji-gan/blob/15817e6dc4c72496321b59b4fef99910d73292c2/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `512 \u003e 256 \u003e 128 \u003e 64 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `64 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `225` (people no tones)\n\n*epochs:* `768`\n\n*learning rate:* `0.0002`\n\n*batch size:* `64`\n\n*opt.beta:* `0.4`\n\n#### result\n\n![](./results/15817e6_loss.png)\n\n![](./results/15817e6_sample.png)\n\n### [fa696d4](https://github.com/anoff/deep-emoji-gan/blob/fa696d4353342382dbeb31a793a82b6b6c3e1f7a/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `256 \u003e 128 \u003e 32 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `32 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `714` (people \u0026 activity)\n\n*epochs:* `768`\n\n*learning rate:* `0.0003`\n\n*batch size:* `256`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/fa696d4_loss.png)\n\n![](./results/fa696d4_sample.png)\n\n### [e8285ca](https://github.com/anoff/deep-emoji-gan/blob/e8285cacd005ae8246a1eddc7123e70d2cdbfd1d/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `256 \u003e 128 \u003e 32 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `32 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `714` (people \u0026 activity)\n\n*epochs:* `4096` (only `1200` run?)\n\n*learning rate:* `0.0003`\n\n*batch size:* `256`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/e8285ca_loss.png)\n\n![](./results/e8285ca_sample.png)\n\n\n### [151284d](https://github.com/anoff/deep-emoji-gan/blob/151284d577425c1537ea8dc4a0013aaa02ffe847/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `3`\n\n*features:* `64 \u003e 32 \u003e 16`\n\n*kernel size:* `4 \u003e 6 \u003e 8`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `8 \u003e 16 \u003e 32`\n\n*kernel size:* `8 \u003e 6 \u003e 4`\n\n#### hyper params\n\n*training set:* `714` (people \u0026 activity)\n\n*epochs:* `4096` (only `1200` run?)\n\n*learning rate:* `0.0003`\n\n*batch size:* `256`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/151284d_loss.png)\n\n![](./results/151284d_sample.png)\n\n### [9637353](https://github.com/anoff/deep-emoji-gan/blob/9637353a74d53c7ed22ecfd9aed4014b3b645a82/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `1024 \u003e 512 \u003e 128 \u003e 64`\n\n*kernel size:* `3 \u003e 5 \u003e 5 \u003e 7`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `16 \u003e 46 \u003e 256`\n\n*kernel size:* `5 \u003e 4 \u003e 3`\n\n#### hyper params\n\n*training set:* `714` (people \u0026 activity)\n\n*epochs:* `1024`\n\n*learning rate:* `0.0002`\n\n*batch size:* `1289`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/9637353_loss.png)\n\n![](./results/9637353_sample.png)\n\n\n### [21b7da3](https://github.com/anoff/deep-emoji-gan/blob/21b7da31f964ae5d0817e47f47d02bfbc11ef113/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `256 \u003e 128 \u003e 32 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `32 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `1262` (no regionla, no symbols)\n\n*epochs:* `1000`\n\n*learning rate:* `0.0003`\n\n*batch size:* `256`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/21b7da3_loss.png)\n\n![](./results/21b7da3_sample.png)\n\n### [0344c27](https://github.com/anoff/deep-emoji-gan/blob/0344c27ff4693ca052190f7866803ceee4f617ad/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `256 \u003e 128 \u003e 32 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `32 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `5063` (multi-set, no regionla, no symbols)\n\n*epochs:* `1600`\n\n*learning rate:* `0.0003`\n\n*batch size:* `256`\n\n*opt.beta1:* `0.4`\n\n*opt.beta2:* `0.7`\n\n#### result\n\n![](./results/0344c27_loss.png)\n\n![](./results/0344c27_sample.png)\n\n_Best_ sample\n\n![](./results/0344c27_best.png)\n\n### Tuning Hyperparameters\n\n*training set:* `1565` (multi-set, people)\n\n#### generator design\n\n*convolutions:* `4`\n\n*features:* `256 \u003e 128 \u003e 32 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `32 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n| learnrate | epochs | opt.beta1 | opt.beta2 | alpha | batchsize | result |\n|-----------|--------|-----------|-----------|-------|-----------|--------|\n| 0.0001    | 256    | 0.5       | 0.7       | 0.2   | 256       | disc ↘️ `~0.3`, gen ↗️`~2` |\n| 0.0001    | 128    | 0.4       | 0.7       | 0.2   | 128       | ![](./results/meta2_loss.png) |\n| 0.0001    | 128    | 0.4       | 0.7       | 0.2   | 512       | ![](./results/meta3_loss.png) |\n| 0.0001    | 128    | 0.4       | 0.4       | 0.2   | 512       | ![](./results/meta4_loss.png) |\n| 0.0001    | 128    | 0.8       | 0.5       | 0.2   | 512       | ![](./results/meta5_loss.png) |\n| 0.0001    | 128    | 0.9       | 0.999     | 0.2   | 512       | ![](./results/meta6_loss.png) |\n| 0.0001    | 128    | 0.4       | 0.999     | 0.2   | 512       | ![](./results/meta7_loss.png) |\n| 0.0001    | 256    | 0.4       | 0.999     | 0.2   | 512       | ![](./results/meta8_loss.png) |\n| 0.00001    | 128    | 0.4       | 0.999     | 0.2   | 512       | ![](./results/meta9_loss.png) |\n\n### [6dfe858](https://github.com/anoff/deep-emoji-gan/blob/6dfe8581f964ae5d0817e47f47d02bfbc11ef113/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `3`\n\n*features:* `128 \u003e 64 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `2`\n\n*features:* `64 \u003e 128`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `1` (one round shocked face)\n\n*epochs:* `1000`\n\n*learning rate:* `0.003`\n\n*batch size:* `32`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/6dfe858_loss.png)\n\n![](./results/6dfe858_sample.png)\n\n### [63abc3b](https://github.com/anoff/deep-emoji-gan/blob/63abc3b9163e550c0d1a5f3dcbb3b7a8b9458e64/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `2`\n\n*features:* `1024 \u003e 256 \u003e 4`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `2`\n\n*features:* `64 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `1` (one round shocked face)\n\n*epochs:* `5000`\n\n*learning rate:* `learning_rate_d=0.0003`, `learning_rate_g=0.001`\n\n*batch size:* `32`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/63abc3b_loss.png)\n\n![](./results/63abc3b_sample.png)\n\n### [8c948e8](https://github.com/anoff/deep-emoji-gan/blob/8c948e8682fefc77aa80601af571499ac4898440/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `3`\n\n*features:* `512 \u003e 128 \u003e 64`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `64 \u003e 128 \u003e 512`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `1` (one round shocked face)\n\n*epochs:* `200`\n\n*learning rate:* `learning_rate_d=0.0002`, `learning_rate_g=0.0002`\n\n*batch size:* `768`\n\n*opt.beta:* `0.5`\n\n#### result\n\n_`Note:` The goal of this run was to proof that a DCGAN is able to train on a single image and will end up replicating this image. This was a way of testing the overall chain and exposed a bug in the data preparation methods._\n\n![](./results/8c948e8_sample.png)\n\n### [86359f9](https://github.com/anoff/deep-emoji-gan/blob/86359f99f01633b4535a84a897a6d4ed2c6a5a0a/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `3`\n\n*features:* `512 \u003e 128 \u003e 64`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `64 \u003e 128 \u003e 512`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `273` (1565 filtered for being yellow)\n\n*epochs:* `800`\n\n*learning rate:* `learning_rate_d=0.0003`, `learning_rate_g=0.0003`\n\n*batch size:* `768`\n\n*opt.beta:* `0.5`\n\n#### result\n\n![](./results/86359f9_sample.png)\n\n![](./results/86359f9_loss.png)\n\n#### Degradation of diversity\n\nWhat's interesting is that the network managed to somehow learn diverse features and put them together and at epoch ~600 got scrambled and forgot some of the features like a _sticked out tongue_.\n\nThe network was trained with several emojis of this type:\n\n![](./results/86359f9_in.png)\n\nEmoji shape forming at epoch50\n\n![](./results/86359f9_50.png)\n\nFirst details emerging at e150\n\n![](./results/86359f9_150.png)\n\nDiversity in the generated images at e600\n\n![](./results/86359f9_600.png)\n\nSomething creating a lot of noise at e650\n\n![](./results/86359f9_650.png)\n\nFinal result at e800 with less features than e600\n\n![](./results/86359f9_800.png)\n\n### [7e1480d](https://github.com/anoff/deep-emoji-gan/blob/7e1480d559d4320d1d354eb0aa0d6ed003ac4012/Smiley_Generator.ipynb)\n\n#### generator design\n\n*convolutions:* `3`\n\n*features:* `256 \u003e 128 \u003e 64`\n\n*kernel size:* `5`\n\n#### discriminator design\n\n*convolutions:* `3`\n\n*features:* `64 \u003e 128 \u003e 256`\n\n*kernel size:* `5`\n\n#### hyper params\n\n*training set:* `141` (only \"face\")\n\n*epochs:* `800`\n\n*learning rate:* `learning_rate_d=0.0001`, `learning_rate_g=0.0001`\n\n*batch size:* `768`\n\n*opt.beta:* `0.5`\n\n#### result\n\nEvolution over epochs\n\n![](./results/7e1480d_epoch.png)\n\nLosses\n\n![](./results/7e1480d_loss.png)\n\nEpoch200\n\n![](./results/7e1480d_200.png)\n\nEpoch 450\n\n![](./results/7e1480d_450.png)\n\nFinal sample\n\n![](./results/7e1480d_sample.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoff%2Fdeep-emoji-gan","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanoff%2Fdeep-emoji-gan","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanoff%2Fdeep-emoji-gan/lists"}