图像高清修复,无损放大 N 倍
💡图像放大修复是 AI 绘画领域中必不可少的一部分,所有的技术需结合实际落地,才有价值与意义。 能应用在哪些场景?
旧照片重现清晰 利用 AI 技术进行图像修复,可以让模糊的旧照片重现清晰,保留珍贵的回忆。以前手机拍摄的图片分辨率较低,如果放到如今智能手机上观看,图片将会非常模糊,这时可以用 AI 技术进行高清修复图像。
人像高清修复,手机也能拍摄高清大片 不仅仅是修复风景图片上,也适用于人像的修复。不需要专业相机设备,用手机也可以拍摄出高清大片,让每一张人像照片都焕发新生,不论是因为曝光不当、失焦或其他问题导致的不清晰,运用最新的图片清晰修复技术,立刻提升照片质量至高清境界。
这不单单只是修复图片,可以用作于图像分辨率的无限扩大且不失真。下面马斯克原始图像分辨率为 234x180 像素,高清修复扩图后达到 1880x1440 像素,这且只进行了一次扩大就对原图像分辨率提升了 8 倍,差不多达到 2k 分辨率的质量。多进行几次采样放大后,完全可以实现 8k 超清放大。
实现技术拆解
整个图像修复放大的流程分为三部分:输入原始图像、修复图像、放大并重绘图像。下面将详细拆解每一部分的生成原理。
一、图像输入
第一部分添加 Load Image 节点加载图像,只需上传需要处理的图片即可。不建议上传大分辨率的图片,图片分辨率越大,处理的时间就越长。
二、图像高清修复
第二部分进行高清修复,把原本模糊的图片修复,并进行 2 倍放大。
Checkpoint 大模型使用 Iceclear/StableSR,这是一种新颖的方法来利用封装在预先训练的文本到图像扩散模型中的先验知识来实现盲超分辨率(SR)。具体来说,就是通过时间感知编码器,在不改变预先训练的合成模型的情况下实现有希望的恢复结果,从而保留生成先验并最小化训练成本。
并且需要搭配 Stable SR Upscaler 模型才能在最大程度上修复图像,推理图片每个噪点,以还原图像。
提示词部分应包含我们想要达到的目的内容,在此场景中如正向: (masterpiece), (best quality), (realistic),(very clear),反向:3d, cartoon, anime, sketches, (worst quality), (low quality) (杰作), (最高品质), (逼真的),(非常清晰);3D,卡通,动漫,素描,(最差质量),(低质量)
全程采取两次高清修复,这一次修复原始图像分辨率并且放大,已经很完美还原,但是分辨率并不够,继续进行下一步。
三、图像高清放大
这一步主要针对第一次放大修复后的图像,进行二次修复。这里用 realisticVision 底膜最合适,这个模型在重绘扩图放大等领域效果非常好。
使用提示词反推 node 对图像进行 画面提示词提取,搭配 tile ControlNet 提升画面细节感,然后需用合适的高清放大模型,对图像进行二次放大。
资源
Node: GitHub - rgthree/rgthree-comfy: Making ComfyUI more comfortable! Rg three: GitHub - ssitu/ComfyUI_UltimateSDUpscale: ComfyUI nodes for the Ultimate Stable Diffusion Upscale sc ComfyUI_Ultimate SD Upscale: GitHub - ssitu/ComfyUI_UltimateSDUpscale: ComfyUI nodes for the Ultimate Stable Diffusion Upscale sc StableSR: GitHub - Arthurzhangsheng/Comfyui-StableSR WD 14 tagger: https://github.com/pythongosssss/ComfyUI-WD14-Tagger StableSR-models models: https://huggingface.co/Iceclear/StableSR/tree/main
放大模块底膜 model:
https://civitai.com/models/4201/realistic-vision-v60-b1
Workflow
无法下载可以复制下面的代码保存为。json 格式
{
"last_node_id": 125,
"last_link_id": 215,
"nodes": [
{
"id": 74,
"type": "FreeU_V2",
"pos": [
-184,
195
],
"size": {
"0": 315,
"1": 130
},
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 133,
"label": "model"
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
134
],
"shape": 3,
"slot_index": 0,
"label": "MODEL"
}
],
"properties": {
"Node name for S&R": "FreeU_V2"
},
"widgets_values": [
1.3,
1.4,
0.9,
0.2
]
},
{
"id": 68,
"type": "GetImageSize",
"pos": [
955,
-114
],
"size": {
"0": 210,
"1": 46
},
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 120,
"label": "image"
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
121
],
"shape": 3,
"slot_index": 0,
"label": "width"
},
{
"name": "height",
"type": "INT",
"links": [
122
],
"shape": 3,
"slot_index": 1,
"label": "height"
}
],
"properties": {
"Node name for S&R": "GetImageSize"
}
},
{
"id": 29,
"type": "ImageScaleBy",
"pos": [
-187,
384
],
"size": {
"0": 315,
"1": 82
},
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 194,
"label": "image"
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
87,
123
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
}
],
"properties": {
"Node name for S&R": "ImageScaleBy"
},
"widgets_values": [
"lanczos",
2
]
},
{
"id": 95,
"type": "SaveImage",
"pos": [
-411,
-863
],
"size": {
"0": 537.0595703125,
"1": 385.6903076171875
},
"flags": {},
"order": 18,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 168,
"label": "images"
}
],
"properties": {},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 67,
"type": "ImageScale",
"pos": [
933,
13
],
"size": {
"0": 315,
"1": 130
},
"flags": {},
"order": 16,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 123,
"label": "image"
},
{
"name": "width",
"type": "INT",
"link": 121,
"widget": {
"name": "width"
},
"label": "width"
},
{
"name": "height",
"type": "INT",
"link": 122,
"widget": {
"name": "height"
},
"label": "height"
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
124
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
}
],
"properties": {
"Node name for S&R": "ImageScale"
},
"widgets_values": [
"nearest-exact",
512,
512,
"disabled"
]
},
{
"id": 81,
"type": "ControlNetApply",
"pos": [
2161,
-5
],
"size": {
"0": 317.4000244140625,
"1": 98
},
"flags": {},
"order": 21,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 145,
"label": "conditioning"
},
{
"name": "control_net",
"type": "CONTROL_NET",
"link": 146,
"label": "control_net"
},
{
"name": "image",
"type": "IMAGE",
"link": 161,
"label": "image"
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
137
],
"shape": 3,
"slot_index": 0,
"label": "CONDITIONING"
}
],
"properties": {
"Node name for S&R": "ControlNetApply"
},
"widgets_values": [
1
]
},
{
"id": 31,
"type": "ApplyStableSRUpscaler",
"pos": [
-197,
39
],
"size": {
"0": 315,
"1": 102
},
"flags": {
"collapsed": false
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 63,
"label": "model"
},
{
"name": "latent_image",
"type": "LATENT",
"link": null,
"label": "latent_image"
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
133
],
"shape": 3,
"slot_index": 0,
"label": "MODEL"
}
],
"properties": {
"Node name for S&R": "ApplyStableSRUpscaler"
},
"widgets_values": [
"webui_768v_139.ckpt"
]
},
{
"id": 39,
"type": "UltimateSDUpscaleNoUpscale",
"pos": [
598,
-105
],
"size": {
"0": 308.0407409667969,
"1": 570
},
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "upscaled_image",
"type": "IMAGE",
"link": 87,
"label": "upscaled_image"
},
{
"name": "model",
"type": "MODEL",
"link": 134,
"label": "model"
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 93,
"label": "positive"
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 92,
"label": "negative"
},
{
"name": "vae",
"type": "VAE",
"link": 94,
"label": "vae"
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
88,
120
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
}
],
"properties": {
"Node name for S&R": "UltimateSDUpscaleNoUpscale"
},
"widgets_values": [
0,
"fixed",
20,
7,
"euler_ancestral",
"karras",
1,
"Linear",
704,
704,
32,
32,
"None",
1,
64,
8,
16,
"enable",
false
]
},
{
"id": 14,
"type": "CLIPTextEncode",
"pos": [
156,
-109
],
"size": {
"0": 400,
"1": 200
},
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 19,
"label": "clip"
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
93
],
"shape": 3,
"slot_index": 0,
"label": "CONDITIONING"
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"(masterpiece), (best quality), (realistic),(very clear)"
]
},
{
"id": 34,
"type": "StableSRColorFix",
"pos": [
939,
205
],
"size": {
"0": 315,
"1": 78
},
"flags": {},
"order": 17,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 88,
"label": "image"
},
{
"name": "color_map_image",
"type": "IMAGE",
"link": 124,
"label": "color_map_image"
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
160,
161,
168,
208
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
}
],
"properties": {
"Node name for S&R": "StableSRColorFix"
},
"widgets_values": [
"Wavelet"
]
},
{
"id": 12,
"type": "LoadImage",
"pos": [
-863,
-97
],
"size": {
"0": 573.42333984375,
"1": 445.68377685546875
},
"flags": {},
"order": 0,
"mode": 0,
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
163,
194
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
},
{
"name": "MASK",
"type": "MASK",
"links": null,
"shape": 3,
"label": "MASK"
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"37121709799477_.pic.jpg",
"image"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 4,
"type": "CheckpointLoaderSimple",
"pos": [
-191,
-109
],
"size": {
"0": 315,
"1": 98
},
"flags": {},
"order": 1,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
63
],
"slot_index": 0,
"label": "MODEL"
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
19,
22
],
"slot_index": 1,
"label": "CLIP"
},
{
"name": "VAE",
"type": "VAE",
"links": [
94
],
"slot_index": 2,
"label": "VAE"
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"stablesr_768v_000139.ckpt"
]
},
{
"id": 117,
"type": "SaveImage",
"pos": [
258,
-872
],
"size": {
"0": 550.2034301757812,
"1": 393.2756042480469
},
"flags": {},
"order": 23,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 207,
"label": "images"
}
],
"properties": {},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 90,
"type": "Float",
"pos": [
1380,
-119
],
"size": {
"0": 315,
"1": 58
},
"flags": {},
"order": 2,
"mode": 0,
"outputs": [
{
"name": "FLOAT",
"type": "FLOAT",
"links": [
141
],
"shape": 3,
"label": "FLOAT",
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "Float"
},
"widgets_values": [
4
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 118,
"type": "WD14Tagger|pysssss",
"pos": [
1742,
5
],
"size": {
"0": 358.7764587402344,
"1": 275.96881103515625
},
"flags": {},
"order": 19,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 208,
"label": "image"
}
],
"outputs": [
{
"name": "STRING",
"type": "STRING",
"links": [
210
],
"shape": 6,
"label": "STRING",
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "WD14Tagger|pysssss"
},
"widgets_values": [
"wd-v1-4-moat-tagger-v2",
0.35,
0.55,
"",
false,
"",
"outdoors, sky, day, tree, blue_sky, no_humans, window, plant, building, scenery, clock, tower, clock_tower"
]
},
{
"id": 89,
"type": "Reroute",
"pos": [
1394,
308
],
"size": [
75,
26
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "",
"type": "*",
"link": 215,
"label": ""
}
],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
153,
202
],
"label": "CLIP"
}
],
"properties": {
"showOutputText": true,
"horizontal": false
}
},
{
"id": 86,
"type": "CLIPTextEncode",
"pos": [
1535,
353
],
"size": {
"0": 217.8780975341797,
"1": 56.58431625366211
},
"flags": {},
"order": 20,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 153,
"label": "clip"
},
{
"name": "text",
"type": "STRING",
"link": 210,
"widget": {
"name": "text"
},
"label": "text"
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
145
],
"shape": 3,
"slot_index": 0,
"label": "CONDITIONING"
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"high detail, best quality"
],
"color": "#222"
},
{
"id": 116,
"type": "CLIPTextEncode",
"pos": [
1782,
-195
],
"size": {
"0": 369.3165283203125,
"1": 76.00001525878906
},
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 202,
"label": "clip"
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
203
],
"shape": 3,
"label": "CONDITIONING",
"slot_index": 0
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 15,
"type": "CLIPTextEncode",
"pos": [
159,
148
],
"size": {
"0": 400,
"1": 200
},
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 22,
"label": "clip"
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
92
],
"shape": 3,
"slot_index": 0,
"label": "CONDITIONING"
}
],
"properties": {
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"3d, cartoon, anime, sketches, (worst quality), (low quality)"
]
},
{
"id": 76,
"type": "CheckpointLoaderSimple",
"pos": [
1370,
-10
],
"size": {
"0": 333.23895263671875,
"1": 99.26319122314453
},
"flags": {},
"order": 3,
"mode": 0,
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
143,
213
],
"shape": 3,
"slot_index": 0,
"label": "MODEL"
},
{
"name": "CLIP",
"type": "CLIP",
"links": [
144,
215
],
"shape": 3,
"slot_index": 1,
"label": "CLIP"
},
{
"name": "VAE",
"type": "VAE",
"links": [
139
],
"shape": 3,
"slot_index": 2,
"label": "VAE"
}
],
"properties": {
"Node name for S&R": "CheckpointLoaderSimple"
},
"widgets_values": [
"realisticVisionV60B1_v51VAE.ckpt"
]
},
{
"id": 80,
"type": "ControlNetLoader",
"pos": [
2174,
-145
],
"size": {
"0": 355.2832946777344,
"1": 58.625450134277344
},
"flags": {},
"order": 4,
"mode": 0,
"outputs": [
{
"name": "CONTROL_NET",
"type": "CONTROL_NET",
"links": [
146
],
"shape": 3,
"slot_index": 0,
"label": "CONTROL_NET"
}
],
"properties": {
"Node name for S&R": "ControlNetLoader"
},
"widgets_values": [
"control_v11f1e_sd15_tile.pth"
]
},
{
"id": 79,
"type": "LoraLoader",
"pos": [
1370,
150
],
"size": {
"0": 314.7889709472656,
"1": 126
},
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 143,
"slot_index": 0,
"label": "model"
},
{
"name": "clip",
"type": "CLIP",
"link": 144,
"label": "clip"
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [],
"shape": 3,
"slot_index": 0,
"label": "MODEL"
},
{
"name": "CLIP",
"type": "CLIP",
"links": null,
"shape": 3,
"label": "CLIP"
}
],
"properties": {
"Node name for S&R": "LoraLoader"
},
"widgets_values": [
"lcm-lora-sdv1-5.safetensors",
1,
1
]
},
{
"id": 78,
"type": "UpscaleModelLoader",
"pos": [
2171,
145
],
"size": {
"0": 394.5442810058594,
"1": 58
},
"flags": {},
"order": 5,
"mode": 0,
"outputs": [
{
"name": "UPSCALE_MODEL",
"type": "UPSCALE_MODEL",
"links": [
140
],
"shape": 3,
"label": "UPSCALE_MODEL"
}
],
"properties": {
"Node name for S&R": "UpscaleModelLoader"
},
"widgets_values": [
"4x_NMKD-Superscale-SP_178000_G.pth"
]
},
{
"id": 75,
"type": "UltimateSDUpscale",
"pos": [
2830,
-137
],
"size": {
"0": 315,
"1": 614
},
"flags": {},
"order": 22,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 160,
"label": "image",
"slot_index": 0
},
{
"name": "model",
"type": "MODEL",
"link": 213,
"label": "model",
"slot_index": 1
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 137,
"slot_index": 2,
"label": "positive"
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 203,
"slot_index": 3,
"label": "negative"
},
{
"name": "vae",
"type": "VAE",
"link": 139,
"label": "vae"
},
{
"name": "upscale_model",
"type": "UPSCALE_MODEL",
"link": 140,
"slot_index": 5,
"label": "upscale_model"
},
{
"name": "upscale_by",
"type": "FLOAT",
"link": 141,
"widget": {
"name": "upscale_by"
},
"slot_index": 6,
"label": "upscale_by"
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
207,
214
],
"shape": 3,
"slot_index": 0,
"label": "IMAGE"
}
],
"properties": {
"Node name for S&R": "UltimateSDUpscale"
},
"widgets_values": [
3,
356188484102098,
"randomize",
8,
1,
"dpmpp_2m_sde",
"karras",
0.4,
"Linear",
768,
768,
8,
32,
"None",
1,
64,
8,
16,
"enable",
false
]
},
{
"id": 92,
"type": "Image Comparer (rgthree)",
"pos": {
"0": 913,
"1": -868,
"2": 0,
"3": 0,
"4": 0,
"5": 0,
"6": 0,
"7": 0,
"8": 0,
"9": 0
},
"size": {
"0": 653.4579467773438,
"1": 432.60040283203125
},
"flags": {},
"order": 24,
"mode": 0,
"inputs": [
{
"name": "image_a",
"type": "IMAGE",
"link": 163,
"dir": 3,
"label": "image_a"
},
{
"name": "image_b",
"type": "IMAGE",
"link": 214,
"dir": 3,
"label": "image_b"
}
],
"outputs": [],
"properties": {
"comparer_mode": "Slide"
},
"widgets_values": [
[
"/view?filename=rgthree.compare._temp_hqgei_00027_.png&type=temp&subfolder=&rand=0.43297994624892966",
"/view?filename=rgthree.compare._temp_hqgei_00028_.png&type=temp&subfolder=&rand=0.39469476273013804"
]
]
}
],
"links": [
[
19,
4,
1,
14,
0,
"CLIP"
],
[
22,
4,
1,
15,
0,
"CLIP"
],
[
63,
4,
0,
31,
0,
"MODEL"
],
[
87,
29,
0,
39,
0,
"IMAGE"
],
[
88,
39,
0,
34,
0,
"IMAGE"
],
[
92,
15,
0,
39,
3,
"CONDITIONING"
],
[
93,
14,
0,
39,
2,
"CONDITIONING"
],
[
94,
4,
2,
39,
4,
"VAE"
],
[
120,
39,
0,
68,
0,
"IMAGE"
],
[
121,
68,
0,
67,
1,
"INT"
],
[
122,
68,
1,
67,
2,
"INT"
],
[
123,
29,
0,
67,
0,
"IMAGE"
],
[
124,
67,
0,
34,
1,
"IMAGE"
],
[
133,
31,
0,
74,
0,
"MODEL"
],
[
134,
74,
0,
39,
1,
"MODEL"
],
[
137,
81,
0,
75,
2,
"CONDITIONING"
],
[
139,
76,
2,
75,
4,
"VAE"
],
[
140,
78,
0,
75,
5,
"UPSCALE_MODEL"
],
[
141,
90,
0,
75,
6,
"FLOAT"
],
[
143,
76,
0,
79,
0,
"MODEL"
],
[
144,
76,
1,
79,
1,
"CLIP"
],
[
145,
86,
0,
81,
0,
"CONDITIONING"
],
[
146,
80,
0,
81,
1,
"CONTROL_NET"
],
[
153,
89,
0,
86,
0,
"CLIP"
],
[
160,
34,
0,
75,
0,
"IMAGE"
],
[
161,
34,
0,
81,
2,
"IMAGE"
],
[
163,
12,
0,
92,
0,
"IMAGE"
],
[
168,
34,
0,
95,
0,
"IMAGE"
],
[
194,
12,
0,
29,
0,
"IMAGE"
],
[
202,
89,
0,
116,
0,
"CLIP"
],
[
203,
116,
0,
75,
3,
"CONDITIONING"
],
[
207,
75,
0,
117,
0,
"IMAGE"
],
[
208,
34,
0,
118,
0,
"IMAGE"
],
[
210,
118,
0,
86,
1,
"STRING"
],
[
213,
76,
0,
75,
1,
"MODEL"
],
[
214,
75,
0,
92,
1,
"IMAGE"
],
[
215,
76,
1,
89,
0,
"*"
]
],
"groups": [
{
"title": "Input",
"bounding": [
-893,
-233,
647,
685
],
"color": "#3f789e",
"font_size": 24,
"locked": false
},
{
"title": "Fix",
"bounding": [
-201,
-233,
1483,
756
],
"color": "#3f789e",
"font_size": 24,
"locked": false
},
{
"title": "Upscale",
"bounding": [
1320,
-235,
1884,
761
],
"color": "#3f789e",
"font_size": 24,
"locked": false
}
],
"config": {},
"extra": {
"groupNodes": {}
},
"version": 0.4
}