| { | |
| "model_type": "phpwind-captcha-ocr", | |
| "task": "captcha-ocr", | |
| "framework": "pytorch", | |
| "format": "onnx", | |
| "onnx_opsets": [18], | |
| "num_params": 988786, | |
| "input": { | |
| "name": "input", | |
| "shape": ["batch", 3, 64, 160], | |
| "dtype": "float32", | |
| "range": [0.0, 1.0] | |
| }, | |
| "output": { | |
| "name": "logits", | |
| "shape": ["batch", 4, 10], | |
| "dtype": "float32" | |
| }, | |
| "task_spec": { | |
| "num_digits": 4, | |
| "charset": "0123456789", | |
| "decode": "argmax over last dim per position" | |
| }, | |
| "preprocessing": { | |
| "mode": "RGB", | |
| "resize": [160, 64], | |
| "resample": "BILINEAR", | |
| "denoise": false, | |
| "normalize": "divide by 255" | |
| }, | |
| "training": { | |
| "dataset_size": 997, | |
| "label_source": "human", | |
| "epochs": 500, | |
| "best_epoch": 50, | |
| "optimizer": "Adam", | |
| "learning_rate": 0.001, | |
| "lr_scheduler": "ReduceLROnPlateau(patience=10, factor=0.5)", | |
| "loss": "sum of 4 CrossEntropy", | |
| "augmentation": "rotation ±6 deg, scale 0.92-1.08, translate ±3px, no gaussian noise", | |
| "val_split": 0.08 | |
| }, | |
| "metrics": { | |
| "val_accuracy": 0.8861 | |
| } | |
| } | |