wheat-point-detect / RECIPE.json
Samuka007's picture
Add joint-root-area POC checkpoint (epoch 200) with full run provenance
ac7cafe verified
Raw History Blame Contribute Delete
7.08 kB
{
"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"
}