--- license: apache-2.0 tags: [nom, han-nom, character-detection, centernet, ocr] --- # nom-char-det — bộ dò ký tự chữ Nôm (CenterNet ResNet34 + FPN + seam) ⚠️ **Repo này chứa NHIỀU checkpoint KHÁC NHAU. Đọc kỹ trước khi dùng.** | tệp | epoch | img | val F1 | dùng ở đâu | |---|---|---|---|---| | **`detector_r34.PROD_e38_img1024.best.pt`** | **38** | **1024** | **0,8436** | 🟢 **BẢN ĐANG CHẠY SẢN XUẤT** trong GanNhanOCR | | `detector_r34.best.pt` | 41 | 1280 | 0,8298 | bản huấn luyện khác — **KHÔNG** phải bản sản xuất | | `detector_r34.pt` | — | — | — | last checkpoint của lần huấn luyện đó | | `detector.best.pt`, `detector.pt` | — | — | — | thế hệ cũ hơn (kiến trúc khác) | ## Vì sao phải phân biệt `detector_r34.best.pt` ở đây và bản sản xuất **có cùng tên, cùng kích thước 86.496.787 byte, nhưng là HAI MÔ HÌNH KHÁC NHAU** — đối chiếu 259/259 tensor đều khác. Nguy hiểm hơn: `train_crop/infer_centernet.py` lấy độ phân giải suy luận **từ chính checkpoint** (`self.img = d.get('img', img)`), nên thay nhầm sẽ letterbox ở 1280 thay vì 1024 và cho ra hộp khác — **mà không báo lỗi gì**. ## Vai trò trong pipeline Bộ dò này cấp **44,62% toàn bộ hộp ký tự** của bộ nhãn; 55,38% còn lại là hộp midpoint sinh từ công thức bước lặp. Mất nó là **không dựng lại được** bộ nhãn. ## Xác minh trước khi dùng ```python import torch d = torch.load("detector_r34.PROD_e38_img1024.best.pt", map_location="cpu", weights_only=False) assert d["epoch"] == 38 and d["img"] == 1024 print(d["val"]) # {'F1': 0.8436, 'P': 0.7679, 'R': 0.936, ...} ``` sha256: `2c119689debfff01a81fee6bf198181c47fe8ab3ccb1eeaa6b576539dd344694`