{"adoption": {"forks": 124, "observed_at": "2026-08-28T04:05:29.892952+00:00", "stars": 1737}, "canonical_url": "https://ross.abutalabs.com/products/easycontrol", "card": {"archived": false, "artifact_type": "library", "description": "Implementation of \"EasyControl: Adding Efficient and Flexible Control for Diffusion Transformer\"(ICCV2025)", "domain": ["artificial-intelligence", "image-processing", "deep-learning"], "enriched": true, "function": ["machine-learning", "image-processing", "llm-inference"], "health_score": 40, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Xiaojiu-z/EasyControl"], "name": "Xiaojiu-z/EasyControl", "platform": ["python"], "pushed_at": "2025-07-25T08:45:40+00:00", "repo": "Xiaojiu-z/EasyControl", "stars": 1737, "tags": ["diffusion-transformer", "conditional-generation", "lora", "image-generation", "controlnet", "research-code", "gpu", "linux"], "topics": [], "urls": [], "use_cases": ["add control conditions like depth or pose to a diffusion transformer model", "generate images conditioned on multiple inputs with a DiT model", "train a lightweight LoRA adapter for conditional image generation", "speed up conditional diffusion inference with KV cache and causal attention", "apply stylized controlled generation like Ghibli-style images", "run controlled image generation locally on a GPU"], "what_it_is": "EasyControl is the official implementation of an ICCV 2025 paper adding efficient and flexible conditional control to Diffusion Transformer (DiT) image generation models. It provides lightweight Condition Injection LoRA modules, causal attention with KV cache, and training/inference code for multi-condition controlled generation.", "when_to_avoid": ["you use UNet-based diffusion models instead of DiT architectures", "you have limited GPU memory and only need inference without heavy training", "you need a production-ready, well-abstracted API rather than research code", "you need non-image modalities like audio or video generation"], "when_to_choose": ["you need plug-and-play conditional control for DiT-based models like FLUX", "you want multi-condition combinations with flexible resolutions and aspect ratios", "you are reproducing or building on the EasyControl paper", "you have high-VRAM GPUs (80GB) for training custom condition adapters"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/easycontrol", "repo": "Xiaojiu-z/EasyControl", "role": "main", "score": 35}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:29.892952+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:30:37.806424+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9ebcaf53fd7276a9a063382f32585ad07961fffe94d2d4b4ede79875625cbaea", "fetched_at": "2026-08-28T04:05:29.892952+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Xiaojiu-z/EasyControl"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 33, "longevity": 38, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 545, "days_push": 404, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 35, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}