litert-models / conversion /check_dfine_final.py
unicorn who dev
Complete FireViewer Android learning SDK, source and verification records
dee7f43 verified
Raw History Blame Contribute Delete
1.75 kB
import json,hashlib
from pathlib import Path
import onnxruntime as ort,numpy as np
from ai_edge_litert.interpreter import Interpreter,OpResolverType
r=Path('/workspace/vds-litert-batch2');d=r/'learning-backbones/fireviewer_dfine_m_strict_v1';p=d/'model-protected.tflite'
options=ort.SessionOptions();options.intra_op_num_threads=6
ref=ort.InferenceSession(str(d/'raw-onnx/raw-original.onnx'),sess_options=options,providers=['CPUExecutionProvider'])
i=Interpreter(model_path=str(p),num_threads=6,experimental_op_resolver_type=OpResolverType.BUILTIN_WITHOUT_DEFAULT_DELEGATES);i.allocate_tensors();errors=[]
for seed in (842,843,844):
x=np.random.default_rng(seed).uniform(0,1,(1,3,704,704)).astype(np.float32)
reference=ref.run(None,{'images':x});i.set_tensor(i.get_input_details()[0]['index'],x);i.invoke()
for expected,detail in zip(reference,i.get_output_details()):
actual=i.get_tensor(detail['index']);np.testing.assert_allclose(actual,expected,atol=2e-3,rtol=2e-3);errors.append(float(np.max(np.abs(actual-expected))))
report={'key':'fireviewer_dfine_m_strict_v1','phase':'validated_frozen_component','upstream_onnx_parity_passed':True,'backbone':str(p),'source_sha256':hashlib.sha256((r/'models/upstream/fireviewer_dfine_m_strict_v1/model.onnx').read_bytes()).hexdigest(),'sha256':hashlib.sha256(p.read_bytes()).hexdigest(),'input_shape':[1,3,704,704],'outputs':[{'index':n,'shape':list(map(int,o['shape']))} for n,o in enumerate(i.get_output_details())],'max_abs_errors':errors,'seeds':[842,843,844],'atol':2e-3,'rtol':2e-3,'preserve_all_tensors':False,'arena_protection':json.loads((d/'arena-protection.json').read_text())}
(d/'parity.json').write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report),flush=True)