線画着色とは?
線画に色を付けるタスクです。
すでに自分で線画を描ける人にとっては、0からのtext2imageよりも、「自分の線画をどう塗らせるか」のほうが重要になることも多いと思います。
ControlNetによる線画着色
ControlNet Canny(edge)を使用すれば、入力した線画はおおむね保持したまま、そこに色を塗ることができます。

{
"id": "3ac30d7a-0e4b-44cc-9e84-879de671340e",
"revision": 0,
"last_node_id": 60,
"last_link_id": 113,
"nodes": [
{
"id": 35,
"type": "FluxGuidance",
"pos": [
1283,
262
],
"size": [
211.60000610351562,
58
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 61
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
57
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "FluxGuidance"
},
"widgets_values": [
3.5
]
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1895,
257.49220000000025
],
"size": [
140,
46
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 52
},
{
"name": "vae",
"type": "VAE",
"link": 71
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
58
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 41,
"type": "ControlNetLoader",
"pos": [
254,
619
],
"size": [
315,
58
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CONTROL_NET",
"type": "CONTROL_NET",
"slot_index": 0,
"links": [
74
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "ControlNetLoader"
},
"widgets_values": [
"Flux\\FLUX.1-dev-ControlNet-Union-Pro.safetensors"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 53,
"type": "DualCLIPLoader",
"pos": [
13.175545217989876,
284.23691045952506
],
"size": [
311.427498121713,
130
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
81,
82
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "DualCLIPLoader"
},
"widgets_values": [
"t5xxl_fp8_e4m3fn.safetensors",
"clip_l.safetensors",
"flux",
"default"
]
},
{
"id": 38,
"type": "PreviewImage",
"pos": [
2058.9999999999995,
256.49220000000025
],
"size": [
424.0710220164947,
622.0040109635831
],
"flags": {},
"order": 15,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 58
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "PreviewImage"
},
"widgets_values": []
},
{
"id": 50,
"type": "SetUnionControlNetType",
"pos": [
605,
620
],
"size": [
210,
58
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "control_net",
"type": "CONTROL_NET",
"link": 74
}
],
"outputs": [
{
"name": "CONTROL_NET",
"type": "CONTROL_NET",
"slot_index": 0,
"links": [
75
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "SetUnionControlNetType"
},
"widgets_values": [
"auto"
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
398.4432067871094,
190
],
"size": [
422.84503173828125,
164.31304931640625
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 81
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
59
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
"a high-quality Japanese anime style illustration, upper body portrait of a young character with bright orange hair and light blue headphones, wearing a light blue sweater, detailed shading and soft gradients, expressive eyes, clean line art, simple soft background, focus on the character, high resolution"
]
},
{
"id": 40,
"type": "ControlNetApplySD3",
"pos": [
895,
262
],
"size": [
352.0882568359375,
186
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "positive",
"type": "CONDITIONING",
"link": 59
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 60
},
{
"name": "control_net",
"type": "CONTROL_NET",
"link": 75
},
{
"name": "vae",
"type": "VAE",
"link": 72
},
{
"name": "image",
"type": "IMAGE",
"link": 112
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
61
]
},
{
"name": "negative",
"type": "CONDITIONING",
"slot_index": 1,
"links": [
62
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "ControlNetApplySD3"
},
"widgets_values": [
0.7,
0,
0.602
],
"color": "#2a363b",
"bgcolor": "#3f5159"
},
{
"id": 52,
"type": "GetImageSize",
"pos": [
1110.1664661475377,
548.6601937385558
],
"size": [
140,
124
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 110
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
78
]
},
{
"name": "height",
"type": "INT",
"links": [
79
]
},
{
"name": "batch_size",
"type": "INT",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "GetImageSize"
},
"widgets_values": [
"width: 1024, height: 1024\n batch size: 1"
]
},
{
"id": 27,
"type": "EmptySD3LatentImage",
"pos": [
1282.480000000001,
539.94
],
"size": [
210,
106
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 78
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 79
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
51
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "EmptySD3LatentImage"
},
"widgets_values": [
1024,
1024,
1
]
},
{
"id": 43,
"type": "LoadImage",
"pos": [
232.73151528584106,
742.6191250802534
],
"size": [
343.7478355537189,
456.2399966446276
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
113
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"1200.png",
"image"
]
},
{
"id": 60,
"type": "ImageScaleToTotalPixels",
"pos": [
603.7533671795015,
744.6402254162413
],
"size": [
210,
82
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 113
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
110,
112
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "ImageScaleToTotalPixels"
},
"widgets_values": [
"nearest-exact",
1
]
},
{
"id": 33,
"type": "CLIPTextEncode",
"pos": [
406.5700378417969,
404
],
"size": [
414.71820068359375,
108.47611236572266
],
"flags": {
"collapsed": true
},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 82
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
60
]
}
],
"title": "CLIP Text Encode (Negative Prompt)",
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "CLIPTextEncode"
},
"widgets_values": [
""
]
},
{
"id": 47,
"type": "VAELoader",
"pos": [
543,
498
],
"size": [
270,
58
],
"flags": {
"collapsed": false
},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
71,
72
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "VAELoader"
},
"widgets_values": [
"ae.safetensors"
]
},
{
"id": 45,
"type": "UnetLoaderGGUF",
"pos": [
1181,
129.90909090909093
],
"size": [
315,
58
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
68
]
}
],
"properties": {
"cnr_id": "ComfyUI-GGUF",
"ver": "02dac863ee1b65852d39ce6b9180bf5d9bc8a636",
"Node name for S&R": "UnetLoaderGGUF"
},
"widgets_values": [
"FLUX_gguf\\flux1-dev-Q4_0.gguf"
]
},
{
"id": 31,
"type": "KSampler",
"pos": [
1556,
258.49220000000025
],
"size": [
315,
262
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 68
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 57
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 62
},
{
"name": "latent_image",
"type": "LATENT",
"link": 51
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
52
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75",
"Node name for S&R": "KSampler"
},
"widgets_values": [
1514,
"fixed",
20,
1,
"euler",
"normal",
1
]
}
],
"links": [
[
51,
27,
0,
31,
3,
"LATENT"
],
[
52,
31,
0,
8,
0,
"LATENT"
],
[
57,
35,
0,
31,
1,
"CONDITIONING"
],
[
58,
8,
0,
38,
0,
"IMAGE"
],
[
59,
6,
0,
40,
0,
"CONDITIONING"
],
[
60,
33,
0,
40,
1,
"CONDITIONING"
],
[
61,
40,
0,
35,
0,
"CONDITIONING"
],
[
62,
40,
1,
31,
2,
"CONDITIONING"
],
[
68,
45,
0,
31,
0,
"MODEL"
],
[
71,
47,
0,
8,
1,
"VAE"
],
[
72,
47,
0,
40,
3,
"VAE"
],
[
74,
41,
0,
50,
0,
"CONTROL_NET"
],
[
75,
50,
0,
40,
2,
"CONTROL_NET"
],
[
78,
52,
0,
27,
0,
"INT"
],
[
79,
52,
1,
27,
1,
"INT"
],
[
81,
53,
0,
6,
0,
"CLIP"
],
[
82,
53,
0,
33,
0,
"CLIP"
],
[
110,
60,
0,
52,
0,
"IMAGE"
],
[
112,
60,
0,
40,
4,
"IMAGE"
],
[
113,
43,
0,
60,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6830134553650709,
"offset": [
86.82445478201012,
-29.909090909090935
]
},
"frontendVersion": "1.34.2",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
線画(もしくはエッジ抽出結果)をControlNetに渡し、テキストプロンプトで服装や色、雰囲気を指定します。
指示ベース画像編集での線画着色
指示ベース画像編集モデルに、線画をそのまま渡して塗らせることもできます。

{
"id": "d8034549-7e0a-40f1-8c2e-de3ffc6f1cae",
"revision": 0,
"last_node_id": 119,
"last_link_id": 318,
"nodes": [
{
"id": 54,
"type": "ModelSamplingAuraFlow",
"pos": [
634.9767456054688,
-1.8326886892318726
],
"size": [
230.33058166503906,
58
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 282
}
],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
123
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.49",
"Node name for S&R": "ModelSamplingAuraFlow"
},
"widgets_values": [
3.1000000000000005
]
},
{
"id": 63,
"type": "VAEEncode",
"pos": [
714.6403198242188,
673.7313842773438
],
"size": [
140,
46
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "pixels",
"type": "IMAGE",
"link": 239
},
{
"name": "vae",
"type": "VAE",
"link": 115
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
112
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51",
"Node name for S&R": "VAEEncode"
},
"widgets_values": []
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
-84.94583892822266,
-171.1671905517578
],
"size": [
386.9856262207031,
251.33447265625
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n- [Qwen-Image-Edit-gguf](https://huggingface.co/QuantStack/Qwen-Image-Edit-GGUF/tree/main)\n- [Qwen2.5-VL-7B-Instruct-GGUF](https://huggingface.co/unsloth/Qwen2.5-VL-7B-Instruct-GGUF/tree/main)\n- [Qwen2.5-VL-7B-Instruct-mmproj-BF16.gguf](https://huggingface.co/QuantStack/Qwen-Image-Edit-GGUF/blob/main/mmproj/Qwen2.5-VL-7B-Instruct-mmproj-BF16.gguf)\n- [qwen_image_vae.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image_ComfyUI/tree/main/split_files/vae)\n\n\n```\n📂ComfyUI/\n└── 📂models/\n ├── 📂text_encoders/\n │ ├── Qwen2.5-VL-7B-Instruct-.gguf\n │ └── Qwen2.5-VL-7B-Instruct-mmproj-BF16.gguf\n ├── 📂unet/\n │ └── Qwen_Image_Edit.gguf\n └── 📂vae/\n └── qwen_image_vae.safetensors\n```"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 8,
"type": "VAEDecode",
"pos": [
1293.939697265625,
143.6978759765625
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
254
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.33",
"Node name for S&R": "VAEDecode"
},
"widgets_values": []
},
{
"id": 112,
"type": "CLIPLoader",
"pos": [
75.53079223632812,
277.016357421875
],
"size": [
270,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"links": [
290,
291
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51",
"Node name for S&R": "CLIPLoader"
},
"widgets_values": [
"qwen_2.5_vl_7b_fp8_scaled.safetensors",
"qwen_image",
"default"
],
"color": "#432",
"bgcolor": "#653"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
107.53079223632812,
446.7167663574219
],
"size": [
238,
58
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
115,
292,
293
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.33",
"Node name for S&R": "VAELoader"
},
"widgets_values": [
"qwen_image_vae.safetensors"
],
"color": "#322",
"bgcolor": "#533"
},
{
"id": 82,
"type": "ImageScaleToTotalPixels",
"pos": [
-224.63221740722656,
668.4074096679688
],
"size": [
270,
82
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 275
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
244
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51",
"Node name for S&R": "ImageScaleToTotalPixels"
},
"widgets_values": [
"nearest-exact",
1
]
},
{
"id": 114,
"type": "TextEncodeQwenImageEditPlus",
"pos": [
454.6401672363281,
419.63690185546875
],
"size": [
400,
200
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 291
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 293
},
{
"name": "image1",
"shape": 7,
"type": "IMAGE",
"link": 295
},
{
"name": "image2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "image3",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
315
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.59",
"Node name for S&R": "TextEncodeQwenImageEditPlus"
},
"widgets_values": [
""
]
},
{
"id": 83,
"type": "ImageResizeKJv2",
"pos": [
75.53079223632812,
668.4074096679688
],
"size": [
270,
336
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 244
},
{
"name": "mask",
"shape": 7,
"type": "MASK",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
239,
294,
295
]
},
{
"name": "width",
"type": "INT",
"links": null
},
{
"name": "height",
"type": "INT",
"links": null
},
{
"name": "mask",
"type": "MASK",
"links": []
}
],
"properties": {
"cnr_id": "comfyui-kjnodes",
"ver": "e2ce0843d1183aea86ce6a1617426f492dcdc802",
"Node name for S&R": "ImageResizeKJv2"
},
"widgets_values": [
0,
0,
"nearest-exact",
"crop",
"0, 0, 0",
"center",
8,
"cpu",
"<tr><td>Output: </td><td><b>1</b> x <b>1024</b> x <b>1024 | 12.00MB</b></td></tr>"
]
},
{
"id": 111,
"type": "UNETLoader",
"pos": [
338.8721923828125,
-1.8326886892318726
],
"size": [
276.62274169921875,
82
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"links": [
282
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51",
"Node name for S&R": "UNETLoader"
},
"widgets_values": [
"Qwen-Image\\qwen_image_edit_2509_fp8_e4m3fn.safetensors",
"fp8_e4m3fn"
],
"color": "#323",
"bgcolor": "#535"
},
{
"id": 113,
"type": "TextEncodeQwenImageEditPlus",
"pos": [
454.6401672363281,
163.63690185546875
],
"size": [
400,
200
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 290
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 292
},
{
"name": "image1",
"shape": 7,
"type": "IMAGE",
"link": 294
},
{
"name": "image2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "image3",
"shape": 7,
"type": "IMAGE",
"link": null
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
314
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.59",
"Node name for S&R": "TextEncodeQwenImageEditPlus"
},
"widgets_values": [
"Please add color.The background features a beautiful sea. The fur color is brown. It adopts a texture shading style reminiscent of Japanese anime."
]
},
{
"id": 3,
"type": "KSampler",
"pos": [
933.5941772460938,
143.6978759765625
],
"size": [
315,
262
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 123
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 314
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 315
},
{
"name": "latent_image",
"type": "LATENT",
"link": 112
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.33",
"Node name for S&R": "KSampler"
},
"widgets_values": [
12345,
"fixed",
20,
2.5,
"res_multistep",
"simple",
1
]
},
{
"id": 97,
"type": "SaveImage",
"pos": [
1495.48046875,
143.6978759765625
],
"size": [
504.9530431542971,
597.9706474414061
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 254
}
],
"outputs": [],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51"
},
"widgets_values": [
"ComfyUI"
]
},
{
"id": 99,
"type": "LoadImage",
"pos": [
-671.7954541015628,
668.4074096679688
],
"size": [
398.8502270507811,
519.73728515625
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
275
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.51",
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"93a596f6dceb53429f63517603bd16a7.png",
"image"
]
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
112,
63,
0,
3,
3,
"LATENT"
],
[
115,
39,
0,
63,
1,
"VAE"
],
[
123,
54,
0,
3,
0,
"MODEL"
],
[
239,
83,
0,
63,
0,
"IMAGE"
],
[
244,
82,
0,
83,
0,
"IMAGE"
],
[
254,
8,
0,
97,
0,
"IMAGE"
],
[
275,
99,
0,
82,
0,
"IMAGE"
],
[
282,
111,
0,
54,
0,
"MODEL"
],
[
290,
112,
0,
113,
0,
"CLIP"
],
[
291,
112,
0,
114,
0,
"CLIP"
],
[
292,
39,
0,
113,
1,
"VAE"
],
[
293,
39,
0,
114,
1,
"VAE"
],
[
294,
83,
0,
113,
2,
"IMAGE"
],
[
295,
83,
0,
114,
2,
"IMAGE"
],
[
314,
113,
0,
3,
1,
"CONDITIONING"
],
[
315,
114,
0,
3,
2,
"CONDITIONING"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.620921323059155,
"offset": [
639.1189541015633,
202.7310425517584
]
},
"frontendVersion": "1.34.2",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
入力画像に線画を与え、「この線画をフルカラーで塗って」「アニメ塗りで彩色して」などとテキストで指示するだけです。
参照ベースの色付け(線画+カラー画像)
「この線画を、このキャラと同じ配色で塗りたい」「この一枚絵の色使いを借りたい」といった場合は、参照画像ベースの色付けが使えます。
ControlNet(lineart / animeなど)で線画の形・構図を固定し、IP-Adapterなどの参照画像アダプタでカラーイラストや写真を渡して、配色や質感・画風を寄せます。
指示ベース画像編集モデルでも、マルチリファレンスに対応しているものは、「画像2を参考に画像1の線画を塗ってほしい」といった指定ができるものもあります。
余談
実際の絵描きのワークフローは、「下塗り → 影 → 仕上げ」のように、もう少し段階を踏みます。
着色に限りませんが、AIはいきなり完成品を作るのは得意でも、人間のように徐々に絵を描いていくことはあまり得意ではありません。
私が日本人なので多少贔屓しますが、Copainterのような商用サービスからコミュニティのLoRAまで、日本ではこの手の研究・実装がかなり盛んです。