pcr12 commited on
Commit
59bb9e8
Β·
verified Β·
1 Parent(s): 2c45f68

Upload folder using huggingface_hub

Browse files
README.md ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language: en
3
+ tags:
4
+ - ad-creative
5
+ - ctr-prediction
6
+ - survival-analysis
7
+ - multi-task-learning
8
+ - clip
9
+ - fatigue-prediction
10
+ license: mit
11
+ ---
12
+
13
+ # Creative Intelligence Scorer
14
+
15
+ **Multi-Task Creative Lifespan Prediction** β€” predicts ad creative CTR score and
16
+ fatigue half-life from a raw image using a frozen CLIP backbone and a trainable
17
+ multi-task head.
18
+
19
+ ## Architecture
20
+
21
+ ```
22
+ Input image (224Γ—224 RGB)
23
+ ↓
24
+ [FROZEN] CLIP-ViT-B/32 (openai/clip-vit-base-patch32)
25
+ ↓ 512-dim embedding
26
+ Projection: Linear(512β†’256) β†’ ReLU β†’ Dropout(0.2)
27
+ ↓ 256-dim shared representation
28
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
29
+ ↓ ↓
30
+ CTR head Fatigue head
31
+ Linear(256β†’1) Linear(256β†’2)
32
+ Sigmoid Weibull params (log_scale, log_shape)
33
+ ```
34
+
35
+ Loss = 0.5 Γ— BCELoss(ctr) + 0.5 Γ— WeibullNLLLoss(fatigue, right-censored)
36
+
37
+ ## Training data
38
+
39
+ - Meta Ad Library (Apify scrape): 3,502 real ad images β€” gaming, ecommerce, finance verticals
40
+ - PIL-generated synthetic ads: 18,746 images with rule-based CTR and half-life labels
41
+ - Total: 22,248 images | 80/10/10 train/val/test split
42
+
43
+ ## Metrics (test set)
44
+
45
+ | Metric | Value | Target |
46
+ |--------|-------|--------|
47
+ | Spearman r (CTR ranking) | TBD | > 0.30 |
48
+ | MAE (CTR calibration) | TBD | < 0.15 |
49
+
50
+ ## Limitations
51
+
52
+ - **CTR labels are proxy scores**, not real click-through rates β€” derived from ad
53
+ activity signals, not A/B test data.
54
+ - **GradCAM is a spatial approximation** β€” CLIP's pooler_output discards spatial
55
+ structure; the 16Γ—16 heatmap is gradient-weighted feature attribution on the
56
+ projection layer, not true spatial GradCAM.
57
+ - Trained on a dataset with known label imbalance (wear-out >> cut-out).
58
+
59
+ ## Intended use
60
+
61
+ Portfolio project demonstrating Multi-Task Creative Lifespan Prediction for ad
62
+ creative scoring. Not intended for production ad serving decisions.
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:aeb90d68b9685c5d2a0d84416f789b9ea31934025879611af9118ca59aabfcf7
3
+ size 350637292
processor_config.json ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "image_processor": {
3
+ "crop_size": {
4
+ "height": 224,
5
+ "width": 224
6
+ },
7
+ "do_center_crop": true,
8
+ "do_convert_rgb": true,
9
+ "do_normalize": true,
10
+ "do_rescale": true,
11
+ "do_resize": true,
12
+ "image_mean": [
13
+ 0.48145466,
14
+ 0.4578275,
15
+ 0.40821073
16
+ ],
17
+ "image_processor_type": "CLIPImageProcessor",
18
+ "image_std": [
19
+ 0.26862954,
20
+ 0.26130258,
21
+ 0.27577711
22
+ ],
23
+ "resample": 3,
24
+ "rescale_factor": 0.00392156862745098,
25
+ "size": {
26
+ "shortest_edge": 224
27
+ }
28
+ },
29
+ "processor_class": "CLIPProcessor"
30
+ }
tokenizer.json ADDED
The diff for this file is too large to render. See raw diff
 
tokenizer_config.json ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_prefix_space": false,
3
+ "backend": "tokenizers",
4
+ "bos_token": "<|startoftext|>",
5
+ "do_lower_case": true,
6
+ "eos_token": "<|endoftext|>",
7
+ "errors": "replace",
8
+ "is_local": false,
9
+ "local_files_only": false,
10
+ "model_max_length": 77,
11
+ "pad_token": "<|endoftext|>",
12
+ "processor_class": "CLIPProcessor",
13
+ "tokenizer_class": "CLIPTokenizer",
14
+ "unk_token": "<|endoftext|>"
15
+ }
training_args.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f9be3f90ba097086d95467aac7204127fcc7b733b46c1f4d72678033833386ae
3
+ size 4856