{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":112509,"databundleVersionId":14254895,"sourceType":"competition"}],"dockerImageVersionId":31236,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# === NOTEBOOK: DINOV3 + SIGLIP DOWNLOADER (FAIL-SAFE) ===\n\nimport os\nimport torch\nimport timm\n\nfrom transformers import (\n    AutoModel,\n    AutoProcessor,\n    AutoTokenizer\n)\n\n# =====================================================\n# 1. DOWNLOAD & SAVE SIGLIP (FULL HF STRUCTURE)\n# =====================================================\n\nprint(\"⬇️ Downloading SigLIP...\")\n\nsiglip_name = \"google/siglip-so400m-patch14-384\"\nsiglip_dir = \"./siglip_model\"\nos.makedirs(siglip_dir, exist_ok=True)\n\nmodel = AutoModel.from_pretrained(siglip_name)\nprocessor = AutoProcessor.from_pretrained(siglip_name)\ntokenizer = AutoTokenizer.from_pretrained(siglip_name)\n\nmodel.save_pretrained(siglip_dir)\nprocessor.save_pretrained(siglip_dir)\ntokenizer.save_pretrained(siglip_dir)\n\nprint(f\"✅ SigLIP saved to {siglip_dir}\")\n\n# =====================================================\n# 2. DOWNLOAD & SAVE DINOv3 (TIMM)\n# =====================================================\n\nprint(\"\\n⬇️ Downloading DinoV3...\")\n\ndino_dir = \"./dino_model\"\nos.makedirs(dino_dir, exist_ok=True)\ndino_path = os.path.join(dino_dir, \"dino_weights.pth\")\n\nmodel_name = \"vit_huge_plus_patch16_dinov3.lvd1689m\"\n\ntry:\n    model = timm.create_model(\n        model_name,\n        pretrained=True,\n        checkpoint_path=\"\",   # force fresh load\n    )\n\n    torch.save(model.state_dict(), dino_path)\n\n    size_gb = os.path.getsize(dino_path) / (1024 ** 3)\n\n    print(\"✅ DinoV3 downloaded successfully\")\n    print(f\"📁 Path: {dino_path}\")\n    print(f\"📊 Size: {size_gb:.2f} GB\")\n\nexcept Exception as e:\n    print(\"❌ DinoV3 download failed\")\n    raise e\n\n# =====================================================\n# 3. METADATA FILE (DATASET VISIBILITY)\n# =====================================================\n\nwith open(os.path.join(dino_dir, \"README.txt\"), \"w\") as f:\n    f.write(\n        \"DinoV3 ViT-H/16 weights\\n\"\n        \"Model: vit_huge_plus_patch16_dinov3.lvd1689m\\n\"\n        \"Source: timm\\n\"\n        \"Use: CSIRO Biomass Project\\n\"\n    )\n\nprint(\"\\n🚀 ACTION REQUIRED:\")\nprint(\"1. Open the 'Output' panel.\")\nprint(\"2. You should see:\")\nprint(\"   - dino_model/\")\nprint(\"   - siglip_model/\")\nprint(\"3. Click 'Create New Dataset'\")\nprint(\"4. Suggested name: csiro-vision-weights\")\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"outputs":[],"execution_count":null}]}