Spaces:
Runtime error
Runtime error
Commit History
-
Bake metrics narrative into submission notebook (§2.4–§2.6, §3.3, §4.1, §11.2) (#29)
theDocWho +2: theDocWho, Claude Opus 4.7Unverified signatureReviewers now see the full identifier / damage_seg / parts_seg / Variant-D story statically without running anything: - §2.4 — markdown explaining why 0.40 (VMMRdb) vs 0.77 (Stanford) is a preprocessing mismatch and class-granularity effect, not a model regression. Six-factor breakdown + an honest comparison table for Options 1 / 2 / 3. - §2.5 — train/val loss + top-1 accuracy curves per epoch with stage boundary annotated. Stanford curve always plotted; VMMRdb plotted when metrics.json is pulled from the Colab run. - §2.6 — three confusion / F1 views from the cached Stanford F1 run (data/eval/identifier_stanford_f1.json): top-20 by support heatmap, bottom-20 by F1 bar chart, and make-level aggregated heatmap (49 makes, 0.854 accuracy — the metric Variant D actually depends on). - §3.3 / §4.1 — damage_seg + parts_seg YOLOv8 per-epoch curves (box + mask loss, mAP50, mAP50-95, P/R) loaded from each run's ultralytics/results.csv. - §11.2 — Variant D end-to-end MAE on a ha…4176ea4
-
checkpoint-3: comparison report, FastAPI, Gradio, HF Space deploy
Phase 3 brings the system to humans. Three deliverables, all reading from the existing v0.1.0 production registry — no new training, no model changes. ## New modules ccdp/preprocess (Stage A: deterministic downscale + quality report). - `normalize_for_inference` LANCZOS-resizes long edges to 1600 px max. - `quality_report` returns sharpness (Laplacian variance), brightness, contrast, low-resolution / low-light / blurry booleans. - Stage B (super-resolution) explicitly deferred to a later checkpoint. ccdp/eval — Variant A vs B head-to-head evaluator. - `metrics.py`: pure per-class P/R/F1 + regression metrics (no sklearn). - `comparison.py`: `build_comparison()` runs both pipelines on the seed=42 test split, returns a `Comparison` dataclass. - `report.py`: Jinja2 -> HTML always; WeasyPrint -> PDF when installed. - `reports/templates/report.html.j2`: A4-formatted report with headline table, per-variant detail, tier/latency, top failures, disclosures. ccdp/api…323fee6 -
Refactor: extract utils + base pipeline, expand docs
Code changes (KISS + single-responsibility): - src/ccdp/utils/{device,transforms}.py: deduplicate `pick_device`, `seed_everything`, IMAGENET stats, train/eval transforms (~120 lines previously copy/pasted across 5 files). - src/ccdp/infer/base.py: new `BaseVariantPipeline` holding the shared downstream — XGBoost loading, calibration, FX conversion, provenance construction. `VariantAPipeline` and `VariantBPipeline` now subclass it and only implement their vision-specific forward pass. - Wire trainers (`train_car_identifier`, `train_damage_classifier`) and the classifier feature extractor to import from `ccdp.utils` instead of holding private copies of the same helpers. - Fix latent bugs surfaced by the smoke test: * `_can_use_xgb` now also checks that the bundle actually loaded. * `BaseVariantPipeline` resolves the production symlink before deriving the bundle dir; previously it pointed at `checkpoints/production/` where `bundle.json` does not live. Do…76955d6 -
Initial commit: end-to-end car damage + repair-cost predictor
Variants A and B trained end-to-end on CarDD + comprehensive + iaai + Stanford Cars datasets, glued together by a versioned parts-cost catalog and a three-tier (exact / nearest-class / catalog-only) cost estimator with full provenance on every prediction. Production metrics (v0.1.0): - Identifier (ResNet50 + RandAugment + MixUp + CutMix): val acc 77.0% - Damage classifier (ResNet50, 6 damage types): val macro-F1 0.834 - YOLOv8n detector: mAP50 0.687, mAP50-95 0.540 - XGBoost(A) (image features only): val R² 0.630, test R² 0.642 - XGBoost(B) (+ bbox features): val R² 0.716, test R² 0.736 64 unit tests pass. Honest disclosures of synthetic-cost limitation in PLAN.md and progress/*.md.4ce7a7e