{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "7efc5ac3-1568-4d92-8361-e3ef6a00e9fd", "metadata": {}, "outputs": [ { "ename": "ImportError", "evalue": "cannot import name 'SwinIRForImageSuperResolution' from 'transformers' (/usr/local/lib/python3.12/dist-packages/transformers/__init__.py)", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mImportError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtransformers\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SwinIRForImageSuperResolution\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtorch\u001b[39;00m\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mPIL\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Image\n", "\u001b[31mImportError\u001b[39m: cannot import name 'SwinIRForImageSuperResolution' from 'transformers' (/usr/local/lib/python3.12/dist-packages/transformers/__init__.py)" ] } ], "source": [ "from transformers import SwinIRForImageSuperResolution\n", "import torch\n", "from PIL import Image\n", "\n", "model = SwinIRForImageSuperResolution.from_pretrained(\"caidas/swinir-large-2x\")\n", "image = Image.open(\"/workspace/simplevae2x/123456789.jpg\")\n", "inputs = model.pixel_values(image, return_tensors=\"pt\")\n", "outputs = model(inputs)\n", "output_image = outputs.pixel_values[0].permute(1, 2, 0).numpy()\n", "output_image = (output_image * 255).astype(\"uint8\")\n", "Image.fromarray(output_image).save(\"output.jpg\")\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "dd10133d-ecfb-4bd5-8647-539aab4b1124", "metadata": {}, "outputs": [ { "ename": "ImportError", "evalue": "cannot import name 'RealESRGANForImageSuperResolution' from 'transformers' (/usr/local/lib/python3.12/dist-packages/transformers/__init__.py)", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mImportError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtransformers\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RealESRGANForImageSuperResolution, RealESRGANImageProcessor\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mPIL\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Image\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mrequests\u001b[39;00m\n", "\u001b[31mImportError\u001b[39m: cannot import name 'RealESRGANForImageSuperResolution' from 'transformers' (/usr/local/lib/python3.12/dist-packages/transformers/__init__.py)" ] } ], "source": [ "from transformers import RealESRGANForImageSuperResolution, RealESRGANImageProcessor\n", "from PIL import Image\n", "import requests\n", "\n", "# Загрузка модели и процессора\n", "model = RealESRGANForImageSuperResolution.from_pretrained(\"nateraw/real-esrgan\")\n", "processor = RealESRGANImageProcessor()\n", "\n", "# Загрузка и подготовка изображения\n", "url = \"http://images.cocodataset.org/val2017/000000039769.jpg\"\n", "image = Image.open(requests.get(url, stream=True).raw)\n", "\n", "# Предобработка изображения\n", "inputs = processor(images=image, return_tensors=\"pt\")\n", "\n", "# Инференс\n", "outputs = model(**inputs)\n", "\n", "# Постобработка и сохранение результата\n", "output = outputs.pixel_values[0].permute(1, 2, 0).numpy()\n", "output = processor.postprocess(output, output_type=\"pil\")\n", "output.save(\"output.jpg\")\n" ] }, { "cell_type": "code", "execution_count": 3, "id": "7cc6d952-a5cb-44a7-80a8-a2cf279d00d0", "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'realesrgan'", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[3]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mrealesrgan\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RealESRGAN\n\u001b[32m 2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mPIL\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Image\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtorch\u001b[39;00m\n", "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'realesrgan'" ] } ], "source": [ "from realesrgan import RealESRGAN\n", "from PIL import Image\n", "import torch\n", "\n", "# Загружаем модель\n", "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", "model = RealESRGAN(device, scale=2)\n", "model.load_weights('RealESRGAN_x2.pth') # если нет — скачай заранее\n", "\n", "# Открываем изображение\n", "image = Image.open('/workspace/simplevae2x/123456789.jpg').convert('RGB')\n", "\n", "# Апскейл\n", "sr_image = model.predict(image)\n", "\n", "# Сохраняем\n", "sr_image.save('output.png')\n" ] }, { "cell_type": "code", "execution_count": 4, "id": "87fb3261-550d-4df1-9cba-879be405cd4b", "metadata": {}, "outputs": [ { "ename": "ModuleNotFoundError", "evalue": "No module named 'realesrgan'", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 2\u001b[39m\n\u001b[32m 1\u001b[39m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mtorch\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m2\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mrealesrgan\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RealESRGANer\n\u001b[32m 3\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mbasicsr\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01marchs\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mrrdbnet_arch\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RRDBNet\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mPIL\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Image\n", "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'realesrgan'" ] } ], "source": [ "import torch\n", "from realesrgan import RealESRGANer\n", "from basicsr.archs.rrdbnet_arch import RRDBNet\n", "from PIL import Image\n", "\n", "# Настраиваем модель\n", "model = RRDBNet(num_in_ch=3, num_out_ch=3, num_feat=64, num_block=23, num_grow_ch=32, scale=2)\n", "upsampler = RealESRGANer(\n", " scale=2,\n", " model_path='RealESRGAN_x2plus.pth',\n", " model=model,\n", " half=torch.cuda.is_available()\n", ")\n", "\n", "# Загружаем изображение\n", "img = Image.open('input.jpg').convert('RGB')\n", "img = np.array(img)[..., ::-1] # PIL -> BGR\n", "\n", "# Апскейлим\n", "output, _ = upsampler.enhance(img, outscale=2)\n", "\n", "# Сохраняем\n", "cv2.imwrite('output.png', output)\n" ] }, { "cell_type": "code", "execution_count": null, "id": "fc380493-5e87-45af-9be1-7bf0ee80f512", "metadata": {}, "outputs": [], "source": [ "!" ] } ], "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.12.3" } }, "nbformat": 4, "nbformat_minor": 5 }