Image-to-Text
PyTorch
Safetensors
PEFT
English
remote-sensing
satellite-imagery
earth-observation
change-detection
visual-grounding
image-captioning
visual-question-answering
optical-sar-fusion
sar
multimodal
lora
Instructions to use thundercode/SatQuery with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use thundercode/SatQuery with PEFT:
Task type is invalid.
- Notebooks
- Google Colab
- Kaggle
| """Verify the Hugging Face release: re-download every uploaded file and compare sha256 + size. | |
| This is an INDEPENDENT check — it does not trust the upload step. It reads the manifest, downloads | |
| each artifact from the Hub over direct HTTPS (proxies disabled, which matters in the authoring | |
| sandbox), hashes the bytes it received, and compares against the locally-computed hash. | |
| Note: `hf_hub_download` is deliberately NOT used here — in this environment it returned an empty | |
| file (sha256 e3b0c442...), which would have produced a false FAIL. Direct HTTPS is the honest check. | |
| """ | |
| import hashlib | |
| import json | |
| import os | |
| import sys | |
| import urllib.request | |
| REPO_ID = "thundercode/SatQuery" | |
| HERE = os.path.dirname(os.path.abspath(__file__)) | |
| REPO = os.path.abspath(os.path.join(HERE, "..", "repo")) | |
| SRC = r"C:/Users/anish/satquery-ai" | |
| def sha256_of(path, chunk=1 << 20): | |
| h = hashlib.sha256() | |
| with open(path, "rb") as fh: | |
| while True: | |
| b = fh.read(chunk) | |
| if not b: | |
| break | |
| h.update(b) | |
| return h.hexdigest() | |
| def sha256_of_bytes(b): | |
| return hashlib.sha256(b).hexdigest() | |
| def opener_no_proxy(): | |
| return urllib.request.build_opener(urllib.request.ProxyHandler({})) | |
| def fetch(url, token, opener): | |
| req = urllib.request.Request(url, headers={"Authorization": f"Bearer {token}"}) | |
| with opener.open(req, timeout=120) as r: | |
| return r.read() | |
| def main(): | |
| token = os.environ.get("HF_TOKEN") | |
| if not token: | |
| print("ERROR: HF_TOKEN not set.") | |
| return 2 | |
| opener = opener_no_proxy() | |
| # repo metadata (sizes + listing) over the API | |
| api = json.loads( | |
| fetch(f"https://huggingface.co/api/models/{REPO_ID}?blobs=true", token, opener).decode() | |
| ) | |
| print(f"repo : {api.get('id')}") | |
| print(f"private : {api.get('private')}") | |
| print(f"sha (HEAD) : {api.get('sha')}") | |
| print(f"lastModified : {api.get('lastModified')}") | |
| remote = {s["rfilename"]: s for s in (api.get("siblings") or [])} | |
| print(f"files on Hub : {len(remote)}") | |
| print() | |
| manifest = json.load(open(os.path.join(REPO, "models", "manifest.json"), encoding="utf-8")) | |
| ok = bad = 0 | |
| print(f"{'STATUS':7} {'hf_path':40} {'remote bytes':>14} {'local bytes':>13}") | |
| print("-" * 82) | |
| for a in manifest["artifacts"]: | |
| hf_path = a["hf_path"] | |
| local = os.path.join(SRC, a["path"]) | |
| local_bytes = os.path.getsize(local) | |
| local_hash = sha256_of(local) | |
| s = remote.get(hf_path) | |
| if s is None: | |
| print(f"{'MISSING':7} {hf_path:40} {'-':>14} {local_bytes:>13,}") | |
| bad += 1 | |
| continue | |
| remote_bytes = s.get("size") | |
| try: | |
| content = fetch( | |
| f"https://huggingface.co/{REPO_ID}/resolve/main/{hf_path}", token, opener | |
| ) | |
| except Exception as e: | |
| print(f"{'ERROR':7} {hf_path:40} {'-':>14} {local_bytes:>13,} {e}") | |
| bad += 1 | |
| continue | |
| remote_hash = sha256_of_bytes(content) | |
| size_ok = remote_bytes == local_bytes == len(content) | |
| hash_ok = remote_hash == local_hash | |
| status = "MATCH" if (size_ok and hash_ok) else "DIFFER" | |
| ok += status == "MATCH" | |
| bad += status != "MATCH" | |
| print(f"{status:7} {hf_path:40} {remote_bytes:>14,} {local_bytes:>13,}") | |
| if not hash_ok: | |
| print(f" local sha256 {local_hash}") | |
| print(f" remote sha256 {remote_hash}") | |
| print() | |
| print(f"artifacts verified : {ok}") | |
| print(f"artifacts failed : {bad}") | |
| print() | |
| for name in ["README.md", "MODEL_CARD.md", "models/manifest.json", "models/checksums.sha256"]: | |
| print(f" {'OK ' if name in remote else 'MISS'} {name}") | |
| return 0 if bad == 0 else 1 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |