picotrust / v2 /picotrust_v2.yaml
vadishev's picture
Upload v2/picotrust_v2.yaml with huggingface_hub
bb68a94 verified
experiment_name: picotrust_v2
model:
type: picotrust
encoder_size: 512
decoder_size: 256 # Proven 256 decoder; trainer downsamples 512β†’256
data:
source: folder
path: ./data/train
batch_size: 4
training:
num_steps: 200000
lr: 0.0001
num_bits: 100
image_size: 512
warmup_steps: 500
no_im_loss_steps: 10000 # 10k steps pure message β€” establish communication first
generator_grad_clip: 0.25
stn_lr_scale: 0.01
borders: black
rnd_trans: 0.10
rnd_trans_ramp: 10000
phase2_step: 60000
phase2_decoder_lr_scale: 0.1
residual_strength: 1.0 # Start unbounded β€” let encoder-decoder bootstrap
residual_strength_anneal_target: 0.03 # Target Β±0.03 for ~38+ dB PSNR
residual_strength_anneal_start: 10000 # Start when image losses activate
residual_strength_anneal_steps: 60000 # Slow squeeze 1.0β†’0.03 over 60k steps
loss:
message:
scale: 5.0
ramp_steps: 1
l2:
scale: 1.5
ramp_steps: 50000 # Slow squeeze β€” give encoder time to learn compact embedding
lpips:
scale: 1.0
ramp_steps: 50000
ffl:
scale: 1.0
ramp_steps: 50000
delay_steps: 30000
# chroma: not needed β€” grayscale residual (1-channel E_post) eliminates colour shifts by construction
# mask_reg: not needed β€” bounded residual handles quality guarantee
message_loss_type: mse
l2_edge_gain: 0.0 # Disabled β€” was dominating loss, forcing content-agnostic residual
use_border_falloff: true
gan_config:
enabled: true
discriminator_lr: 0.00001
g_loss_scale: 1.0
g_loss_ramp_steps: 20000
distortion:
strategy: curriculum
perspective:
strength: 0.1
ramp_steps: 10000
brightness:
strength: 0.3
ramp_steps: 1000
saturation:
strength: 1.0
ramp_steps: 1000
hue:
strength: 0.1
ramp_steps: 1000
noise:
strength: 0.02
ramp_steps: 1000
jpeg_quality:
strength: 25
ramp_steps: 1000
enable_jpeg: true
enable_blur: true
checkpoint:
dir: checkpoints
save_every_steps: 10000
keep_last: 3
logging:
backends: [console, tensorboard]
log_every_steps: 100