| --- |
| license: apache-2.0 |
| tags: |
| - pokemon |
| - sprite-generation |
| - gpt2 |
| --- |
| |
| # 🎮 GPokeT2 — Pokémon Sprite Generator |
|
|
| A GPT-2 based autoregressive model that generates 64×64 Pokémon sprites token by token, |
| conditioned on type, generation, evolution stage and more. |
|
|
|
|
| | Pokemon sprite | | ASCII representation | | Train the model| |
| |:---------------:|:--:|:--------------------:|:--:|:--:| |
| | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAACCCAYAAACNbQytAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAudEVYdENyZWF0aW9uIFRpbWUAVGh1IDIxIE1heSAyMDI2IDAxOjQxOjA4IFBNIENFU1Rd2qgsAAAgAElEQVR4nOy915NcV37n+bk2b3pbvgplUAUPgiAJsmma3VS3bKtHYxQTs9LEPuxs7MMqYl/3df6Jjdjdp1kXkkLjNBPTo5ZaoZ5Ws8kmaAEQhCuUt1mZWemvO+fsw80qoIAqoAqGbHXgG3EDEYU815zvMT9/tEKxpHiBX1vo3/QLvMDzxQuCf83xguBfc7wg+NccLwj+NYf5NI117cnbyqeQ3V889whtn7zpC/xDwAuCf83xguBfc7wg+NccLwj+NccLgn/N8YLgX3M8lR78AkeDrmtYhgZaT7FVoJRCKgiFfC7PfEHw14jJ0QzfeXWIYt4BwO9IvJbk41sbfHyr/Fye+YLgJ0TMNkgmTHQ0pISuF9L1wj2/MQ2dZMLENg2kgjPH8/zBb04wPpwGoF72qa251FrdFwT/quHUVI7ffGsMGwO3Ifjg+jofXF/f85tCNsb33xrl5EQOgOHhJENjSZxM1O2rmzVur69Sadaf23u+IPiISMRNClmHV8/187vvHcOrCxbutLi5VEPTNHJJm0zSBmBsKMV33xjh0kt9AJiOTixr0uoGbFVdbq1UuTa/zuZ297m97wuCj4jJkQw/+O44r77cR3Ewzk9vL/Pnf32HhfUmpqHx+qkB3jg1AEA2b3N8MouTtwDQDdB0jWs3Kvy7/zTL4lKdWrVNtSGe2/u+IPiIyKdjXDheZOZYjkTapCN8litVJJLhPpuLZ4Z5782TAFhxRXZQYSUiV5LrBjTKLRbuVrh5Y4Patg+6TiHtMFKMZn0QKjZqHept/5m8r/kP0QX2TT438CTtaojbECRLFsMli7fOpwgCgWXZnDw7yvCZM72Heej2OtAAoLrV4urnS2xv1Lhw3CEIbTRNY7TQx0ghWsYbHZ8ffbTAp7fLe577pHgxgw+JdMJmpJTk9MQA+eIAXqizuFDFsRze/tY5pATDNJicHidZzCNlB6VchFCIUCEChfQUmtAZLCUZHkqh9fThoXyRoXwJgEbLp9J1MY17NiiloNbyWCq3HpLUH4cXBB8S/bk4v/f6OG++dpKZl8+yubXMp5evMDw6ydvfeR3DMNA0jUQqhVICKTcRooxSPjJU+E1BXHc4PT2CbmvEMgaaERFsmxa2GVGR6Vp8X45xbqS45/lX5yr8h/fvviD4WSPpWBwfzvLq6WEuvXqS6dNTZIt5Gs1tHBUnHctS6uvHME1AIWULKatIWUeKLsKXCF+h6RBPW8TTFmZMx0rqaPvsF2ZMZ/x4mv5CfM/f430mbSPki5tlvprdxvMPJ5i9IPgxyKVsvvfyCN998xTj586QH+hDtywyiSRTAyMUs7ndpTYieAsh1lAqRAmF3xIoobAzJoYd/U7T2JdcAMPUSA9apPr3UpMcNhmfSPKjv3NYXGsdmmAjkUj86yf9+KdJidCeQtj5Op7r2AYvTZV458Ix3nrjNDOnp8j2lbDi8YhQpbBtm3SxiJNOo1QTIcpIWUOELTrVkE41RPryvudqoGtounbwe2igGxq6ufcyLZ143MTQNeK2AUpjs+qi1KN748UMPgCJmMk754b53W+fYuTMGfLDQ/fNVIjncjiZDJqmoek6IqwRhguAQoaK5rpPuxKSKpnEkjpeU2D4YKZMzFhvFh9hkBuWhpExOX+uyORQmoRzh2t3qojHTORfSYLPTxY5P1k88P+VgpWtNp/Pltl+RvrigxBSUmnWWKuVKYkATd/rWdU0Dc0w7n8rpBQszlcorzXImmlSmQSGdc9zJENJ2AmRnoYwQLd09JiOrsPO7X0/ZGm+Qnmzued5+UKSYxNF7LhFpmTz5rcGMBI6jbJPY8vn89kKN5dqD33HrwTBhq6h6xo7A/riTD//4r0Tj2zzyxsbLJabNN0ewUpDHFFhfPC5O24709DRdUW1XWdlu8xx392nteL+zUJKie+HLMxtceerdc6fHid3LIF+3xhQoUKEAgEEgJEwMDUNy9J2CQ58wdxsma+urRKEEikVoDF5vESukKRQNCCmcf5CifMXStTuumzc7uL5gjsrNZTSkPct278SBB8fzvL6yQESTvQ6r716kqEzJx/ZZtpI8NrqKqOb0R63Ug6YX/OPRPKDz/3k1iZf3K3w+qkBXj1VYuZUnOMnBygUkw+1jaTlLZSK1sj5u7PMzc7hOBZnXj7GZ9fr/Pzzbb5zaZjjx7L7Pl8GirAVQtwALZrJdsxk5tQgUjP5258tcWt2Gw2NtbqOZtwlUDpzKx5eEH3nQNygFNPJZT0unU4wt+azUb2nSn2jBFumTiJmcno8zw/emSCfjqNh0jc9Td/x449sO4nk9c1ZqpXoEy5/WWdhvQJEe1siZhGzjIfa6RoEQtLxQoaLCb5zYZCBQgI7ZhIqwd31Gheni/zgW5P0nXTIjeQwTQulvD33kaJOEKyiVLSCrCwucfWzJd5+d4aRiQF+/H6ZK1e3GB1MUsw5JBMWlrl3mVeBRATRco8RzWTLMhifLCF0mx+/v8VKpYaSEIg2plxho+px+XqbthsNrFdPJXnlZBLDgIlhm616yEb13jO+UYLH+lK8c26Y1y/2M3Y6RSrVh673Ec/mHtu22NfPpTffwXOj5bMWfMFPP/kFSklMw+CNk/28MtO3b9vZtTo/v7ZGo9vm7sYKib5BTkwPcXIjwRvVJIPFe92ilI8Q60i5d38Luh28loeSUUeHrgAUQUdihRq/851xjo9nuT5bY2G1yW+9fWzXD/wghCdQSmGkDLCiQVAqOPyzf3ScS+cHaK4FLK82uLG8yXLZxxcaWm/tX9wM6fqd6B2EpFx7wCf92J58DjANjaSjcXwsxXuXhjl1vp/ieAo73o9pjnKYULF0Jks6c2/pu7HgcnJ6gdX1Gq1Wl9PTA/zeu/sv85/cXGN+s46uu2w2anRUlkTJ4PjxJN12gWLCpO11yQsLCJFye7etkqCkwu8K/LbA7fp03QApIF9IoSsD1YWLZ/roH4zz6RfrzG25vHlhANifYBUqhBBIS0NaGpqhkUnbvHVpiIvTIZu3XH76wQo/u7rBWiUicEeir9QFlfrBovQ3QnAmaXBmwualMwlGTsXJDuWxnREMIw08mYL8+isz5LMp/t1//oAf/eQTMgODDJ89u+9vt02H11YXabeq2JaGcCVuLWR4ME8q47B4p8rdjRUykwZF9lqUZCDxW4LQUyip2Cw3uDO/zsBwhje/PYPWNGlXQuy0QSKmc3oyTjOrkUk+vF3sgYKgI5BCYacMTOfZxEN+rYYO09DIpU2mRuO88XKRly+UmDxRJJ3vwzSH0bQ4RyVYKR+lOmTSOpPjOeqNGrXtCpNTI6QLRVK5LPn+IrFUavfCUBiqQy6bIJfLkUrEIRQkUjH6BjMsL1dYXq0wMJSlkE8hQ7V7CU/ityWyJ+SsrFe5eWeV0fECZ18apbHlUV5tYsUNDB2k62FbOr4w8AOIOyamuT95SoIMo+A8zYhkCSkgdBW1hk+51sUPBK4vetL142E48cS/3hH4j3rp2j2F/TBXKq5zbirGGy8XefvtcU6cHCCVdjDNNLqeR9OOvqAoVScMl5GygpQ1ctmAk9Npbtze5K/+9iZDA3kmxwf2tLFtm2JfP8cmppiYmsZ1fa5fv4Wha2TiCZaXqtS22wyW8mTjCUJX7l7Ckyhxr3PLlQZrGzVGxvIMj+a5c2edO3PrmMIiJmOkUw5tH/7q75dZXGsxOZohk7If+U1SKJQgsmDZOnZCJxE3GUwmQMDCRgM/lIfq869libZMnbG+FJNDKU6N25wcydOfzmDLGG5N4uttDGMTOxHDThnoehxNS+x7L6UClOoA0V4kZQ2l6igVADA0YFIs9DO/1GBtvU51a4nF+STFUj/JVAoAJ57Aid+7/83bi1y+toXtJJgYiQhUUuG1BJ1aiGlH5sL70e541BsdRCgZGSqQSSdQKLq+S7XRIL4eAwmDYxls22Z+pUWm7uE+zhukeuqTkhHBcR07qVPqc1CjOe7M1TENg0iTfjy+FoJ3zH5vnx0k7ugk4gbuuka50jMgaGU0tskMxyhMxLDsEQzjIII9hFhFylbvLyFK7e00y9T4/rtjvHS6yNLdFS5/sMWlN9/ZJfhBrG35/OJqi7HRe1YxJcFtCtrVkGTBxH6A4GqtyZc3lykV0rx8doLC4D1dOZSC9e0KPj7pPuuIvRVB9hwVMlTEMo/Zvx+B50bw5GCGyaEMAOmExesX+zlzuh9dS6FpsX3bKOFSX61jGCaGKXEyBnbyAd1RdZGygVIHB6ppmkZfKU7C0VmeXaFW3cbtbiBE4oHfxdH1NKOjg3z33dcICPivf79IOp3h5OkBMppB6Cq8lkQpsBwNvefDjSdtBkYyFDJpctkklmYStCUpK8lANk+j06Hju4TyCeOtFMhQEXoSva1FHqmEzrHRNO+cH+LGYo3Z1fpjDTvPjeCXj5f4J+9MAWA5BmOnU/Qdy2Ca4+h6ft82teUFyrO3UXINXS9TPB4jF3twv1K71qPDYkeXDcO9naHr/WhanNcvznD6xCj/95/+hP/9z37G//yvfpff/vZrVGZnaa6v060LQl+SKpm7BPcPZBicyqI8hehEerByoRDLMjVgcHdjBfcB48iTQIYKrxnpyfGsztmTefrTcX70wQJz642vn+CpoQxnxgu8+dogx89FeqphmWQGisQSJQwjg6Y5+7ZN5IrkhwOUUiglKVdWuLu2AEA8bjE0kiebi+/bdj/sWIUSyRhb5Rph6DE8mieZilYQpeoIsUZ9u8Paco2hvjg//L23OX1qinQ2hxoewUkke9+gEUvp6KaHknX0mMCKGwhbEpg9AcyVxJMmpcEkKt6HrwLSSQfX95gZi6xZTuyI6k8vvQUiN6LAp+XV8cLDhdo+c4LPjBf44984wdiZFP0zEZGaHsO0hjDNAR6lBiWLRRL5aHaHYcitny7y6eVbABRKSd50rCMRbMdMTpwapFhK8eH7syzOV0ilnV2CI3tym8X5RT74+9u8cunb/OE//S1M08AwdHIjI2SHh6Nv6L22lFXCsCfoaVGssxHT8bZDhCdxUgaxpEFuYAClIpXH80POT8eJ2RaJp9RvG53I+rbZqKPU4/OZnhnBxazB2IDNmdMJRk8nyfTbaIaOrufR9XzPiPHoj9txwUm5DVqV0XEb3Zjc/f+NtTqdtsexiRLpzP6rwIPQDR3d0FFSIYR8wEEeKXxSCsIgBLYxjVV0LQ9k0HT9oeGoa0lMbSRy7Isa+moFfb5Cbb5JeaVD+sIIiRMDaPd9ayoZ49T0EO2Ox8JSmWazy9BgHsu8JzxJqVjbqLFdbzM0mKeQ218gVCikkkilDmWHeGqCtShIgcGizaUzSU6fTtI3E+8p8xqGUcAwRg95t50OryHlIscmYhybmAagWmnxi5/dZnmxSjaXIJG00XX9qSJDdqDrWvS+chvhzqHFdNAzB3xvHMNwQGpIsY2+2sS8vEzn0zU2vtpCj1skTuzVu5MJh5mpIRZXtrj82V228x3yuSRGwkHvhe5IpVhcqTC3WMa0TLLpRGTweOADNU3DMAwMXcMy9Cg78RH7sBF/CkuWpkExa3JqwuH1l0u8/fYEk9MlMtleWAsahpFHP6CzHoSU9Z4KtP2Q90bTNJy4RSxmsVVu0mq4pDIOtv34Mdrt+CzNVwhDybGJIunM3mXe0DVyhSRjgSA3V0GzS2j5gX3vpVQHITZgdQ7989vo+hjaud+nutGhdvM26QujJE/s33ZupcnffrjKZsVFJ8QwIJNKoGkaoZD84rN13v9sEw2JoQtitoXj7BUydV0nlXQwDQ1N+QghqbcPXqqfeganEzonjtm8fDbPxVfHdve3o0GiVIiUdcJwBXj4hZ24xdR0P4lkncu/mKVRdymUUpiGjh0zHxrp90PXo8EhlcL3QtxugB0zd2dP30CGvoEM/PQW4ftzmJlTMLn/vUTYxXfXYGke/cNZtHMn4dVvo0ZvYeb/Dj12cJfWW4IbCy627pOJhyTjJqNDRUBDKVje9Pn8VpNUHNJxSS6bJJfd64vOZhJkMwk6bkilUmO7FbK4cbDR41fC4S9lsxdDXOdxFu5MNs5LF49R2Wpx48s1+gbSnDg1SMw52KCQSMY4fW6ESrnJ/NwW1WqbE6cGSaX37uOV9Ta1q2UGX+tSOuBefltSXfLofNXEv1pB3vkb+HgJPdth6I8vEZ86qOWzxdpWwAdXW6xXHh2y9MQE77j8inmbUjFJKn1vP7kfSvlI0Sb0I2P9fhCiihBr6GaA+Rg1IpGwGZ8qIaTkyyvLBEHI1HQ/j1o3YjGTsfEChqFx68Y6je0u45MlUg9479qBxmZXJxvutxoIlAoQQRevFdJ2FR0MxOYicm2R0u+eJf/u/t6rHdiWRi5lEPga9bag2vCo1dukkg6appOM62STBkGoKNcCFtda6IZDMefgxPZas6qNkBsLXYJQoesH99kTE7zj8nv1pSJvv32M8fH8PvuhQogKYdiivhpFGe4L5SFVh1SfQXbERvuGKofYM8OkfzOGNdH/0P9FJtJ1DKdKflwjlRolPJsiaAT4LUFseP+wnPtRyJhcPJnk9kLIF3dcArmFpgQzU4OMjRSZGnZ4+USSjargJ5drfHyjy5npbX743iRTY4eTYx7EExOs6wrL1EinbIYHcxQL6V0rD0DgSsKuBOrIUMNrG4jgAZuqClDKRfX23GYjoEMbtEioymTjB+7pjmPRP5gh5liUNxqEYfI+4e5oCD1J0JWYpQy5b6WwBy2k3JuUrVQbISroVptEQUNlM8hjafy2wGuKQ/lO8xmbCycLBKFirbrN8nqbjzUfhUncsYjbgpE+m/n1DrcXXaRs4Qfw7qXhI3/TDp44u7DZFnxxu0s23+GNiwGFjIjybXod3NkK2V6J9gfDtMkOjlAc2xtCI2UDIVZQKnI6zM1v8tXPVxBCYhg6L10cY+bU4L7PL5RSXLw0wepSjc8/XWR8ssRLF8cwjKN/ULcmqC15JPImpZkYdqJOGO6V4pUK90j2oa/wmyHCV4d2jGczCc6cHEM3Y+gIZpfbfHS9g1CbSOHSakf313uq52Fuq9Sjsw+feAb7gaLrBlRqAW5HELqRe0sKCH1J6DlYsWhZMW2beKZIsrg31llKCIKtXW+QUzGJOSZSKDRdY7vWYXG+QqG3x98Px7FwHItKuUV5o0E+n9hjxBCBQoUK3YoyCWQgCT2JkgopVGRa9CWGpdNodllarDJsZcgMZalWtmi2I1OgbZsUiknicTu6Z88MHvmHI7fiYRGzLWK2RTLRwA8V2y3JWiXgxlwTIaLJ4HqSVjd6iKZF0nXQkQSuxLT13e0rkzSYHI6xWQ3Zfp5q0g6EL3HrCrchaFcFueFBhs9O7L6oGXu8+jQ8kieXT0SjUkhuXF/jo1/M8sqliYcIfiR64S9hVxLLmBg2+C2B34jcb1JXeI2QICnRMxrbrSa315bRM0Pki3Fu3Vzn7vwGANl8glcuTTA0aOE3BcKLOlNJeFzayEEo1wIuX2+zVnaREpY2fbZ6cVVSKbpuZHHTdR0VanTrkm5dkMxru/lNwyWbN8+n+Oxmh+3Z/eK2IzwzghuNLpVai7idJ5cbIpEr4aQPCDJTPkq1epGK9wQvJ27hxCN1RwpJX38azw2oVtrAJv2DmccSLXyF8CVI0K1o5koRhTfoltZLNQHD0lFEsyMetxmZyrFWc7n113PML5WpVuucOl5gdCiOFmgE7WgFaNZdqrUm5ZrHZi0knTDoL5gU86kDzYsPwvMVtWZI25Xouk7XUw+lhe5sdZ4fsF7ZplyzsNNZDDvqn1ImwbnxQVY2NoGvgeBKrcXV6wtMn8px4tVTxJyDiVDKIwxXe5EY+0vWuqEzNd1PqS/N558sMH+3zOtvHX8swaEr8BqRPBBLmnjNEBlIYmmDWNqMkrmsKD/XMDW8ZkhfIcPASIZ/82c3+Dd/eoMgCMmkLF69kOP09Ci2Ye667OqNDl/eXOaT6zU+ut5iajjGpTMpLpwZOzTBR0E38Fja2mCoCqXhBA4RwblUmpkhm4/THrB1YPunIljTNZodj9mFDYYHHY4dLzE0WsCOO+jGo24tgWA3zOYg2DGTTDbO6LECMcdiY62O5wYMj+aJOzahK0kn4px9aRRNg6ufLVEqZCjlMygZka3rGlpMQ4SKwBUoGe2jQVciHYXpGGg6aApycZ2xPp3+vj76imk2qz7//m/m9rxTTFdkrDjHBwy0ME1f3mIgHaPTDLhxe4X+UhSo9yjkMybnpuLMLivWKiGPWumllPgiJAjD3QG2uVVnftFlYd5ldrXxyGc9McGapqEpaDS7XL+5TC4/xhvvTJPL92EYz06RPcjlZxsWXkOQTycZeCPDtStL/PL9WV55fYLRyTzutsBvCZxclJfrbgv8ZrQHC13iNUJkSuHkTIKOwN0WDGUtvn0xwyvnJyiVivwff36NH/98cc/7XDo5wL/8/klOn0nz1mmFpmnoGsyVV7mzNMfF85OPJbi/YHLpTAopBRu18LEZgvejUmty5foiH17d5oNrXfzg0S7Dp1uiNQ0lo0w8TU8Six3Dskoc5PNVKuh5iqq7qtFhcL/LL/AEXjNEJCVWIhpIoqsIXUUYCvxOtERrOtgpAxkq2g2PxfkKtWqboYE8+UKSbCmObmr4rah3YxmDzWbIZzc7TJ9SnBtN8L13xojHTD78Yp1uJ+Tl6X5eme4jn3L21NAAKCQz6JpGJv5wHtODKOajJV0QQ6kyC+seK+XDBdFt1gI++rLJnSUX1wsfW6DlKWYwGBqYpoZlGphmBtMce4znyEeIDaSsHO1h9yXy7WTNC1/h5AyEr3C3Q8KuQKnIaOE1BE7OwEoYuNsh9a0ud2bX8fyQV1+aYvRYHidv7ra1EgZOzmC9HvLR9RbvfV+QH3D4zXfHGOtLsr7VYavs8juvj3N2osB+fvZCOkMpmyWVfHyXFnIpivlUZNoVbUIhDyQ4WiG0njlSo1IPuXKnw2bVRx0ihvyJ19J0Quf8cYe3Xi3y1juTzJwaxH6EJ+VJoSS9WRkigkjXttMGRkzbDUCPZSIyNQ0sR8fJGSgJXkP0BCoTw7r3qSJQeA2x21bTwd0WBG7EXNCV99pmTXRLw4rr5MZssiP2vvbyWEInVTKx4o/vdCMWVbzbeedHIW7HGCsOMJwvEbMs+vMWl84kmRqOHaok1BMTnHR0pkcdLp7OcfGVUcYni1j7ZPM9DaJI/55RwlVYhokdM1GmIpSCoBtF+JuO0dMPNXRLx0oYe4Qsw9HxhML1onxbGfZWgVBhOjphKNje7GAIRSkfx9Z0gq4gFAJMSTZn0T8YpzjmkB60sZM6Zmzv5WQMUiUTO/74LjWsaJA6aYtkKorVSjo6lvkwY4ZukoylsI0EnidwLMXkcIy+vHmoYIdfCXfhvlBEnexKDFMj1x/nhD9Etdpi7laZaq7F1NQAMdPAa4YEHQkoQlfgbofR7EubiFBR2/S5dqtDs+lx9pRgqPcI4UncOqws15i9s8HYYIw/+aPzvHS+hB6H2bsbrK43eO+tIXKFJKPDKWIJncJEDPGAZ8yK6ZgxDb8tejb4x2N4NM+b355Gi62gKcGdFZ/F9b3uv41ah//y0QJ3NiqcmXFYK3f48GqT5U0fpTQeZ9D8lSRYicicKHyFDBSGrRNP2YyOFdDRuPzZJs1ml2MTJeiZITsdQaUe0mpGWX9OxkSPaQRdQWs7ZHHVpdEK6Hj3Oj/KNxKsLDe5fGWF11+e4M3XxnEyJq4MuD1bYW2twW/99ilOnr4XpZE6IHBO9WKZI5PmwTZqpaIrX0hSKCbZrnXYWq2wVQ9ZfOC39bbPJ7fKrNe2aXbiVBoh1+e6dL3DWdF+JUv6B67E3Y4k4VjaQAYKvy0wYjp2xkA3td4+Gkb7aNqg3BF8cK0VzYCeqdKt95wBj8Hqls8HV/e2bW4FfHWny2c321Qbhys+pgF6zMBMmujWwV2rFIRhZIs/LGoNwae3utxe8vGDw5tIjzyDTSNKhRweiDM8nKFQSmJZRk8FaqLrshf3fP8GIVHK66WbHNxZUvSy+ILIiK/1yg6BRMnojjsmPLXjMAgkpmPS6AjmVz1qzej+IlDwmI6o1l1WN9uUaz7pdIqYY6OUYrvmslFpoRsG2UIaK3bI9BMNDFtDaXrk4lHs5jk9+J2hF8nAh/V+dTxJp3z0sv/mUQtdOjGNk+M2r57P884740xNFUkkbJRqIcQCMIBhDHM/wUoJhNhEyvJDwXT3Q7gSrykwHT0yQHQlYSPEjBuYTk+6bYZRZEhvaApf4dajPfiotv8bd2v8xV/dYWIkw//0z88xNphCKsXS6hbL6zXevFSifzjH6PDhTZC6DqalQcIAXUN0BeqBVUQFCtEKMTBQ90VqKPZ3/T1NAdUjz2CltGiJ0DUKpRSFUqr3d79Xr8IGYmj3hWXcM3C09r/pDjRttwJcNIPpfZ1CCg3hK0zNpL+YJQgFlVoTKRXZTGLfcCAhJPVGh2azzfGxNAqdbCpG1/WpNzo0mh3ijsnYYIqXT5dY3Wzz80/W0DSPXNFhZjrP2HjhSP2jaRHJhqWB0pHew2YqJaNZLUMNKQ0StkNfJkfCDnmU4+BJcGSCO67g+nyXVK7Ld9v7vLxqEIZd9i7RardYySNfxtHQLZOgHZkO7aROLG0QtCOVSElFKhnj5PQwG+Vt7i5sUsh3OHtybN/7BaFgbmmT8laTd18doK+UpZhz2K43uX5zmbhl8d//wQlK+SSmofHhF+v8x5/c5Y/+cIZv/8YUieSTRIj2jEAGYD662JmUEAaQT2aZGdL4KOkB2wc3eAIcmWAho2iOejsk2GfWRA6EgPJmk0q5STGfJptNREW/TO2RFd6kiPzK0NvL2HH/3QvYMw2DVNJgaU3n6u06I4MwMyUpZExOjcfJxQ26Pd9qsxNw806T1XKDodIApSxEJxwAABunSURBVFQcy9SoNXw+v1ljsJDh9EScasXloysb1Ooep6byDJfSJCyHsCEJVICTeXxJBeErRCAxbB3D0u7N5JiOlNGy/NBeHCrCrsCxLfoHUlw40UezEzK7Umet1jkaMQfguUnRS/MVfvGz2yzcrkSG/q4kDHnkPim8qFYGgJMzUYKeJPywcFFthHx6M4pd8gPJUMnizfMpBtMmzXJIsxxSWw+4frvDJ9fbrCx5dGohIlC7ba/f7lBbD/jl5U3+t//vCgB/8kfnOTteoFMJqC16VOc9vEdETOwgdAVuLdwNCIDI22bEDYyEuVs6+H5IXxI2Q0wTcgM23744xD//7jTHRx4fwHdYPDc9uFBKcXymH9f3uXlrlaHRPIW+FDjRCNf1h2eybmpYvWIlQVsg/L3lEu5HKKDrSdotQWdbkDYSnB4bxtA05tfXySVThIGB60k6riDwFRvlLr+4sc1KucWZsRITfRlMTafdCSjXXMqVBpvlCpvlaKUoZjPkSknM2OOlnM1yg5W5bcZPFBhK9cpARWI/mqb29b9Uqy02t+pIFen9cws+d+52nukhHc+N4GMTRQaHs/zy53e48uUChq6TScR3k5n2W6p3M/XqIe72o/2kOwhcSWsrJJ9OMDMQ5+7mKrfXlpgZGiNp750Ja+U2//Zv7pCImfzRb5xifCC9x7W5tlHjky+iFSSZivHmOzMUJoqHMgmubdT47Oo88bzJ0LHH1/kC2Nyq89nVOUIhERI+uNLm8zvdQxdYOQyepOoJuqaztt7lL/7yDmvrbd7+1vDuaV5S9i5f4bcld+ZdPvqyycioz3GhIrUhlAg92mctR9+zfGka6LaOkTSRnkQ+xt/ZeyU0Igl8edPngy8bJC2fmQeiTaVU+IHENhWmodP1XSrNOkNDJv/jH55muM9mtD/KBbIdk3w+uRvk1my4LM5vYZoGxyaKxBP2nu+dX/X44GqDiTM+F+57pmGAMkDsM0ikUoRCsrjusbjhs1QOCcJne8Td0QnuDee1zQ5/8Zd3qFRdTs0UKOTuERwGEHYk3VrIwrLHtbtd3q4GeF6IGeq7GRBWPFquDV3bs4Tpto6BFgkl+3jRVKSlYRk6mqYRhHK3iOjyps9H19ucO/YwwTuQUhGEgu2Oy2J1g6nJPn7//Myuj1cpoGdFE6GMIlcaXW5cW8OOGeSLSWIxE93Qd793ecPnkxtt3t308DyBaeoYhrZL8H6LgJIghGJxPeDyjedzdtJTZReiFOPDaV4/10/GsaJQ0q5E+hLpK5DgxAwGikk2qx2+mt0mm7YpZO/FValezLhu3ksFDbuSoB258x7U/EWgcBuSoK3IxR00ovMM/EAwXExybb7ClwtVLk73MT6Q4fM7ZapNl4vT/diWwWd3yqzX2mw1XKyUzsuvDjAxXSJfSka1rRwdtymob/osrmyxslrBkAa2ZmLrFoamUy43cL2ATDYOAoKWYH21RrfZpN0JuDHbIJWyGOyPaoLseMTkA/LEFze2+PH7qyxt+LTdg5flp0mRfWIpWtchHtOx9Wi2eo0okiJoCcK2QAYSw9B49Ww/v/edcTrdkL//eJU7i3W2G15UKrfntgs6EhlGHSBFVGxMdATq/uVZ3TPxdeuCvO3w3kuj9OUS/Lcvlrk6Vzlw7xJS0ez4dP2QVMJCoLi6sEXFC5g5O8T48SJO1owC9dIGoNFpBqws1Lh7q0xto4OpTMZH+0gmE3x5bYObN8q43bD3riEDGYOzUw53Zyv8+X+4zexclBnxKDmivB3yxe0O65XDRXM8CZ4qN+nEaIzTk/HHliVIxi1+6+1jTIxmuHa7wuLa3uKcO267nZG6n1okRBRz7bdlZGc+AmpNj7/5dInpsSzvvjHMDzMTAExNZ0jFH7Azaxqpfgs9lsIqDuF1fbKZBJqhYTgGdV/x2e0ODc/m1QsB2aR+IIlKgRCRxP+EIdRPjScm2DJ08mkDy1CsldtomkEhF3soVgmiZfrl0yWKOYfZxTo37taYGs0S9gSKdNI+sO0OlOgdx/qATppyLEZKKVJxg7bn4odREZda02O91iaRiJbKVuDjEvLK+T7OTOfRdA07aRB7IGtP08DJGsRSOol0gaDTyzKwdMy4ju6YSDNGtSm5fXubscE0xVys11ajmI9jOAaalGxXO1iWhSb2DoJmO6C67bJV66K450B5HnjiPVhKaHYEK5se127X8APJ5Gj2oTTH+2GaOv3FOMm4xSfXyvz0o2V+eWUD1xOPbSt7BD/o/nNsg7H+NIWsxna3yvX5KndXOzS7AZv1LqdP5vmdd8d548Igr5zp49hwmkTKIpYxseI6uqnvKwFF9ULAiBmYcQPL0TFsjUTCZHI8QxBIfvL3y4ShZGYiR3mrTnmrzunpAV5/aQRdulQ268Q0C8e09viHr9zc4k//y20++bJMteFHWsAjSH4a/p94Bru+ZL0iqTUESafD8bE04r5TrNude8lU96MvZ7KdN6nWGtxeiPapVELn2FCKdK+G41ApyWDf/pXuHkQpG6eUjfPl4gof39livdYGQCDRbMWJqSxvXYxiODS9V//R0XvkPqLnNCKz4wNluvr74vT3xfF8wcdXNqOzI25sMbfQZKMacuZUmtPTffzdL25z41aDTDxDPrk30nJjq8uHX6yzVfOiQi/PbwI//dmF+bTBuSmHE2MOtnXvZqvrNW7Pre/brt0JmBzS6c9GnqhGt8v/85dfEfaUxT/4/iT/+HtTR3qXKOO9SaUeYJoa714a5ve+M85w/73OjQL2TMwHdO8nwblTRf7kX73E+x+u8X/++TW2G13CIOTkCZ/j44pbSy53FtpcOHuw/3ungM3j8I2eXZhJxjh1rEAxHaO8VadWj5bZbuCTyu7vjUllYwwM3fOxLm16XJ9zcXvCVSACFle2qDYE9Z24Zd2gFIuTMvdOqa16l8XNJtvdgMmxEuOjEss0eOPCAOdmomxGTY9OODGd6DKsx/eqkuD1akXaSeMhc2Wx4FAsOGxsdPj0000SjhnJEEqysbVNKmFTLKSZX2kRs7eYHMsQhpK55QY35mr4hzzY6mmhlUqlJx4fUsFrMyX+u+8dJ52SbDQqBL3ajCfPDHLi7NBj7hDB8yUdT+6GsCzNbjB/a4NPb7a5sRD5R4fySf7gzSnOT+ytgfHh9XX+/c/vcOFMkR/8xgSWGRk/ijmHbDoaDLoZhb9a8WjmHmZJFL6KHA0tQWEiRqKw/1zYXOmwMt+KVDyl2NgoU6+3GBwo4QmTH/1sAaXgX/6jk7Q7Af/vf7rJ9dkq1W0PqXhk+YUdfCMzOJu0mRrO8sp0P/3ZNE5aQDokOjQG+ocyFEtHS8YSQZQZKOodWlsdJkYt0D1CV5KyTbp+hztrG2zWQjq9GOaG6zE1meHUTJ7jx7K7B18YsXszVTc0zNjDJYEfhVAIypU6zaqHM1AkcUBXZdMxYqN6TyWS1CpbtDtdchmLdDrLqckGK5ttPr9eJhSK/kKc7WaSRutosVVPiicmeCCf4Aevj3N2vEAiZpIZsJiZKO7mr1r20WOkhSdxt0P6slmyF5NcOKfwXEmrIqhXO6zVN/j49hofXW+xUY2MA9++NMwf/f4JhgeSu2qWpkVmUDsdvYPGwWcFHoRQRCWBy+Umg26CEo9PSXkQhVyMH743ydVbFf7sR7dIxi3+xQ9mmJjNsLTWwg+ez6Fe9+PIBGcSNqeP5blwvMT4YIZiKUeyWCTVFyeVt9CMdq++xdFH5467UDM0TMMgEQeVgowjyGYMnHqInYoRz7hcn23w+Y0yyoCB0QTF4n1ppVokKetPKEiFvdgwzw3wwwCxT66KUvccDQd9qWnoZNM2A8UYw0WTZMKkv+DQ6SR4aTrB7DKPzS58WhyZ4GwqxvdeGeP1k/1RgbF0mv7jx3Ey6V7FthWkbPAkBD9Y2BMiAclJGzipOPlBhxMn4DtK8bOPV1lab2LYGk7WxMnvtUg9qeqhVC+4rx4SPiLkVsrDh75mksaeYqRPk114VByZ4DAMKNerVP0UE1PT5EdGoxM5e+f46HoW0xzvBdkdLr7IawralZBqo0mlWd/NaADwQ8XSukd5e6+6oVsaP/ydSc6cLpJKWs9El1xerLKyVKM/myVmWNBzxAft6KQV07mnO6tQEbZ7JR0OGAeuF7C6XqPR7DA2HAXvLSyVub1Q59ObLZY2Dped8DQ4EsGGriFUSLlVpeKXODs8RH50b6FRXc+g65ne6L4/OTlKEVSShwyzbkNQW/CYW6lwe31p12mglKLdlXxwtcWNhe7u38JQ8d67o/yv/8urnDh+OOf646AULC9UufzhXV69MMXkWH9U7JSoCkC3HpAw7V2CZSARbfGQh+h+dF2fO3MbeH7A6xeP4/kBlz+7y+WrVS5/2aHtPlvf7344NMG2pTE5ZHPqeIq3vzXCS+fHInfZAdD1/G4yWnTk+RZ+t05rM8Rr7V2TdFMjPx7jxEA//e04oVBRAJ4n8DqCiYlgN7tgeb3Fzy6vPsm3HojQjepkBfd1uGUZTB7rI5tJUK42cIXPjDNILpZAiMiJ8Lh513ElX813aXcCTp0QtLuCT2+2ubXofi0SNByBYNPQ6M+bnJhIcvbcINMn+zFNHaWC3nE4e9fIKE84yhVW0iP02wSdbTpV6Nbo1eaIPjI9aJE/FqMQizFOnjAEEULQChEdwQV1z4772Vdlvpp9+BjVo0L1co6Viny1fiNEFxrxXnZDEAr6+3I4TowPPp5luVxn8FiOdCYerU6CAxmWEhqtgEbXZXUrxA8kXqB2i5EurHsYxrPNxDwIhybYDyLzm51oc+7VkOOhB6xiGC6G0XfgQRsQ+XGb6wGdbUgVRsgOmghZ7h2PA3Zc5/6SHkbvUCji0Tn3whW7J2k/C+xIv8KTCDdKJlcKhgbzxGIWjWaXK9cXmTzWhx/qXJ/v0vUCzp3xKabCSHIW6sAySq1uwF+/v4hQMc7NFDl+LMNwf5LK9tOf4XBUHJrgUChWyz7xpEe9HhJ6HigfiHKRdP1hm6tSkUXIb3t4TZBBikR+gETBQQiJlGYvIH4veTuB4yqmg652y7kpqbAMjUzKIO3oaL2iZvoDIT8HQfVyhYSIVojQlYi23I1XLuRSZNMJPvniLvOLm+TTKdAdFtc8Wp2AxnZAsE+w//33b7uCcs1nYcPFcSS/9c4xzs0UqWy7rG+1CXpBDEqp5+om3MHRU1dkFDgX+UkN0DrAMpr28JKjFDRWfdoVSTKfJzcygpNOo2k6hjGMpjkIsXFgvY5oJmsYuo6wo3oamaTBS8fjJJI2hq8I2gI7ZRyqs3YTv33ZI/vgYmY75yYJIQ6VoQhREN3dFY/rcz5vvzbGa+cGmRzNsLrZ5j//3RyXr21Sa/qHMk8+KzxBVGV0MpdwRc86FM3knejDnXDYZsOlWXeRzQSGzOJkMqRK9+zImhaFtCrlIqXWS0rbfyZj6OhGlN2QL8Z46VwRESpa2x1qCYNSPI3ey83VjcgkKcMoR1c3I5fNTlxU2H00YUpFhbvXtwJG8yGWLh9K9t4P7Y7Ldr2LQqNUzPDSyT5eOxdVrV1ca/L5V1t8ebuKYRxuMD4rHDm7cAdKKMJOiJIGYKD11AfDiK7F+S1ufLnOubOvM3PiBHbiYf+upiUwjDE0rYwQq488RUQzNOyUQclK83J+nPWVbe7e3qQdumQH4pjKwGtGs9lOGgQdSegK7LSJYUWlDMOuOLBm9Q6kUtxddfnoeotjpZCR4iN/vovV9Rp35jc4PZHlWy8P73FT7vYZT+Y4eBqX7tHWCk0jDCWVapPNch234yM9uRtNGXZlVDizI6lXuqytbOMLFyfLQ47z6HYWup7qncxSRNOSHLSZalqUsRdPWfQNpElmYjSaHba3O3jtqN6G1pupQVdEERRalP0fdHvnGvlq3wo592NnBm9UAzquxLY0BgsWw30Wjn1wdy1vtPn4WhnD0Dk3U9wTOerYOsN9FoNFa986HM8TRyJY03S6Xsjs/Do376zSanvIUBK2Q4JmQNAM8BsBbi3o6ZQKISuE4QJKNQ9+CT2FaR7DMKLzC44C4UVmRSXByUVywIPVAbx6eKgA+v2wcwbw+eOJR54BvLju84srLVa3Ho6QzCQNzh9PcHri8QGKzxpH3oNdT/DVXJNUMsbY6CDFPHvyh7YbHSq1JroBJ88MkUmaeK06Kh7HtHdOr7bRtBSatjOtTTTNRNdzGEZUKUCpR+cSp9MOUzP9BF3J4tIW9paJndTJppPkUsl9MxOfBDHbZGIgj4/Pdq2FrkGxkMK29nZd15NUG+Fu0AKAH4RUqi3ml6usbbk02hLxCMvX88AT5AdLrs91iTkd3r70sMqwuVXnyvVFzrw0wlsXJ5BdcLc9YB30qACapkVnGN4jOIKuZ9G0FEIsEYaPJrhQTPHKpQnu3Nzg848X6HYDNB1eeW2CwdeyUZx2O3w6bzkQMy1GCn3UOy0WFzeoNVokE8ceIng/uK7P7Pw6n1zb4IOrTZY3fPynGGxPgiMTLFVUDndpvcuPf75EreHx8qm+3eiJ1bLHh1dqZPtLvKIMlA3KBBEEeM2wFzLT6qlH9f2fIduPfQ/D1ImbNv2DGaZPDeD3yvEGoeCLzxYJugIt1OgvZclmDhfAd/VWhS9ubGFrBr99aZxj/Sla3YAvF6ps1rcxrTZ2XD90cljHlXw11+KLW03KVX/P7P668EQOf03XWdvq8m9/PMvGVoexwfQuwTtn8c5Mu7jbUUlBOxWVFAzaEs3Q0M3oDOCD3WSHH+X9AxmKfendNh9/OMf7/+0WoIg7MS6enzg0wb/8YoP/6z/e4I9/4yT/9L0JTF1neavFTz5ZZGmryrfOJRk/wuEYHVdwfa7LldlOz2v09QpY8BQRHUpBEEpmlxr8+X+9TT4TmSqv3qrg+RLdjmoyKxmpKLoZ6ac7R6TvRDbu+FOf1DSr6dqe0NDRY/dqahiaTspMUF3vUmnWaXuRQSWTTjA8mMd5oHpOKCSdbsDHtzZpdSNhabvtM7/ZpNEWXLvbIZtzOX1KchgfVhQUoBC9Iwq+CTxVVKWu6yyutZhfaTxsETIBB8KmRHpqT1nfnfMdNE0jDKI8J/2+Aa7BEw/20WOFXZJDT7J122V1rs7dtTLlRuSfHhnMk8skdg+HlEpFA02BYehcubvFlbv3FdnWNKSCr+Y9SsUu3a/Bzfes8EwSwHVdf4jgX1xex/MF331jhNfO90fWr0BhxDQ0NIKuRLUFUkY6bnif9qDHDHT7XnyVrkfXkd/L1EgP2ozEMyTHx+j4kWXJ74bMLW8ieqrTctnn7oqHpQz+h985s+ceXhBQbm6zstXi7sqzrYDzdeAZnD6q7fl3B59f3eL6jQrplM3MTA7T1zA1HSdroukafn1vPYs9L5XUMHbuC5gmcMglXNPuOR40XSNZMkmWTAbuC5pbnK/w0dIstUobJeHzW03e/6LOP3vnBP/4u8f33K/tudzdWOHz2eg0sn9oeG4lHDRNQ0j4258tU9ly+d6lUS6cLEYFuDUeqZsKT+ypSCP2qedxEPSYjuHcGw2G8fDsLxSTvHJpgnbdJ+gIYvFNQDE2+LDLc0dNqtY14vbzSdJ+nniuBEupuPZVlaWlJtmYRbJXT9qJmfuex7cDFSpEeE/EPkpMmiGJSglCNJN7Gfb3I+7EGJ/oI+hVh1cSdOVTTFg0ux06nsTtFfs0DEjEDJIxB0M/eBmJx3QKGXOPOdO2DAb7kowPp+h6Ia4n6bqCZ1yl4ZF4rtVmd5btrif56/eX+eJGJLhMjWWf6jy+R0H6kkBES6nGo2e/DCP3Z39flphtsr7e4MbKItfnu9xdiZzz6YTBmck4rh/Q9T1g/zClY4M2b72UYrh0TzIv5Bx++N4EZ49nuDO3ya2FOl/NezQ7X0/aCnxN5YT9QHBrfpubc9GsqNZdzs9kMXVBoy0IHjDfHSW7cAedrker7dFohwd2oG3pZJIG6aRNKhnD7Olm6aRDOumwVW2yUa/x1VKLz29G0SbZlIEbJrAtjbZ7cKB6Pm0yMRQjk7o3y1MJkwtnSoyPxRka0EimDDpeleUNj2ZHIp5hNZ2D8NTZhYdDVLVuRxdstX1uza4xt7DBldkujQeC8J4ku3Bzq8HNO6tcvdPmy7v775WlnMn56QRnp4ucnB4mtY/zQCMS8HbKK7k+3Fz00DVoHKIg2p577bg4s5GLM56JgxJ89uU21+66PGK87ME3ml14WNwvZTc7Iddna/iB4vp8l+YDYTCnpzIsnsrsyS48COlEtPd9dWeLy1fLfHm3w82F/QkuZk3cbpwglFi2zehgjmwmsUtmMuZQyuSI2yGaFqlEQkKtdyjW/Y4CzdCiq6fCFfpTHOuWkEqxul4jm0ngxC0aW200SyObSZBOxhFS27cE5PPCN1LxvdEWXJ11AQ3P56EIw7XNbS5/dndPduFBmBqO8crJJLeWOnxwpUWzI9EPEIaaHfhyzsMLa+gIgsDn7MmxXYKL6SwzQxaXD1EUVDM1zKSJaUWlkiZO9FEYzHD7q1WuXF/g7MlRcirJV3dWCUPBmZOjrK/6fHK91QubPXR3PRW+EYJDoWh2Dh7FK5suv7wquLUYhZg+Cq5rEwYeG9WQSl08cl8Lhfr/2zu7n6ahMIz/unVsbENM0ADGj8SEeIE3Jl547f/pjdfe+Ad4Y1RighFUwPA5xthHYWvX0q3bzunxooAQEHCVssz+LpsmJ+3Tj7c9z3kfbFdSrHqM6D75/Bgzj30qezYrmyZtW+I2JYZ19qIaTSe4M57iwXSG0TEdPROsGU7qgcC5ZJqRTIqGMYbT8FjebGI5dQpFAyF9tnYllf0OpZp3nFkYBQOZ2bBT61Kr9+j21Ln+4ZMa7lk+TbeNkOrKRYtpCxbXJNNTHV4KxcLKPq/eLAcpYkqj1TnrEA3WF2WZnclya2IEPZtAP+y5Cb8Ngo/uT5AQKV6/XeXdXImeEKAglWogZBAfG6XpLpkN0QgtzJvksj7KPaH+WFyc3OyrYF95xfpH0w4zEyQkNA233QsMcRsmLU/idSXinEn5ZBKSCXA7irLh0ZOKybujWI0D1ldroBS5fIbqbpPtwj6likXTaXHQ9nFcH6/rH8bQ/X1VG+Y8D6TAUY1btzy+ruxRKDsopV3oduwKhWEK1rZd5hcNdF3j+bNJKqUGc+/XyObSTN27zdKPHZa+75BJScbzelAouoF3u183ZZjjHchHdFRIXx0b0C8790dR6koFUQPVss2Xz1sUik0+LjRZN7b5sGBTLNSplm00TaPdAevgZmeeQvfo6Jdovr+vb9wnD9O8eJpjo+Tx6Ztz+rGuaSS007/Qbup4/+s7OAyGJZj/2cJ0BArt7IR+hOb2i4gF7hPTlpj20U+Y621mFoaBTD6L+XfEAg85scBDTizwkNP36sKwxONGQ3wHDzmxwENOLPCQ8wvXiEvKePXmgQAAAABJRU5ErkJggg==" width="160"/> | -> |<img src="data:image/png;base64,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" width="160"/> | -> | GPT2-Small |
|
|
|
|
| ## 🚀 Usage |
|
|
| Install dependencies: |
|
|
| ```bash |
| pip install transformers huggingface_hub pillow torch |
| ``` |
|
|
| Generate a sprite: |
|
|
| ```python |
| from huggingface_hub import snapshot_download |
| from transformers import AutoModelForCausalLM, PreTrainedTokenizerFast |
| import cv2 |
| |
| # Load model |
| ckpt = snapshot_download("iamthinbaker/GPokeT2") |
| tokenizer = PreTrainedTokenizerFast.from_pretrained(ckpt) |
| model = AutoModelForCausalLM.from_pretrained(ckpt, trust_remote_code=True) |
| |
| |
| # Generate Pokemon!!! |
| image = model.generate_sprite( |
| tokenizer, |
| type1="fire", |
| type2="dragon", |
| verbose=True, |
| ) |
| cv2.imwrite("pokemon.png", cv2.cvtColor(image, cv2.COLOR_RGB2BGR)) |
| ``` |
|
|
| Available types: |
|
|
| | | | | |
| |---|---|---| |
| | ⬜ `normal` | 🥊 `fighting` | 🔮 `psychic` | |
| | 🔥 `fire` | ☠️ `poison` | 🐛 `bug` | |
| | 💧 `water` | 🌍 `ground` | 🪨 `rock` | |
| | ⚡ `electric` | 🌪️ `flying` | 👻 `ghost` | |
| | 🌿 `grass` | 🐉 `dragon` | 🌑 `dark` | |
| | 🧊 `ice` | ⚙️ `steel` | 🧚 `fairy` | |
|
|
|
|
| ## 🥖 ThinBaker's Team |
|
|
| This is the team that I hace created (TBH after many trials, the model can create very strage pokemons sometimes) |
|
|
| | Name | Sprite | Type 1 | Type 2 | |
| |:----:|:------:|:------:|:------:| |
| | **Scaborite** | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAABhQTFRF////oKBg4ODgoKCg4OCgYGBgICAgYGAgLHFUQwAABAZJREFUeJyllM9zGmUYx593d8klBF4W9NLgLovHQjeJnkwlKcmt2gZIL87Ydqz+T8UZh5OHxDE703gJWtDx1AZYaHtyBqHxlBT2hXgKP9b3fXf5maaO484EwvN+9vn9fRH8y4P+CxCw3g2gSJu8E5Cxz+QmP7kCkL0miyP7LXIZQP7OJioRGufGi7CSuwzIfhIMFwAkNd4t3XkLkGnX9FaFgqu49eoUAmDNAbuW6Ts/Awit2FA79YRhVNE4yQxpRLwHKIlsBPmUqXmNOWDnHFrnseJHrMZASYjk58vM/BJsyypa6lKbTf/mAU+ijAnWoKE6v0cRJkm+aQpD0MbVzQMoGqvaaHI+jjAC3r9tYEWcao/3YBZIvfy0brsAmzomxzN9QOnusK6ZOv9faTBgtg/yLQJ1bcBdYPqq8By296YAFBEVeqrVwWkCBST/em4CyFhUyqvCU6y7QNhImrNAtH+iat/dHNXBgO7pGEARDfXZ2cAF5DwkiXA0AYK6s9GtILdFfgBPHKYAOklzg+ZudzDwDEFCcXRtKoeFL8xzFcCKtp0EpPVgw3XgAB5FGzLX3z5qMOBw/fcEmQFSNW1oW4FwzpPgcyhuWTANoDQBLAN6DBwAhAs6LOcmwKpG9cBzQkluW36iw9LBGBAjN0/cF6QN9rmETwChSQjPZsWOOWIKsXmiak/UkV0bd/Lja0amwzfIjXAMYixYFm5lHUBU4sZuIDt2AMJiUX91vQFa9cwFlIIbLulM6rAPd5/46AazpUGwikV3Q10HwwF+bx9WXqt8dRFkyh8eTTvAZPCyD9v5NXqR0Noo0JamAaqOQejnrV97sGW7AHFVEopTr2yjBqHikqIenmW6RzxEx3a6JGOuLExK0uaxFu7+lvDmOIAsR0cyFoC6qF43pQ0LSru9n055mY/eSF2eRMpUBXZZtUy2DyWQNvc4cM/yc0BMvAaewyAEXsEc/rVzwecHnvvNllIgtGGCygw2RdTDnf10oW0TBqCI4CNK6Kktq24fcEs1YLfc1gYVwgEUqQsfNEAYAciLja06BKgYC2yast7UG8jX0EqwBlwcwvPtPMURpuWxfYhFK8MIgkETLErYVR20/W28DxpaNvg+rGRTpqAOqrRRJUr46aQDVh8bXOF03NofkO7QN/9kjaRERWUNLd42pE/4uMXPDPDcwPRq5VmaOlt7aqcqy450AZBuYtLmABNw7Q5Bi5YxEQ5N9PMmcGFCSdS1i+8f9AzpbBoAz5dlkRFWPfXiGf1eWJwDwHM38KMOlqgDHwE8/LtnzAD0ng8s1sSYGePnsPCA7M0AOLpmIdxqiM9Glm+y0wCy7x08vMh9NXIwfsZAlN9q6OssXAFcOpkDrnz+P/APZ8F5UAweUHkAAAAASUVORK5CYII=" width="64"/> | `bug` | `rock` | |
| | **Tidewing** | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAABhQTFRF////IGBgYODgoODgYOCgICAgIGCgYKDgJGOJ/gAAAbNJREFUeJzt1D1OAkEYBuB3IGulMkuwFrU0QRI8AERjI8VSzAE8j4fwABTSWAkJPRJprIhAq1HYBKyWZfxm+HWZwVJjJCQMO0/e+eZvGb75sH/wg4BxSH8TcJN80vXtwHVdYPJoBewABPDsmwHjVAF9lxERkOTpHlSE7PgmQPnTOiAHXRuQpzUO1wJSu8AwjyaYRN+3gFxZNKk5kFYASqCB7m0gnlVgmDeDDE0yF7YoAEbACj31Q8OfW8BZR/V/eMFofGtch7NJD/tPHoJRUDEDIKR+oDyACSCVDfe4agQ3ZiD0VtqBU6wLbAKiihkw1+DwMRxPB8CYoMA0onJpBCKUdR1RFng1rIPDd07qylG/DRzxqp4s2IsBlLYah3Qcq6qKxPV6DQKxRiwNfagx34oVQGtw0YAW7AGpdhQ423AKDWrE0h06D24mWkOpDiFruun2fcb7kYujArw5UMssI/eipFforaUeJRiJeNsKwOEbAc1zNgbdK0SLVGBRBJYByyKLKmIQtmb/M2sLpc+BK99bXwOiJwpci/hxxQzgXKmM3GIn1l9iIrjzUF558Etf5n8RfAL3VqZBa9680gAAAABJRU5ErkJggg==" width="64"/> | `bug` | `water` | |
| | **Noctibell** | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAACFQTFRF////ICAgIGBg4KDgoGCgYGBgAAAAoCDgYCBg4ODgoKDg8tg79QAAAbhJREFUeJzt1L1OAkEQB/CZEJRoIrtHIp25C72FD0FtLChovEdACyhtMRaUJmBirKyptfABNDyA4cPEmh0aEyl2nYMAd8cuFpS6IRcu+8vu7Nz/DuGXgX8SYJ42ApRGbQSeMMNNAAOAMW0DeAfcFgCkq4yDqIStAa01IgkMLlZY9jxVJAllohmU2gak5BpEb/ZvbAOF4w+e6xMvkF+UkgT+UMxBYKwAT/Qkc6B7IIUiO8i8liLgrWKRzEOh9HY66hMKQw7g86VPEla5Sm3BF92Lz6fA5QvAAOLzKdB4Al1uG3IBKF7cHJWn904gd8I7/7PaAgeQQPVn0ENyAIl6EoGRsgMpOLBRI3TPCjAgfoJ4NoKB/RReHvkJYuN9MEmkbgVAcEaKIbZF4u1aAN4BNPE52xLswEelJGar3d3adXyP1QpGTQJT2X+swXfLDobof4WdW16+Ya1hTOhXwAnA0+TlK9NuUwHWbUAq8LLh3kPuinLntj5Ei2TDjoAmNKyNWoLUVyjx8h5Wu5D+ACQCU4yAUa488I3gnwJHHmZ3geJcKWeq+bCGpCRt60MMSdvTTIgNW6yPfzAfPxn2vEGtX6Z5AAAAAElFTkSuQmCC" width="64"/> | `dark` | `fairy` | |
| | **Umbramole** | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAABhQTFRF////YCAgoGAgICAgAAAAoKBg4ODgICBgr9DHAAAAAgJJREFUeJzt1UFv0zAUB/C/kx4hscuuVeMJjoWmkbhNrNO+wb7Kvs4k7vARkCrulKVwRG1S7tRJextKzHO2kaxxypVJaw9JlF/ee7afE4Z//NgT6ABCZwcBk5vDoM8PAyG06gYRVgI66SzS9blIuBd3gjCna30gRbjmQMbzIrMDl5cC0IyViR2EKQ2CQgRZc6BNwGN3vIKC6ALx0buPNA8ZE0sbcL2XAT6BcYW+HfAzEDCLdTy3gbAXoJjBhBjGVsB2o1jRSX9jBa4nqXYD5HpgB46PqlckShsQjvubaTohZ5sHxp2L4mtqANfNFb8Hff1qjA+4jdAMUQO5uLx53w2EgFC3NWZW4A5NheoONIq4B+Ea1C0UwmSwgtQ8yRNnWEWvG5P9nSbNwd5cZwIdIKCGZJO5qroO+a8WMN3GJsWMDoTYch/wckpRdyefzYLYgBdIAi8GBBSVa0txNIoJzKTalkJv9wENs3c6hw4TpEEqGj31EKhp8jNYYTqzAZzPqTy2AXrP6xLqtfBo31JX+Clw/mVrAa/pDrU8T9E7aWSoWy5amZ1ZZXi2HdiA0jlNtmcCyXzZAu6wOmx2HnCs2otlRiGqPojSIPZ5a6rx9kdVY4JJBs9RZ1f7IEJ5PV77fCGhnRSjVgoihUv/RYDTb43N/eAdNfpOD0ZA8/5/+kF5jOAPo47aQRtVpo8AAAAASUVORK5CYII=" width="64"/> | `dark` | `ground` | |
| | **Zephyrael** | <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABABAMAAABYR2ztAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAABVQTFRF////ICAgYGCgYGBgAAAA4GCgoGBgHuBl+wAAAeFJREFUeJzN1LFu2zAQANA7orN1pIpOhU0JXYO2njsE6B8U6A8U/boCHfoD6ZItQZwPqCUma+GIgkcXVE+OYzsSjxkKBNUgCeDT3fFICuGJC/9roJs0wOLO/xswlAZYdHWyBkNpgAWkgSG4LyEOdKfSwGT4kEEABE+DXQYRdE0K8CSbBpJgH0Dog8lqSIPgZYDUPCx1HBgGhwxjwDPg20qOYKjsal01EngxVa/P30IdpGliUerN2odaBvnsDwNfp4E9k1qNBc43awO/FjJQJz+++GUlraYh8vgRVlfShtFQeFif0uVCADiHBl7Oqll1HQe5ha4NXuebOMCy37ANuTfT71FgSDO4sZU6jQDd+ZKrhKAg3H66uB4CbSZOI/Gg5Sh+dPy5R1nXMqg1RQG3qA26ZdDXAXej0z33/OENR3cZh4GwGADOwHdvIbTkdRxknFptAYdYDo9/nvXvE8UZ+ghhtBaGOAKCswzafYADwPeekMt0Uzyq4BhwjVw7dynrm7kcbVosMtU/A/YVRs4Fzp3dAR3cfvwIvLvdgXayPxSPZqHVFjh6NH7c6nwLqvKQfwB4N3IGB3aRAhUouxRSQF6uOg/K/JYAfl395MfnbxKAVx/OfP+PEmqA4dgYxK5nAH8BAtXNQb7mlwwAAAAASUVORK5CYII=" width="64"/> | `flying` | `psychic` | |
| | **Me** | <img src="data:image/png;base64,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" width="64"/> | `water` | `psychic` | |
|
|
|
|
| ## 🧬 Model Details |
|
|
| ### Dataset |
|
|
| The dataset covers all sprites from every mainline **Gen 3** and **Gen 4** game: |
|
|
| | Generation | Game | Sprites | |
| |:----------:|------|--------:| |
| | Gen 3 | Pokémon Emerald | 1 600 | |
| | Gen 3 | Pokémon FireRed / LeafGreen | 312 | |
| | Gen 3 | Pokémon Ruby / Sapphire | 837 | |
| | Gen 4 | Pokémon Diamond / Pearl | 2 528 | |
| | Gen 4 | Pokémon Platinum | 2 556 | |
| | Gen 4 | Pokémon HeartGold / SoulSilver | 2 560 | |
| | **Total** | | **10 393** | |
|
|
| Each sprite is then augmented to produce **12 variants** before training: |
|
|
| | Technique | Variants | Description | |
| |-----------|:--------:|-------------| |
| | Horizontal flip | ×2 | Each sprite is mirrored left↔right at the ASCII level (pixel order reversed per row) | |
| | Color shift | ×6 | All 5 non-identity permutations of the RGB channels are applied — swap R↔G, R↔B, G↔B, cycle R→G→B, cycle R→B→G — plus the original palette | |
|
|
| These two augmentations are independent and combined, so 1 original sprite → 2 flip variants × 6 color variants = **12 total samples** — giving a final training set of **~124 700 sequences**. |
|
|
| ### Pixel → ASCII encoding |
|
|
| Each 64×64 sprite is serialized as a sequence of ASCII characters before being fed to the model. |
| Each pixel is quantized to **4 levels per channel** (R, G, B ∈ {0, 1, 2, 3}) and packed into a |
| single character: |
|
|
| ``` |
| char = chr(R×16 + G×4 + B + 59) # 64 possible color chars |
| char = '~' # white / transparent pixel |
| ``` |
|
|
| This yields a vocabulary of **65 pixel tokens** (one per color + `~` for background), plus special |
| row-marker tokens (`[ROW_00]`…`[ROW_63]`) that delimit each row of 64 pixels. A full sprite is |
| therefore a sequence of 64 rows × 64 pixels = **4 096 tokens**. |
|
|
| The encoder/decoder lives in the `slv` layer of the pipeline (`PokemonEncoder`). |
|
|
| | Original sprite | ASCII representation | |
| |:---------------:|:--------------------:| |
| | <img src="data:image/png;base64,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" width="160"/> | <img src="data:image/png;base64,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" width="160"/> | |
|
|
| ### GPT2 Architecture |
|
|
| - **Context length**: 4096 |
| - **Embedding dim**: 512 |
| - **Layers**: 12 |
| - **Attention heads**: 8 |
|
|
|
|
| ### Conditioning embeddings |
|
|
| Every token in the sequence receives a sum of learned embeddings that condition the generation: |
|
|
| | Embedding | Categories | Description | |
| |-----------|:----------:|-------------| |
| | Pokémon identity | up to *N* | Unique embedding per Pokémon; can be interpolated to generate novel creatures | |
| | Type 1 | 19 | Primary type (18 types + unknown) | |
| | Type 2 | 20 | Secondary type (18 types + none + unknown) | |
| | Generation | 10 | Game generation (Gen I–IX + margin) | |
| | Evolution stage | 4 | Basic / Stage 1 / Stage 2 / other | |
| | Has evolution | 2 | Whether the Pokémon can still evolve | |
| | Is shiny | 2 | Normal vs. shiny palette | |
| | Color shift | 6 | Which RGB permutation was applied (augmentation label) | |
| | Row position | 65 | Which row (0–63) the current token belongs to (spatial 2-D encoding) | |
| | Column position | 65 | Which column (0–63) within the row (spatial 2-D encoding) | |
|
|
| During training a small Gaussian noise (σ = 0.1) is added to the conditioning vector to improve robustness. Background tokens (`~`) are also down-weighted (×0.6) in the loss so the model focuses on learning colored pixels. |
|
|
|
|
| ## ⚙️ Training |
|
|
| | | | |
| |---|---| |
| | **Platform** | [RunPod](https://www.runpod.io/) | |
| | **GPU** | NVIDIA RTX A4000 (16 GB VRAM) | |
| | **CUDA** | 12.4 | |
| | **Steps** | 5 505 | |
| | **Training time** | ~53 hours | |
| | **Cost** | ~$0.26 / hour · **~$10 total** | |
| | **Precision** | BF16 | |
| | **Optimizer** | AdamW with cosine LR scheduler | |
| | **Gradient checkpointing** | ✅ | |
|
|
| ## 🙏 Acknowledgements |
|
|
| Inspired by [matthewRayfield/pokemon-gpt-2](https://github.com/matthewRayfield/pokemon-gpt-2), |
| which first explored the idea of generating Pokémon sprites with GPT-2. |
| This project builds on that concept with a custom-trained model, richer metadata conditioning |
| (type, generation, evolution stage…) and a tokenizer designed specifically for sprite sequences. |
|
|
| Training data sourced from: |
|
|
| - [PokéAPI](https://pokeapi.co/) — comprehensive Pokémon REST API providing metadata (types, |
| generations, evolution chains…) used to build the conditioning labels. |
| - [Veekun](https://veekun.com/) — sprite repository from which the original 64×64 PNG sprites |
| were extracted and encoded. |
|
|
| --- |
|
|
| ## 📬 Contact |
|
|
| Made by **ThinBaker** — feel free to reach out! |
|
|
| | | | |
| |---|---| |
| | ✉️ Website | [thinbaker.com](https://thinbaker.com/) | |
| | 🖥️ GitHub | [github.com/iamthinbaker](https://github.com/iamthinbaker/) | |
| | 🐦 Twitter | [twitter.com/iamthinbaker](https://twitter.com/iamthinbaker/) | |
| | 📊 LinkedIn | [linkedin.com/in/delgadopanadero](https://linkedin.com/in/delgadopanadero/) | |
| | ▶️ YouTube | [youtube.com/@iamthinbaker](https://www.youtube.com/@iamthinbaker) | |
|
|