Delete raven/cli.py
Browse files- raven/cli.py +0 -87
raven/cli.py
DELETED
|
@@ -1,87 +0,0 @@
|
|
| 1 |
-
from __future__ import annotations
|
| 2 |
-
import argparse,json
|
| 3 |
-
from pathlib import Path
|
| 4 |
-
import torch
|
| 5 |
-
from .config import load_config
|
| 6 |
-
from .utils import read_jsonl
|
| 7 |
-
from .manifest import build_manifest,manifest_summary
|
| 8 |
-
from .audit import audit_manifest
|
| 9 |
-
from .specialists import train_real_specialists
|
| 10 |
-
from .cache import cache_features
|
| 11 |
-
from .training import train_fusion
|
| 12 |
-
from .evaluate import evaluate_cache
|
| 13 |
-
from .inference import infer_image
|
| 14 |
-
from .hard_mining import mine_hard
|
| 15 |
-
from .onnx_export import export_fusion,export_foundation
|
| 16 |
-
from .directml_inference import infer_directml
|
| 17 |
-
from .parquet_io import import_parquet,inspect_parquet
|
| 18 |
-
from .model import RavenFusion
|
| 19 |
-
from .diagnose import diagnose
|
| 20 |
-
from .benchmark import benchmark_foundation
|
| 21 |
-
from .budget import plan_budget
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
def pjson(x): print(json.dumps(x,indent=2,ensure_ascii=False))
|
| 25 |
-
|
| 26 |
-
def cmd_build(a):
|
| 27 |
-
cfg=load_config(a.config); mc=cfg.get("manifest",{})
|
| 28 |
-
rows=build_manifest(
|
| 29 |
-
a.real_dir,a.ai_dir,a.out,a.holdout_source,
|
| 30 |
-
a.val if a.val is not None else mc.get("val_fraction",.15),
|
| 31 |
-
a.real_test if a.real_test is not None else mc.get("real_test_fraction",.15),
|
| 32 |
-
a.dedupe_distance if a.dedupe_distance is not None else mc.get("dedupe_hamming_distance",3),
|
| 33 |
-
a.parquet_cache_dir,
|
| 34 |
-
a.real_parquet_image_column,a.real_parquet_source_column,
|
| 35 |
-
a.ai_parquet_image_column,a.ai_parquet_source_column,
|
| 36 |
-
a.real_source_name if getattr(a,"real_source_name",None) else mc.get("real_source_name"),
|
| 37 |
-
a.ai_source_name if getattr(a,"ai_source_name",None) else mc.get("ai_source_name"),
|
| 38 |
-
); print(manifest_summary(rows))
|
| 39 |
-
def cmd_report(a): print(manifest_summary(read_jsonl(a.manifest)))
|
| 40 |
-
def cmd_audit(a): pjson(audit_manifest(read_jsonl(a.manifest), load_config(a.config) if getattr(a,"config",None) else None))
|
| 41 |
-
def cmd_pretrain(a): pjson(train_real_specialists(read_jsonl(a.manifest),load_config(a.config),a.out))
|
| 42 |
-
def cmd_cache(a): pjson(cache_features(read_jsonl(a.manifest),load_config(a.config),a.specialists,a.out,a.augment_copies))
|
| 43 |
-
def cmd_train(a): pjson(train_fusion(a.cache,load_config(a.config),a.out))
|
| 44 |
-
def cmd_eval(a):
|
| 45 |
-
r=evaluate_cache(a.model,a.cache,a.split); pjson({"total":r["total"],"by_source":r["by_source"],"by_light":r["by_light"]})
|
| 46 |
-
if a.report_json: Path(a.report_json).write_text(json.dumps(r,indent=2,ensure_ascii=False),encoding="utf-8")
|
| 47 |
-
def cmd_infer(a): pjson(infer_image(a.model,a.image))
|
| 48 |
-
def cmd_mine(a): pjson(mine_hard(a.model,a.cache,a.out,a.split,a.confidence))
|
| 49 |
-
def cmd_expf(a): print(export_fusion(a.model,a.out))
|
| 50 |
-
def cmd_expb(a): print(export_foundation(a.model,a.out))
|
| 51 |
-
def cmd_dml(a): pjson(infer_directml(a.model,a.foundation_onnx,a.fusion_onnx,a.image,a.cpu_only))
|
| 52 |
-
def cmd_parquet(a): pjson(import_parquet(a.parquet,a.out_dir,a.label,a.source,a.manifest_out,a.image_column))
|
| 53 |
-
def cmd_parquet_info(a): pjson(inspect_parquet(a.parquet))
|
| 54 |
-
def cmd_diag(a): pjson(diagnose())
|
| 55 |
-
def cmd_bench(a): pjson(benchmark_foundation(load_config(a.config),a.accelerator,a.loops))
|
| 56 |
-
def cmd_budget(a): pjson(plan_budget(a.manifest,a.config,a.out,a.target_hours,a.min_hours,a.max_hours,a.accelerator,a.loops))
|
| 57 |
-
|
| 58 |
-
def cmd_inspect(a):
|
| 59 |
-
ck=torch.load(a.model,map_location="cpu",weights_only=False); m=RavenFusion(ck["dims"],len(ck.get("ai_source_map",{})),len(ck.get("real_source_map",{}))); total=sum(p.numel() for p in m.parameters()); trainable=sum(p.numel() for p in m.parameters() if p.requires_grad); pjson({"fusion_parameters_per_member":total,"fusion_trainable_per_member":trainable,"ensemble_members":len(ck["ensemble_states"]),"foundation_backend":ck["foundation_backend"],"foundation_parameters_not_stored_in_fusion_count":True,"calibration_prior":"50:50 REAL/AI","validation_metrics":ck.get("validation_metrics")})
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
def parser():
|
| 63 |
-
p=argparse.ArgumentParser(prog="RAVEN-F2K",description="Budget-adaptive AI-generated image detector optimized for i3-12100F / 16GB / RX 570")
|
| 64 |
-
s=p.add_subparsers(dest="cmd",required=True)
|
| 65 |
-
q=s.add_parser("build-manifest"); q.add_argument("--real-dir",required=True,help="REAL image directory OR a .parquet file; directories may also contain parquet files"); q.add_argument("--ai-dir",required=True,help="AI image directory OR a .parquet file; directories may also contain parquet files"); q.add_argument("--out",default="manifest.jsonl"); q.add_argument("--config",default="configs/raven_f2k_rx570.yaml"); q.add_argument("--holdout-source",nargs="*",default=[]); q.add_argument("--ai-source-name",help="Force every AI file to one generator/source label, e.g. gpt-image-2. Original folder label is preserved as raw_source."); q.add_argument("--real-source-name",help="Optional forced REAL source label."); q.add_argument("--val",type=float); q.add_argument("--real-test",type=float); q.add_argument("--dedupe-distance",type=int); q.add_argument("--parquet-cache-dir",default="cache/parquet_materialized"); q.add_argument("--real-parquet-image-column"); q.add_argument("--real-parquet-source-column"); q.add_argument("--ai-parquet-image-column"); q.add_argument("--ai-parquet-source-column"); q.set_defaults(func=cmd_build)
|
| 66 |
-
q=s.add_parser("report"); q.add_argument("--manifest",required=True); q.set_defaults(func=cmd_report)
|
| 67 |
-
q=s.add_parser("audit"); q.add_argument("--manifest",required=True); q.add_argument("--config",default="configs/raven_f2k_rx570_3to6h.yaml"); q.set_defaults(func=cmd_audit)
|
| 68 |
-
q=s.add_parser("pretrain-real"); q.add_argument("--manifest",required=True); q.add_argument("--config",default="configs/raven_f2k_rx570.yaml"); q.add_argument("--out",default="models/real_specialists.pt"); q.set_defaults(func=cmd_pretrain)
|
| 69 |
-
q=s.add_parser("cache-features"); q.add_argument("--manifest",required=True); q.add_argument("--specialists",default="models/real_specialists.pt"); q.add_argument("--config",default="configs/raven_f2k_rx570.yaml"); q.add_argument("--out",default="cache/features.npz"); q.add_argument("--augment-copies",type=int,default=1); q.set_defaults(func=cmd_cache)
|
| 70 |
-
q=s.add_parser("train"); q.add_argument("--cache",default="cache/features.npz"); q.add_argument("--config",default="configs/raven_f2k_rx570.yaml"); q.add_argument("--out",default="models/raven_f2k.pt"); q.set_defaults(func=cmd_train)
|
| 71 |
-
q=s.add_parser("eval"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--cache",default="cache/features.npz"); q.add_argument("--split",default="test"); q.add_argument("--report-json",default="outputs/eval.json"); q.set_defaults(func=cmd_eval)
|
| 72 |
-
q=s.add_parser("infer"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--image",required=True); q.set_defaults(func=cmd_infer)
|
| 73 |
-
q=s.add_parser("mine-hard"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--cache",default="cache/features.npz"); q.add_argument("--split",default="test"); q.add_argument("--confidence",type=float,default=.80); q.add_argument("--out",default="outputs/hard.jsonl"); q.set_defaults(func=cmd_mine)
|
| 74 |
-
q=s.add_parser("export-fusion-onnx"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--out",default="models/raven_fusion.onnx"); q.set_defaults(func=cmd_expf)
|
| 75 |
-
q=s.add_parser("export-foundation-onnx"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--out",default="models/raven_foundation.onnx"); q.set_defaults(func=cmd_expb)
|
| 76 |
-
q=s.add_parser("infer-directml"); q.add_argument("--model",default="models/raven_f2k.pt"); q.add_argument("--foundation-onnx",default="models/raven_foundation.onnx"); q.add_argument("--fusion-onnx",default="models/raven_fusion.onnx"); q.add_argument("--image",required=True); q.add_argument("--cpu-only",action="store_true"); q.set_defaults(func=cmd_dml)
|
| 77 |
-
q=s.add_parser("import-parquet"); q.add_argument("--parquet",required=True); q.add_argument("--out-dir",required=True); q.add_argument("--label",type=int,choices=[0,1],required=True); q.add_argument("--source",required=True); q.add_argument("--manifest-out",default="outputs/parquet_import.jsonl"); q.add_argument("--image-column",default="image"); q.set_defaults(func=cmd_parquet)
|
| 78 |
-
q=s.add_parser("parquet-info"); q.add_argument("--parquet",required=True); q.set_defaults(func=cmd_parquet_info)
|
| 79 |
-
q=s.add_parser("inspect-model"); q.add_argument("--model",default="models/raven_f2k.pt"); q.set_defaults(func=cmd_inspect)
|
| 80 |
-
q=s.add_parser("diagnose"); q.set_defaults(func=cmd_diag)
|
| 81 |
-
q=s.add_parser("benchmark-foundation"); q.add_argument("--config",default="configs/raven_f2k_rx570.yaml"); q.add_argument("--accelerator",choices=["auto","directml","openvino","torch"],default="auto"); q.add_argument("--loops",type=int,default=5); q.set_defaults(func=cmd_bench)
|
| 82 |
-
q=s.add_parser("plan-budget"); q.add_argument("--manifest",required=True); q.add_argument("--config",default="configs/raven_f2k_rx570_3to6h.yaml"); q.add_argument("--out",default="configs/auto_3to6h.yaml"); q.add_argument("--target-hours",type=float,default=4.5); q.add_argument("--min-hours",type=float,default=3.0); q.add_argument("--max-hours",type=float,default=6.0); q.add_argument("--accelerator",choices=["auto","directml","openvino","torch"],default="auto"); q.add_argument("--loops",type=int,default=4); q.set_defaults(func=cmd_budget)
|
| 83 |
-
return p
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
def main():
|
| 87 |
-
a=parser().parse_args(); a.func(a)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|