LTX 2.3 - Anime2Real
This experimental workflow will take Anime characters and try to make them realistic using an LTX 2.3 IC LoRA trained by Alisson Pereira.
查看工作流内部
源模板的只读预览。在 Cloud 中打开,即可查看节点并进行修改。
Loading the graph
Open full-size workflow preview- 输出
- 视频
- 作者
- Purz
从代码中调用该模型
以下请求使用与体验区相同的预设图和设置。每次提交都可能开始一次付费运行;如果提交结果未知,请勿自动重试。
What you need
- Runs on
- Comfy Cloud
- 密钥
- COMFY_API_KEY
- 你的文件
- 由代码根据链接上传
需要付费的 Cloud 方案和额度。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"5060": {
"class_type": "VHS_LoadVideo",
"inputs": {
"custom_height": 0,
"custom_width": 0,
"force_rate": 0,
"format": "AnimateDiff",
"frame_load_cap": 0,
"select_every_nth": 1,
"skip_first_frames": 0,
"video": "UPLOADED_video_FILENAME"
},
"_meta": {
"title": "Load Video (Upload) 🎥🅥🅗🅢"
}
},
"5069": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 13,
"filename_prefix": "outpaint_comparison",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5125",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": True,
"trim_to_audio": False
},
"_meta": {
"title": "video_compare"
}
},
"5152": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 13,
"filename_prefix": "outpaint_output",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5143",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": True,
"trim_to_audio": False
},
"_meta": {
"title": "video_output"
}
},
"5151:5097": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 1280
},
"_meta": {
"title": "target_resolution_w"
}
},
"5151:5098": {
"class_type": "PrimitiveInt",
"inputs": {
"value": 720
},
"_meta": {
"title": "target_resolution_h"
}
},
"5151:5110": {
"class_type": "LTXVConditioning",
"inputs": {
"frame_rate": [
"5151:5137",
5
],
"negative": [
"5151:5131",
0
],
"positive": [
"5151:5138",
0
]
},
"_meta": {
"title": "LTXVConditioning"
}
},
"5151:5111": {
"class_type": "LTXVConcatAVLatent",
"inputs": {
"audio_latent": [
"5151:5121",
0
],
"video_latent": [
"5151:5142",
2
]
},
"_meta": {
"title": "Concat AV Latent"
}
},
"5151:5112": {
"class_type": "EmptyLTXVLatentVideo",
"inputs": {
"batch_size": 1,
"height": [
"5151:5098",
0
],
"length": [
"5151:5126",
2
],
"width": [
"5151:5097",
0
]
},
"_meta": {
"title": "Empty LTXV Latent Video"
}
},
"5151:5113": {
"class_type": "LTXVCropGuides",
"inputs": {
"latent": [
"5151:5114",
0
],
"negative": [
"5151:5142",
1
],
"positive": [
"5151:5142",
0
]
},
"_meta": {
"title": "LTXVCropGuides"
}
},
"5151:5114": {
"class_type": "LTXVSeparateAVLatent",
"inputs": {
"av_latent": [
"5151:5122",
0
]
},
"_meta": {
"title": "Separate AV Latent"
}
},
"5151:5115": {
"class_type": "CM_FloatToInt",
"inputs": {
"a": [
"5151:5137",
5
]
},
"_meta": {
"title": "FloatToInt"
}
},
"5151:5116": {
"class_type": "CFGGuider",
"inputs": {
"cfg": 1,
"model": [
"5151:5146",
0
],
"negative": [
"5151:5142",
1
],
"positive": [
"5151:5142",
0
]
},
"_meta": {
"title": "CFG Guider"
}
},
"5151:5117": {
"class_type": "RandomNoise",
"inputs": {
"noise_seed": 42
},
"_meta": {
"title": "RandomNoise"
}
},
"5151:5118": {
"class_type": "ManualSigmas",
"inputs": {
"sigmas": "1.0, 0.99375, 0.9875, 0.98125, 0.975, 0.909375, 0.725, 0.421875, 0.0"
},
"_meta": {
"title": "ManualSigmas"
}
},
"5151:5119": {
"class_type": "KSamplerSelect",
"inputs": {
"sampler_name": "euler_ancestral"
},
"_meta": {
"title": "KSamplerSelect"
}
},
"5151:5120": {
"class_type": "LTXVPreprocess",
"inputs": {
"image": [
"5151:5136",
0
],
"img_compression": 18
},
"_meta": {
"title": "LTXV Preprocess"
}
},
"5151:5121": {
"class_type": "LTXVEmptyLatentAudio",
"inputs": {
"audio_vae": [
"5151:5132",
0
],
"batch_size": 1,
"frame_rate": [
"5151:5115",
0
],
"frames_number": [
"5060",
1
]
},
"_meta": {
"title": "Empty LTXV Latent Audio"
}
},
"5151:5122": {
"class_type": "SamplerCustomAdvanced",
"inputs": {
"guider": [
"5151:5116",
0
],
"latent_image": [
"5151:5111",
0
],
"noise": [
"5151:5117",
0
],
"sampler": [
"5151:5119",
0
],
"sigmas": [
"5151:5118",
0
]
},
"_meta": {
"title": "SamplerCustomAdvanced"
}
},
"5151:5124": {
"class_type": "LTXVAudioVAEDecode",
"inputs": {
"audio_vae": [
"5151:5132",
0
],
"samples": [
"5151:5114",
1
]
},
"_meta": {
"title": "LTXV Audio VAE Decode"
}
},
"5151:5125": {
"class_type": "ImageConcanate",
"inputs": {
"direction": "left",
"image1": [
"5151:5143",
0
],
"image2": [
"5151:5130",
0
],
"match_image_size": True
},
"_meta": {
"title": "ImageConcanate"
}
},
"5151:5126": {
"class_type": "GetImageSize",
"inputs": {
"image": [
"5151:5130",
0
]
},
"_meta": {
"title": "Get Image Size"
}
},
"5151:5127": {
"class_type": "PrimitiveBoolean",
"inputs": {
"value": True
},
"_meta": {
"title": "bypass_i2v"
}
},
"5151:5128": {
"class_type": "VAEDecodeTiled",
"inputs": {
"overlap": 64,
"temporal_overlap": 4,
"temporal_size": 512,
"tile_size": 512
},
"_meta": {
"title": "VAE Decode (Tiled)"
}
},
"5151:5129": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5139",
0
],
"resize_type": "scale by multiplier",
"resize_type.multiplier": 0.5,
"scale_method": "lanczos"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5130": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5129",
0
],
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5131": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5151:5135",
0
],
"text": "pc game, console game, video game, ugly, 3d render, photo, still, static, slow"
},
"_meta": {
"title": "CLIP Text Encode (Negative Prompt)"
}
},
"5151:5132": {
"class_type": "LTXVAudioVAELoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load LTXV Audio VAE"
}
},
"5151:5133": {
"class_type": "CheckpointLoaderSimple",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors"
},
"_meta": {
"title": "Load Checkpoint"
}
},
"5151:5134": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx-2.3-22b-distilled-lora-384.safetensors",
"model": [
"5151:5133",
0
],
"strength_model": 0.5
},
"_meta": {
"title": "Load LoRA"
}
},
"5151:5135": {
"class_type": "LTXAVTextEncoderLoader",
"inputs": {
"ckpt_name": "ltx-2.3-22b-dev-fp8.safetensors",
"device": "default",
"text_encoder": "gemma_3_12B_it.safetensors"
},
"_meta": {
"title": "Load LTXV Audio Text Encoder"
}
},
"5151:5136": {
"class_type": "ResizeImageMaskNode",
"inputs": {
"input": [
"5151:5145",
0
],
"resize_type": "match size",
"resize_type.crop": "center",
"resize_type.match": [
"5151:5130",
0
],
"scale_method": "area"
},
"_meta": {
"title": "Resize Image/Mask"
}
},
"5151:5137": {
"class_type": "VHS_VideoInfo",
"inputs": {
"video_info": [
"5060",
3
]
},
"_meta": {
"title": "Video Info 🎥🅥🅗🅢"
}
},
"5151:5138": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"5151:5135",
0
],
"text": ""
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"5151:5139": {
"class_type": "ImagePadKJ",
"inputs": {
"bottom": 0,
"color": "0, 0, 0",
"extra_padding": 0,
"image": [
"5060",
0
],
"left": 0,
"pad_mode": "color",
"right": 0,
"target_height": [
"5151:5150",
1
],
"target_width": [
"5151:5149",
1
],
"top": 0
},
"_meta": {
"title": "ImagePad KJ"
}
},
"5151:5140": {
"class_type": "VHS_VideoCombine",
"inputs": {
"audio": [
"5060",
2
],
"crf": 12,
"filename_prefix": "AnimateDiff",
"format": "video/h264-mp4",
"frame_rate": [
"5151:5137",
5
],
"images": [
"5151:5144",
0
],
"loop_count": 0,
"pingpong": False,
"pix_fmt": "yuv420p",
"save_metadata": True,
"save_output": False,
"trim_to_audio": False
},
"_meta": {
"title": "Video Combine 🎥🅥🅗🅢"
}
},
"5151:5141": {
"class_type": "LTXVImgToVideoConditionOnly",
"inputs": {
"bypass": [
"5151:5127",
0
],
"image": [
"5151:5120",
0
],
"latent": [
"5151:5112",
0
],
"strength": 0.7,
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "🅛🅣🅧 LTXV Img To Video Condition Only"
}
},
"5151:5142": {
"class_type": "LTXAddVideoICLoRAGuide",
"inputs": {
"crop": "disabled",
"frame_idx": 0,
"image": [
"5151:5144",
0
],
"latent": [
"5151:5141",
0
],
"latent_downscale_factor": 1,
"negative": [
"5151:5110",
1
],
"positive": [
"5151:5110",
0
],
"strength": 1,
"tile_frames": 97,
"tile_overlap": 64,
"tile_size": 256,
"use_streaming": False,
"use_tiled_encode": False,
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "🅛🅣🅧 Add Video IC-LoRA Guide"
}
},
"5151:5143": {
"class_type": "Float32ColorCorrect",
"inputs": {
"brightness": 0,
"clamp_output": False,
"contrast": 1,
"exposure": 0,
"gain_b": 1,
"gain_g": 1,
"gain_r": 1,
"gamma": 0.5,
"image": [
"5151:5154",
0
],
"lift_b": 0,
"lift_g": 0,
"lift_r": 0,
"luma_space": "Rec.709 / sRGB",
"saturation": 1
},
"_meta": {
"title": "◎ Radiance Float32 Color Correct"
}
},
"5151:5144": {
"class_type": "Float32ColorCorrect",
"inputs": {
"brightness": 0,
"clamp_output": False,
"contrast": 1,
"exposure": 0,
"gain_b": 1,
"gain_g": 1,
"gain_r": 1,
"gamma": 2,
"image": [
"5151:5156",
0
],
"lift_b": 0,
"lift_g": 0,
"lift_r": 0,
"luma_space": "Rec.709 / sRGB",
"saturation": 1
},
"_meta": {
"title": "◎ Radiance Float32 Color Correct"
}
},
"5151:5145": {
"class_type": "LoadImage",
"inputs": {
"image": "642ef66b933861a25a7a8ad3b46f3a7005c783d53c3971392a84595ae4dd4b04.png"
},
"_meta": {
"title": "Load Image"
}
},
"5151:5146": {
"class_type": "LoraLoaderModelOnly",
"inputs": {
"lora_name": "ltx23_anime2real_rank64_v1_4500.safetensors",
"model": [
"5151:5134",
0
],
"strength_model": 1
},
"_meta": {
"title": "Load LoRA"
}
},
"5151:5148": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "a / b",
"values.a": [
"5151:5097",
0
],
"values.b": [
"5151:5098",
0
]
},
"_meta": {
"title": "ratio"
}
},
"5151:5149": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "max(a, b * c)",
"values.a": [
"5151:5137",
3
],
"values.b": [
"5151:5137",
4
],
"values.c": [
"5151:5148",
0
]
},
"_meta": {
"title": "target_w"
}
},
"5151:5150": {
"class_type": "ComfyMathExpression",
"inputs": {
"expression": "max(b, a / c)",
"values.a": [
"5151:5137",
3
],
"values.b": [
"5151:5137",
4
],
"values.c": [
"5151:5148",
0
]
},
"_meta": {
"title": "target_h"
}
},
"5151:5154": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"5151:5113",
2
],
"vae": [
"5151:5133",
2
]
},
"_meta": {
"title": "VAE Decode"
}
},
"5151:5156": {
"class_type": "ImageResizeKJv2",
"inputs": {
"crop_position": "center",
"device": "cpu",
"divisible_by": 2,
"height": [
"5151:5098",
0
],
"image": [
"5060",
0
],
"keep_proportion": "crop",
"pad_color": "0, 0, 0",
"upscale_method": "lanczos",
"width": [
"5151:5097",
0
]
},
"_meta": {
"title": "Resize Image v2"
}
}
})
workflow.set_input("5060", "video", client.assets.from_url("https://comfy.org/catalog-media/ffc7fc72-36d3-40e9-8ecb-1b7531188d9a/2579c05f-2f3a-41ae-b271-897080383c01"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("5152"):
output.to_file(output.name)
for output in job.get_outputs("5069"):
output.to_file(output.name)试试一个示例
关于此工作流
This ComfyUI tutorial workflow, LTX 2.3 - Anime2Real, demonstrates how to convert anime footage into realistic-looking video using a frame-by-frame image-to-image process. It relies on Video Helper Suite nodes to handle video I/O: VHS_LoadVideo extracts frames from your source clip, and VHS_VideoCombine stitches the processed frames back into a video file. The core transformation happens in a custom processing block (shown in the workflow as node 2e37ecc9-770a-4ac2-972c-e953901f49d3), which applies the LTX 2.3 IC LoRA (trained by Alisson Pereira) to push each frame toward photorealism.
Technically, the pipeline loads your clip, trims or limits the frame range with controls like skip_first_frames and frame_count, then feeds each frame through the LoRA-powered image-to-image pass before recombining the output frames. Because this is an experimental anime-to-realism mapping, results will vary with source quality, lighting, and character design. The design keeps the flow simple—no manual frame extraction or external editors—so you can iterate quickly on parameters and see how they affect temporal consistency and realism.
常见问答
You need the LTX 2.3 IC LoRA (trained by Alisson Pereira) installed in your ComfyUI models/loras directory (or wherever your LoRA loader expects it). The workflow’s custom processing node (2e37ecc9-770a-4ac2-972c-e953901f49d3) should point to that LoRA. Ensure any base model or sampler settings required by that node are properly configured.
skip_first_frames tells VHS_LoadVideo to ignore a set number of frames at the start. frame_count defines how many frames to process after the skip. Together, they let you target a precise segment of your clip for conversion, which speeds iteration and testing.
Keep settings consistent across frames, avoid overly high denoise or LoRA strength (if those controls are available), and test shorter segments first. Stable input (clear faces, steady camera) helps. If the node exposes a fixed seed or temporal options, use them for more consistent per-frame outputs.
Yes, if your workflow extracts audio in VHS_LoadVideo and your VHS_VideoCombine node is set up to accept an audio path, you can remux the original audio into the final video. If audio inputs aren’t present in your version, export audio separately and remux with a video editor or ffmpeg.