| --- |
| 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` |
|
|