junbin666's picture
Evaluate v2 on 100 synthetic hard negatives
61774cf verified
|
Raw History Blame Contribute Delete
4.11 kB
metadata
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
            name: Objectness precision
          - type: recall
            value: 1
            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 and uses 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

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.