CAD symbol embedder: ConvNeXt-V2 Tiny, fine-tune SymRet (xoay + crop nhỏ + từ chối non-symbol)

Fine-tune từ sonspeed/symbol-embedder-convnextv2-tiny-e12 (cùng kiến trúc, cùng input 128/112, cùng tiền xử lý). Trọng số EMA của epoch 2/4 của run ft_rot_oe.

Mục tiêu: e12 xếp hạng tốt trên dataset gốc nhưng trong SymRet nhận nhầm nhiều crop không phải ký hiệu. Nguyên nhân: e12 không thấy góc xoay 90° (SymRet lấy trung bình 4 góc xoay), không thấy crop nhỏ (~38 px trên bản vẽ thật) và không thấy ảnh mờ / stretch.

Kết quả (chỉ model, không dùng full inference)

View symret_rot4: raw+stretch, letterbox 112 + pad 8 → 128, trung bình embedding 4 góc xoay 90°.

chỉ số e12 bản này
og validation top-1 / mAP 0.9962 / 0.9777 0.9955 / 0.9777
og test top-1 / mAP 0.9894 / 0.9783 0.9877 / 0.9768
crop thật, 1-NN chéo project, top-1 0.9662 0.9817
crop thật, macro (lớp có ≥2 project) 0.9357 0.9859
AUROC đúng vs non-symbol 0.9842 0.9862
@TPR90: non-symbol nhận nhầm (/2660) 55 34
@TPR90: precision 0.9870 0.9898
@TPR95: non-symbol nhận nhầm (/2660) 203 102
@TPR95: precision 0.9576 0.9727
  • Crop thật: 5.512 crop COCO của 20 project, gallery = template + crop của các project khác (leave-one-project-out).
  • Non-symbol: 2.660 cửa sổ ngẫu nhiên trên trang thật, không chạm box nào.
  • Hạn chế: số lượng wrong-class vượt ngưỡng tăng (TPR95: 38 so với 17), CF vẫn không tách được khỏi TO-W, một seed, tốc độ CPU như e12. Chi tiết đầy đủ ở eval/model_only.json, so với eval/model_only_e12_baseline.json.

Tiền xử lý

Giống e12: RGB → letterbox nền trắng, cạnh dài 112 (cubic khi phóng, area khi thu), giữa canvas 128×128 → /255 → mean [0.485, 0.456, 0.406] std [0.229, 0.224, 0.225]. Khuyến nghị thêm: contrast stretch xám p1–p99 → 0–255 và TTA trung bình 4 góc xoay 90° (model được train cho cả hai). Code ONNX y như README của e12, chỉ đổi tên repo; input image (N, 3, 128, 128), output (N, 256) đã L2-norm.

Fine-tune

  • Khởi tạo từ EMA của e12; sub-center (k=3) khởi tạo bằng k-means trên embedding của e12.
  • Loss: sub-center CosFace (s=32, m=0.22) + 0.5·Multi-Similarity + 0.5·outlier exposure (non-symbol tổng hợp: mảnh ký hiệu 12–35 %, chữ, nét line/lưới; đẩy cos tới mọi proxy xuống dưới 0.35).
  • Augment: xoay 90° ngẫu nhiên, xoay nhỏ ±10°, zoom-out 0.7–1.0, thu nhỏ 20–96 px, partial fade, contrast stretch, noise/blur kiểu SymRet H3b, cùng morph / border erase / jitter / JPEG của e12.
  • P×K = 24×4, AdamW (backbone 8e-5, head 4e-4, proxy 2e-3), warmup 300, cosine, EMA 0.999, AMP fp16. 4 epoch, giữ epoch 2 (epoch 3–4 overfit vào negative tổng hợp, từ chối non-symbol thật kém đi).
  • Dữ liệu: cùng dataset gốc và chia lớp với e12 (475 lớp train).

File

  • model.safetensors, config.json (thêm finetune, eval_model_only), model.onnx, model.onnx.json.
  • training/epoch-02.pt (ema, config, index_to_label), metrics.jsonl, train.log.
  • eval/model_only.json, eval/model_only_e12_baseline.json.
Downloads last month
15
Safetensors
Model size
28.6M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sonspeed/symbol-embedder-convnextv2-tiny-symret-ft

Quantized
(1)
this model