{"adoption": {"forks": 373, "observed_at": "2026-08-28T04:07:21.721465+00:00", "stars": 2781}, "canonical_url": "https://ross.abutalabs.com/products/tensorflow-graphics", "card": {"archived": false, "artifact_type": "library", "description": "TensorFlow Graphics: Differentiable Graphics Layers for TensorFlow", "domain": ["machine-learning", "computer-vision", "graphics", "deep-learning", "artificial-intelligence"], "enriched": true, "function": ["machine-learning", "graphics", "simulation", "computer-vision", "deep-learning"], "health_score": 75, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["tensorflow/graphics"], "name": "tensorflow/graphics", "platform": ["python", "cross-platform"], "pushed_at": "2026-07-14T12:14:54+00:00", "repo": "tensorflow/graphics", "stars": 2781, "tags": ["differentiable-rendering", "3d-graphics", "neural-rendering", "tensorflow", "geometry", "self-supervised-learning", "analysis-by-synthesis", "spatial-transformers", "gpu"], "topics": [], "urls": [], "use_cases": ["differentiable rendering inside a neural network", "train 3d vision models with self-supervision", "add geometric priors and constraints to deep learning models", "infer 3d scene parameters from images", "analysis by synthesis for unsupervised training", "spatial transformer layers in tensorflow", "3d mesh and camera geometry operations for ml"], "what_it_is": "TensorFlow Graphics is a library of differentiable graphics layers for TensorFlow, including differentiable renderers, spatial transformers, and 3D geometry operations that can be embedded in neural network architectures. It enables combining computer vision and computer graphics techniques, such as analysis-by-synthesis, to train models with geometric priors on unlabelled data.", "when_to_avoid": ["your project is built on PyTorch or JAX rather than TensorFlow", "you need a production game or real-time rendering engine rather than ML-oriented layers", "you require actively developed features or rapid bug fixes", "you only need classical non-differentiable 3D rendering"], "when_to_choose": ["you use TensorFlow and need differentiable graphics or rendering layers", "you want to inject 3D geometry priors into neural networks", "you are doing self-supervised or unsupervised 3D vision research", "you need differentiable rasterization or spatial transformers in a training pipeline"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tensorflow-graphics", "repo": "tensorflow/graphics", "role": "main", "score": 64}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "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:07:21.721465+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:21.721465+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:16:06.882452+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "952a2b41ae1b4a07a06a5ff57f4607cbae3371207ca318d8b1c092a95715d8d6", "fetched_at": "2026-08-28T04:07:21.721465+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tensorflow/graphics"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 92, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2794, "days_push": 50, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 64, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}