--- language: - en license: mit library_name: pytorch pipeline_tag: object-detection datasets: - junbin666/isaac-blue-vial-sdg-contract tags: - nvidia - isaac-sim - synthetic-data - robotics - objectness - tiny-cnn model-index: - name: Tiny Vial CNN SDG Objectness v2 results: - task: type: object-detection name: Object presence and single-object localization dataset: type: junbin666/isaac-blue-vial-sdg-contract name: Isaac Blue Vial SDG Contract split: model-specific test holdout metrics: - type: precision value: 1.0 name: Objectness precision - type: recall value: 1.0 name: Objectness recall - type: iou value: 0.885074 name: Positive mean IoU --- # Tiny Vial CNN SDG Objectness v2 Tiny CNN v2 adds an explicit objectness head to the v1 bounding-box baseline. It can return “no object” for negative synthetic frames before producing a single `blue_vial` box. It supports the public [Isaac Sim-to-Real VLA Lab](https://huggingface.co/spaces/junbin666/isaac-sim2real-vla-lab) and uses [`junbin666/isaac-blue-vial-sdg-contract`](https://huggingface.co/datasets/junbin666/isaac-blue-vial-sdg-contract). This is an educational synthetic-data checkpoint, not a production detector or safety claim. ## Test results | Metric | Result | | --- | ---: | | Precision | 1.000 | | Recall | 1.000 | | False-positive rate | 0.000 | | Observed false positives | 0 / 100 negatives | | FPR upper bound (95%, rule of three) | 0.030 | | Accuracy | 1.000 | | Positive mean IoU | 0.885074 | | IoU ≥ 0.5 on positive frames | 1.000 | The model-specific test holdout contains **109 frames: 9 positive and 100 synthetic hard negatives**. Its observed FPR is 0/100. With no observed failures, the rule-of-three gives an approximate one-sided 95% FPR upper bound of **3%**; this is more informative than the earlier two-negative check, but it is not evidence of real-camera robustness. The public dataset repository keeps its original 81/10/9 split. For this v2 release, a separate deterministic 300-frame synthetic hard-negative suite is divided 180/20/100 across train/validation/test. Its eight challenge families include empty scenes, distractor-colored vials, blue geometric objects, occlusion, and multiple blue boxes. Positive frames retain their original source splits, and the 100 test negatives are never used for fitting or threshold selection. ## Architecture - 64×64 RGB input - Three stride-2 convolution layers: 3→12→24→32 - Shared 64-unit representation - One objectness logit plus four sigmoid box values - BCE-with-logits objectness loss - Smooth L1 box loss, applied only to positive samples - 141,357 parameters ## Files - `model.safetensors`: recommended state dictionary - `pytorch_model.pt`: original checkpoint, load with `weights_only=True` - `config.json`: preprocessing, threshold, and output contract - `inference.py`: standalone positive/negative inference - `eval_results.json`: confusion counts and per-frame held-out results - `training_metrics.jsonl`: deterministic training history - `release_report.json`: hashes and package verification ## Inference ```bash pip install -r requirements.txt python inference.py examples/positive-000006.png --weights model.safetensors --output prediction.png python inference.py examples/negative-000200.png --weights model.safetensors --output negative.png ``` The JSON output includes `detected`, `objectness_score`, `threshold`, and an optional pixel-space `bbox`. ## Limitations The training and evaluation images come from small procedural renderers. The checkpoint has not been tested on a real camera, Isaac Replicator output, unfamiliar real containers, or safety-critical robot motion. The expanded hard-negative suite exercises synthetic occlusion and multi-object distractors, but cannot measure real-world domain shift. A robust release still needs real camera evaluation, broader failure-mode coverage, and calibrated uncertainty. ## License Model code and weights use the MIT License. The associated dataset uses CC BY 4.0.