{ "checkpoint": { "path": "joint_root_area_poc_epoch200.pt", "sha256": "1bed00bc8f934243f079592c84f06090d720798f63044ffcb462a11ddf0105f8", "size_bytes": 382445498 }, "config": { "area_lambda": 0.15, "backbone": "facebook/dinov3-vitb16-pretrain-lvd1689m", "batch_size": 2, "classification_positive_weight": 10.0, "classification_probability_threshold": 0.5, "classification_sigma": 3.0, "decoder_activation_checkpointing": true, "density_alpha": 0.5, "derived_polygon_labelme": "tile_1001_0_0_pseudo_area_labelme.json", "epochs": 200, "experiment": "joint-root-area-poc", "freeze_backbone": true, "gradient_accumulation_steps": 2, "image_height": 3943, "image_id": "day2/tiles_png_1001/tile_1001_0_0.png", "image_width": 3797, "inference_patch_size": 512, "inference_stride": 512, "learning_rate": 0.0001, "logical_device": "cuda:0", "match_tolerance_px": 15.0, "patch_count": 64, "patch_size": 512, "peak_min_distance": 8, "physical_gpu": 5, "physical_microbatch_size": 1, "polygon_array_count": 457, "polygon_prediction_count": 401, "polygon_source": "test_tile_1001_0_0.json", "precision": "CUDA autocast float16; GradScaler; losses accumulated as float32 where PyTorch requires", "preprocessing": "RGB; pixels with all channels >=250 filled black; ImageNet normalization", "raw_image": "tile_1001_0_0_raw.png", "root_count": 209, "root_xml": "point_id18_annotations.xml", "run_id": "0003-point18-joint-area-poc", "schema": "wheat-exp.run-config", "schema_version": "1.0.0", "seed": 1001, "split": "row-major edge-push coordinates; first 32 train, last 32 validation", "stride": 512, "train_patch_count": 32, "unseen_image": "/mnt/hdb/chenyizi/sam3-fewshot/data/tile_1020_test/tile_1020_0_0.png", "use_area": true, "validation_patch_count": 32, "weight_decay": 0.0001 }, "epoch_1": { "epoch": 1, "finite": true, "train": { "loss": 1.4028209700281877, "loss_area": 0.9841924272077449, "loss_cls": 0.080084727796077, "loss_density": 0.016705973462740595, "loss_reg": 1.166754387319088 }, "validation": { "loss": 2.1073910218233323, "loss_area": 1.0187577032193076, "loss_cls": 0.0756952810331768, "loss_density": 9.822749692952291e-09, "loss_reg": 1.878882072865963 } }, "epoch_200": { "epoch": 200, "finite": true, "train": { "loss": 0.07707233374471402, "loss_area": 0.17010920215398073, "loss_cls": 0.002606162868971751, "loss_density": 1.155940458440587e-08, "loss_reg": 0.04894978346419521 }, "validation": { "loss": 2.308025994721122, "loss_area": 0.4174362588724989, "loss_cls": 0.06357826597036365, "loss_density": 1.1210296078304881e-08, "loss_reg": 2.1818322725594044 } }, "experiment": "joint-root-area-poc", "history_file": "training_history.json", "limitations": [ "Single selected source tile with a deterministic spatial patch holdout; not independent-image generalization evidence.", "SAM3 polygon arrays are pseudo segmentation used only by the auxiliary area branch.", "No matched point-only baseline was run, so this run makes no area-supervision improvement claim.", "Unseen output is qualitative because no manual roots are available for that image.", "The required optimizer batch size 2 is executed as two size-1 physical microbatches with gradient accumulation because an unrelated co-tenant occupied about 14.7 GiB on physical GPU 5; decoder activation checkpointing and AMP preserve the requested GPU and effective batch without changing source model code." ], "metrics": { "area_auxiliary": { "interpretation": "auxiliary diagnostic against SAM3 pseudo segmentation, not manual GT", "intersection_pixels": 144289, "iou_against_pseudo_area": 0.5008104515273627, "threshold": 0.5, "union_pixels": 288111 }, "evaluation_class": "architecture/behavior POC; not an area-supervision effect comparison", "held_out_manual_root_count": 142, "held_out_prediction_count": 99, "held_out_spatial_region": { "count_error": 43.0, "f1": 0.5477178423236515, "fn": 76, "fp": 33, "precision": 0.6666666666666666, "recall": 0.4647887323943662, "tp": 66 }, "same_tile_full_image": { "count_error": 43.0, "f1": 0.7093333333333333, "fn": 76, "fp": 33, "precision": 0.8012048192771084, "recall": 0.6363636363636364, "tp": 133 } }, "run_id": "0003-point18-joint-area-poc", "schema": "wheat-exp.recipe", "schema_version": "1.0.0", "smoke_command": "cd /mnt/hdb/chenyizi/wheat-detect && source /mnt/hdb/chenyizi/sam3-fewshot/venv/bin/activate && PYTHONPATH=/mnt/hdb/chenyizi/wheat-detect HF_HOME=/mnt/hdb/chenyizi/sam3-fewshot/hf-cache TRANSFORMERS_OFFLINE=1 CUDA_VISIBLE_DEVICES=5 python experiments/joint-root-area-poc/runs/0003-point18-joint-area-poc/run_joint_poc.py --mode smoke", "source_revision": { "git_commit": null, "git_commit_status": "unavailable: remote checkout has no commit object", "repository": "/mnt/hdb/chenyizi/wheat-detect", "source_file_sha256": { "wheat_detect/data/dataset.py": "0401cc3a0a39ab02a3322aa5c68d689c2df4ab79718c7191493b7f70bae8efe2", "wheat_detect/data/preprocessing.py": "fe57174183e5427517c5f3e68077cc226e6ebbf390b8522aedb2140b10c1ab6e", "wheat_detect/evaluation/metrics.py": "0762d8e0aff3d0f170d366b93814ab032a4392ce55b4cf9e8f555c3f3ab45467", "wheat_detect/evaluation/rendering.py": "c4d273e24332666bd1ac909141af4e18eb53ec4023d0fd41f7cb4694e0b6981f", "wheat_detect/losses/counting_loss.py": "3e112a1a861bd47150bfd8b9236c649aeb434f79a303354774b196a76403f4f3", "wheat_detect/models/counting_module.py": "8a33d7510d1f48ec4682dc7ae93ef47c072097a312174fa5bac6ccfdf0c98db6", "wheat_detect/models/decoder.py": "19e61542dc4cba0616435a9b5054db631840ef819bc10fee2aeb982b8f5e378b" }, "source_model_code_modified_by_run": false }, "spec_version": "1.0.0", "status": "complete", "supervision": { "area_target": "raster fills from 457 SAM3 pseudo polygon arrays", "area_valid": true, "classification_target": "manual root Gaussian heatmap", "density_target": "manual root density diagnostic/supporting loss", "polygon_geometry_used_for_point_targets_or_metrics": false, "primary_root_target": "209 manual CVAT wheat points", "regression_target": "manual root offset map" }, "training_command": "cd /mnt/hdb/chenyizi/wheat-detect && source /mnt/hdb/chenyizi/sam3-fewshot/venv/bin/activate && PYTHONPATH=/mnt/hdb/chenyizi/wheat-detect HF_HOME=/mnt/hdb/chenyizi/sam3-fewshot/hf-cache TRANSFORMERS_OFFLINE=1 CUDA_VISIBLE_DEVICES=5 python experiments/joint-root-area-poc/runs/0003-point18-joint-area-poc/run_joint_poc.py --mode train", "unseen_status": "complete_qualitative_only" }