diff --git a/README.md b/README.md index 3555d5e..6d2d7d2 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ skyes = [red_sky, sunny_sky, cloudy_sky, night_sky] ![](https://raw.githubusercontent.com/shonenkov-AI/rudalle-aspect-ratio/main/pics/h_example.jpg) -### [Kandinsky]() +### [Kandinsky](https://github.com/ai-forever/ru-dalle/blob/master/jupyters/Kandinsky-12b.ipynb) `роботы акварелью в стиле ван гога` ![](./pics/kandinsky/example-robots.png) diff --git a/jupyters/Kandinsky-12b.ipynb b/jupyters/Kandinsky-12b.ipynb new file mode 100644 index 0000000..fcd3b0f --- /dev/null +++ b/jupyters/Kandinsky-12b.ipynb @@ -0,0 +1,975 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "f72cb26b", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "visitor badge\n", + "\n", + "**Author:** [Alex Shonenkov](https://www.kaggle.com/shonenkov)\n", + "\n", + "**Telegram Channel:** https://t.me/shonenkovAI\n", + "\n", + "**Discord Server:** https://discord.gg/xV7dNbT9NU " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "acca7b02", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "!pip install ruclip==0.0.1 > /dev/null\n", + "!pip install rudalle==1.1.0 > /dev/null" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "b5394914", + "metadata": { + "scrolled": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Python 3.7.12\n", + "torch: 1.9.1+cu111\n", + "rudalle==1.1.0\n", + "ruclip==0.0.1\n", + "taming-transformers==0.0.1\n", + "transformers==4.10.3\n", + "torchmetrics==0.5.0\n", + "Thu Jun 23 01:21:36 2022 \n", + "+-----------------------------------------------------------------------------+\n", + "| NVIDIA-SMI 450.80.02 Driver Version: 450.80.02 CUDA Version: 11.1 |\n", + "|-------------------------------+----------------------+----------------------+\n", + "| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n", + "| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n", + "| | | MIG M. |\n", + "|===============================+======================+======================|\n", + "| 0 A100 Graphics D... On | 00000000:87:00.0 Off | 0 |\n", + "| N/A 30C P0 63W / 400W | 0MiB / 81252MiB | 0% Default |\n", + "| | | Disabled |\n", + "+-------------------------------+----------------------+----------------------+\n", + " \n", + "+-----------------------------------------------------------------------------+\n", + "| Processes: |\n", + "| GPU GI CI PID Type Process name GPU Memory |\n", + "| ID ID Usage |\n", + "|=============================================================================|\n", + "| No running processes found |\n", + "+-----------------------------------------------------------------------------+\n" + ] + } + ], + "source": [ + "import torch\n", + "!python --version\n", + "print('torch:', torch.__version__)\n", + "!pip freeze | grep rudalle\n", + "!pip freeze | grep ruclip\n", + "!pip freeze | grep transformers\n", + "!pip freeze | grep torchmetrics\n", + "!nvidia-smi" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "36c7ccf8", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "import ruclip\n", + "import requests\n", + "from rudalle.pipelines import generate_images, show, cherry_pick_by_ruclip\n", + "from rudalle import get_rudalle_model, get_tokenizer, get_vae\n", + "from rudalle.utils import seed_everything\n", + "from rudalle.image_prompts import ImagePrompts\n", + "from PIL import Image, ImageDraw" + ] + }, + { + "cell_type": "markdown", + "id": "ab7248d8", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Prepare models" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "06d0ac4d", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [], + "source": [ + "KANDINSKY_TOKEN = ''" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8b7ded49", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "119a6147622a40aeaa8d2ebe7323b199", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0.00/224k [00:00 ready\n", + "Working with z of shape (1, 256, 32, 32) = 262144 dimensions.\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7750b01ce24c40bbb606f872eab4a4ea", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0.00/346M [00:00 ready\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "0df944025b8948d894549176e594622e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Downloading: 0%| | 0.00/748k [00:00" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.imshow(dalle.get_param('transformer').conv_mask.detach().cpu());" + ] + }, + { + "cell_type": "markdown", + "id": "fe1050c0", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Image Generation with Kandinsky" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "e8bcdf6e", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c0cefb3187d2433db44feb1ddaff02ae", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'очень красивый голубь акварель'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, images_num=4, bs=4, top_p=top_p)\n", + "show(pil_images, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "219f79ea", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "1d9f679aa1774a9d95d1700b5426b703", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'Киберпанк Неон Мандала искусство'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, images_num=4, bs=4, top_p=top_p)\n", + "show(pil_images, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "71244919", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "3e699ce93bda4c6ead05d4e3c7dc0f60", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'кактус на луне'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, images_num=4, bs=4, top_p=top_p)\n", + "show(pil_images, 4)" + ] + }, + { + "cell_type": "markdown", + "id": "ac60e434", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Image Prompt with Kandinsky" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "80203ef4", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "url = 'https://manekens.ru/storage/app/uploads/public/34/5d25eabf21090114407732.jpg'\n", + "pil_img = Image.open(requests.get(url, stream=True).raw).resize((256, 256))\n", + "\n", + "borders = {'up': 5, 'left': 8, 'right': 8, 'down': 0}\n", + "image_prompts = ImagePrompts(pil_img, borders, vae, device, crop_first=False)\n", + "\n", + "demo_img = pil_img.copy()\n", + "draw = ImageDraw.Draw(demo_img)\n", + "draw.rectangle((borders['left']*8, borders['up']*8, 256-borders['right']*8, 256 - borders['down']*8), fill=255)\n", + "show([demo_img, pil_img])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3119fd60", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "aef16eaababb457fb82b7b44e8ddf9f8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'голубая футболка и желтые штаны на манекене'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "images_num = 16\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, top_p=top_p, images_num=images_num, bs=4, image_prompts=image_prompts)\n", + "top_images, clip_scores = cherry_pick_by_ruclip(pil_images, text, clip_predictor, count=4)\n", + "show(top_images, 4)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "1f5d2e75", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "29cd3109519c443ab3810a95950fb33a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'цветной эскиз летнего платья на манекене'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "images_num = 16\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, top_p=top_p, images_num=images_num, bs=4, image_prompts=image_prompts)\n", + "top_images, clip_scores = cherry_pick_by_ruclip(pil_images, text, clip_predictor, count=4)\n", + "show(top_images, 4)" + ] + }, + { + "cell_type": "markdown", + "id": "50d983e9", + "metadata": { + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Image Generation with Auto-Cherry-Pick by ruCLIP (better quality)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "id": "ccb7b994", + "metadata": { + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ae8ea06cbb0341bc93db030c72304dd7", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/1024 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "text = 'роботы акварелью в стиле ван гога'\n", + "seed_everything(42)\n", + "top_k, top_p = 768, 0.99\n", + "images_num = 64\n", + "pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=top_k, top_p=top_p, images_num=images_num, bs=4)\n", + "top_images, clip_scores = cherry_pick_by_ruclip(pil_images, text, clip_predictor, count=16)\n", + "show(top_images, 4)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}