hitit-cuneiform-ocr / code /configs /preprocessing.yaml
savastakan's picture
Initial upload: code + 5 record checkpoints + fuse
f211247 verified
Raw
History Blame Contribute Delete
4.49 kB
# SOTA preprocessing config (v1.0)
# Source: 2024-2026 literature review (cuneiform + historical OCR)
# Applied + recipe-only steps
version: "1.0"
pipeline_hash_algorithm: "sha256" # config + code version hash
# ========== Quality gating (OFFLINE, filter-only) ==========
quality_gates:
blur_laplacian_min_variance: 100.0 # Pech-Pacheco 2000
exposure_mean_min: 20.0 # min brightness (0-255)
exposure_mean_max: 235.0 # max brightness
contrast_std_min: 15.0 # min contrast
resolution_min_w: 32
resolution_min_h: 32
policy: "soft_exclude" # soft: training'de skip, eval'de tut
# ========== Geometric normalization ==========
geometric:
letterbox:
target_size: 224 # DINOv3 / ResNet standardı
margin_ratio: 0.10 # DeepScribe varsayılanı (0.08-0.12)
fill_mode: "median_border" # pad color = tablet surface median
rotation_canonicalization:
enabled: true
candidate_angles: [0, 90, 180, 270] # view-based
use_view_hint: true # tablet_view_fold hint
deskew:
enabled: false # tablet'ler genelde düz
# ========== Image enhancement ==========
enhancement:
clahe:
enabled: true
clip_limit: 2.5 # 2.0-3.0 arası (Bui/Chkeir 2024)
tile_grid: [8, 8]
color_space: "LAB" # L-channel on LAB
conditional: true # sadece blur/dark ise
gamma_correction:
enabled: true
gamma: 1.2
conditional: true
unsharp_mask:
enabled: false # agresif, detaile zarar verir
denoising:
enabled: false # NAFNet recipe (offline pre-compute için)
method: "nafnet" # "nafnet" | "nlm" | "bm3d"
# ========== Binarization (auxiliary channel) ==========
binarization:
enabled: false # opsiyonel auxiliary kanal
method: "sauvola" # "sauvola" | "otsu" | "wolf" | "sauvola_dl"
sauvola:
window_size: 25
k: 0.2
# ========== Background-aware crop ==========
crop:
bbox_expansion_ratio: 0.12 # DeepScribe önerisi
background_fill: "median_border" # crop dışarı taşarsa
preserve_aspect_ratio: true
# ========== Normalization (pixel values) ==========
normalization:
strategy: "dataset_specific" # "imagenet" | "dataset_specific" | "none"
mean: null # offline pass ile hesaplanacak
std: null
channels: 3 # RGB; 4 ile auxiliary MSII/binarization
# ========== Augmentation (train-time, offline pre-compute değil) ==========
augment_train:
elastic_transform:
enabled: true
alpha: 40.0
sigma: 6.0
alpha_affine: 8.0
p: 0.5
grid_distortion:
enabled: true
num_steps: 5
distort_limit: 0.15
p: 0.3
morphological:
enabled: true
ops: ["erode", "dilate"]
kernel_size: 2
p: 0.3
color_jitter:
enabled: true
brightness: 0.2
contrast: 0.2
saturation: 0.1
p: 0.5
horizontal_flip:
enabled: false # sign orientation önemli
mixup:
enabled: true # tail sınıflar için feature-space
alpha: 0.5
cutmix:
enabled: false # bbox context kaybettirir
# ========== Cuneiform-specific (SOTA recipe, offline GPU) ==========
cuneiform_specific:
msii_proxy:
enabled: true # Multi-scale LoG (cheap alternative)
sigmas: [1.0, 2.0, 4.0, 8.0]
channel: "auxiliary" # concat RGB ile 4. kanal
illumination_augment:
enabled: false # Recipe only, Blender/3D gerekir
n_lights: 8
method: "blender_render"
super_resolution:
enabled: false # Real-ESRGAN offline pass
method: "real_esrgan_x2"
min_width_threshold: 256
# ========== Cache ==========
cache:
enabled: true
format: "webdataset_jpeg" # "webdataset_jpeg" | "parquet_bytes"
jpeg_quality: 90
shard_size_mb: 1024
output_dir: "datasets/streaming/preprocessed_224"
# ========== Inference-only ==========
inference:
tta: false # test-time augmentation
multi_scale: [224, 256, 288] # multi-scale ensemble
center_crop: true