PGNet TCL connectivity breaks at large blank gaps, causing detection to
split single-line plates into 2 regions. Eval visualization confirmed
"37도1563" split into "37도"+"1563" at the gap location.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- generate_synthetic.py: plate 전체 box → 글자 실제 좌표 기반 tight polygon으로 변경
(글자 반복 출력·over-segmentation의 근본 원인 해결)
gen_type1/2/_gen_two_line 모두 (plate, label_list) 통일 반환
- tools/make_gt_mat.py: test.txt → ICDAR wordBB 포맷 gt_img_N.mat 생성 스크립트 신규
(E2EMetric seqerr=0.99 고착 문제 해결)
- scripts/run_step1.sh: 데이터 생성 → GT mat 생성 → 학습 3단계로 재구성
NUM_SAMPLES 환경변수로 데이터 수 제어 가능
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Captures the current state (Step1 training in progress), three-tier
environment (Mac/server/container), git+wandb endpoints, operational
commands, and known issues so a fresh agent or workstation can pick up
the work without re-deriving context.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PGNet uses dynamic image sizes per batch (max_text_size=512), which spikes
peak memory above 32GB at batch 32. Settle on 16 — ~2x throughput vs the
default 14 while staying well clear of OOM.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
A freshly recreated ubuntu:24.04 container has no python3.10 yet, so the
script now installs deadsnakes + python3.10 + pip when missing. Step
numbering bumped to 1..8 accordingly.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The previous commit only updated Train.loader.batch_size_per_card; PGProcessTrain
still expected batch_size=14 which would mismatch the dataloader and silently drop samples.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- config: batch_size_per_card 14 -> 32 (5090 32GB headroom)
- setup_server.sh: pin nvidia-cudnn-cu13>=9.17 to match the sm_120 wheel
(without it conv2d hits "Cannot load symbol cublasLtCreate" abort)
- new scripts/recreate_container.sh: one-shot rebuild with --shm-size 8g,
preserves /root/.netrc so wandb auth survives, runs setup_server.sh
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Global.use_wandb: True + top-level wandb.project=kr_lp_pgnet
- Add wandb to setup_server.sh pip install list
User must run `docker exec -it kr_lp_pgnet wandb login` once before
training so the API key lands in /root/.netrc inside the container.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- run_step1.sh: symlinks /workspace/train_data into PaddleOCR, runs
tools/train.py with the step1 pretrain checkpoint, supports DRY_RUN=1
for quick smoke test and EPOCHS=N override
- epoch_num: 200 -> 50 (matches the 50k synthetic budget)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Per-plate HSV V scaling in [0.55, 1.45] for cheap color diversity. Heavy
geometric augmentation belongs in the training transforms (next step) so
each epoch sees a different version, not in synthesis.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Default weights (Type 1/2/3/4 = 0.80/0.05/0.10/0.05) approximate the
real-world mix: ~98% of registered cars are post-2006 single-line, plus
~7.5% commercial yellow. Override via --type_weights when needed. Also
prints per-type counts so the operator can sanity-check distribution.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Forces one image per region key (A..P) on both yellow and green plates.
Filename embeds our guessed Korean region name so a human reviewer can
compare the rendered region tile.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- generate_synthetic.py: Type 1/2 (one-line) and Type 3/4 (two-line) supported
- Hangul char map covers all 37 glyphs available in the asset bundle
- Two-line plates emit two separate PGNet polygons (top region+digits, bottom char+digits)
- REGION_MAP is a best-effort guess and flagged for visual verification
- Optional --dict flag prints coverage diagnostics
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Install libgl1 and other OpenCV runtime deps via apt
- Skip paddle/blinker/opencv lines from PaddleOCR requirements (they conflict with the sm_120 wheel or system packages)
- Force opencv>=4.10 (numpy 2 ABI) then pin numpy<2 (imgaug uses removed np.sctypes)
- Smoke-test PGNet module imports before declaring success
Verified end-to-end on RTX 5090 + paddle 3.3.0.dev20251209.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Clones qjadud1994/Korean-license-plate-Generator (MIT) on the server
- Provides plate backgrounds and pre-rendered glyph PNGs, avoiding font licensing
- Asset directory ignored from this repo
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>