Nodes/AnimateDiff Evolved/๐ŸงชInject PIA into AnimateDiff Model ๐ŸŽญ๐Ÿ…๐Ÿ…“โ‘ก
ComfyUI Node Runs on cloud

๐ŸงชInject PIA into AnimateDiff Model ๐ŸŽญ๐Ÿ…๐Ÿ…“โ‘ก

Turning a motion module into an image animator

By KosinkadinkยทCreated 3 years agoยทUpdated 8 days agoยท 3,519
๐ŸงชInject PIA into AnimateDiff Model ๐ŸŽญ๐Ÿ…๐Ÿ…“โ‘ก
  • motion_model
  • ad_settings
  • MOTION_MODEL
โ—„model_nameโ–พโ–บ

The pack's own menu tags this one ๐Ÿงช experimental, and that's honest labeling, not decoration. PIA - Personalized Image Animator - is a separate small model that bolts onto an AnimateDiff motion module so it animates a specific image you give it instead of whatever the checkpoint would have generated from noise. This node is the "bolt on" step: it takes a motion model you've already loaded and merges the PIA weights into it, handing back a motion model that's now PIA-capable.

It's a real, published technique (the PIA paper is from open-mmlab, December 2023), but a genuinely obscure corner even inside an already-niche pack - mentions of it in the wild are close to nonexistent these days. If you're not specifically chasing image-conditioned motion, you can skip this node entirely and never miss it.

How it fits together

This isn't the node that takes your reference image - it's the step before that. You load a motion model with a normal Gen2 loader, feed it here along with the PIA checkpoint, and get back a MOTION_MODEL_ADE that's ready for the actual image input, which happens on a separate downstream node (Apply AnimateDiff-PIA Model, covered elsewhere in this pack's node list) that takes the image, a VAE, and a PIA_INPUT - built by either PIA Input [Multival] or PIA Input [Paper Presets], both also covered separately.

Think of the three-node chain as: load model โ†’ inject PIA (this node) โ†’ apply with your actual image and motion-strength input. Skip this step and the downstream Apply node has no PIA behavior to work with, just a plain motion model.

The inputs and outputs that matter

Required: model_name, a dropdown for the PIA checkpoint file - the pack's README points at pia.ckpt from Leoxing's HuggingFace repo, and motion_model (MOTION_MODEL_ADE), the already-loaded motion model this gets injected into. Optional: ad_settings (AD_SETTINGS), the same advanced motion-model settings bundle used elsewhere in the Gen2 family, if you're already tuning those.

Output is a single MOTION_MODEL_ADE - same type as the input, just now carrying the PIA weights, ready for the Apply node.

How to install it

ComfyUI Manager: search AnimateDiff Evolved, confirm the author is Kosinkadink, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolved

then restart. You'll need a standard motion module in ComfyUI/models/animatediff_models regardless (mm_sd_v15_v2, v3_sd15_mm, and friends, per the README's Model Setup section). PIA specifically needs pia.ckpt on top of that - the README doesn't spell out a dedicated folder for it beyond the general motion-model locations, so the safest bet is dropping it alongside your other motion modules and seeing if the dropdown here picks it up.

Common issues & troubleshooting

The whole thing looks broken, not just "off." The README is explicit that PIA needs the autoselect or sqrt_linear (AnimateDiff) beta_schedule specifically, set on your sampling settings elsewhere in the graph. The wrong schedule is the single most likely reason a PIA pipeline falls apart end to end rather than just looking a bit off.

You built this node but nothing downstream seems to use the image you're providing. That's expected - this node doesn't take an image at all. Confirm you're also wiring the Apply node afterward with your actual image and vae inputs; this node only prepares the motion model to accept them.

You can't find much written up about this online. That tracks - PIA support inside AnimateDiff-Evolved barely registers in community discussion even relative to the rest of this pack's less mainstream corners. You're working mostly from the README and direct experimentation here, not a stack of existing troubleshooting threads. If image-conditioned animation is what you actually need and this feels like more setup than it's worth, it's worth checking whether a newer video model's native image-to-video mode gets you there with less ceremony.

CategoryAnimate Diff ๐ŸŽญ๐Ÿ…๐Ÿ…“/โ‘ก Gen2 nodes โ‘ก/PIA/๐Ÿงชexperimental

Inputs (3)

NameTypeDefaultDescription
model_nameCOMBO0 options:
motion_modelMOTION_MODEL_ADEโ€”
ad_settingsoptAD_SETTINGSโ€”

Outputs (1)

NameTypeDescription
MOTION_MODELMOTION_MODEL_ADEโ€”