Ali Aghababaei Claude Sonnet 5 commited on
Commit
f5c17be
·
1 Parent(s): 86def9b

Add paper/code landing page

Browse files

Static page for JEPAMatch (arXiv:2604.21046): abstract, architecture diagram,
full results tables, convergence/pseudo-label-quality figures, quickstart,
and citation. Links to the code at github.com/aah94/JEPAMatch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

Files changed (3) hide show
  1. README.md +3 -2
  2. index.html +147 -17
  3. style.css +95 -18
README.md CHANGED
@@ -5,7 +5,8 @@ colorFrom: red
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
8
- short_description: Geometric Representation Shaping for SSL
9
  ---
10
 
11
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
5
  colorTo: purple
6
  sdk: static
7
  pinned: false
8
+ short_description: Geometric Representation Shaping for SSL
9
  ---
10
 
11
+ Paper + code landing page for JEPAMatch. See [index.html](index.html) for the page source, or
12
+ check out the [configuration reference](https://huggingface.co/docs/hub/spaces-config-reference).
index.html CHANGED
@@ -1,19 +1,149 @@
1
  <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
  <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>JEPAMatch</title>
7
+ <meta name="description" content="JEPAMatch: Geometric Representation Shaping for Semi-Supervised Learning" />
8
+ <link rel="stylesheet" href="style.css" />
9
+ </head>
10
+ <body>
11
+ <main>
12
+
13
+ <header>
14
+ <h1>JEPAMatch: Geometric Representation Shaping<br>for Semi-Supervised Learning</h1>
15
+ <div class="authors">Ali Aghababaei-Harandi &middot; Aude Sportisse &middot; Massih-Reza Amini</div>
16
+ <div class="affil">Universit&eacute; Grenoble Alpes, CNRS, Computer Science Laboratory LIG, Grenoble, France</div>
17
+ <div class="badges">
18
+ <a href="https://github.com/aah94/JEPAMatch">Code (GitHub)</a>
19
+ <a href="https://arxiv.org/abs/2604.21046">Paper (arXiv:2604.21046)</a>
20
+ <a href="https://github.com/aah94/JEPAMatch/blob/main/LICENSE.txt">License: MIT</a>
21
+ </div>
22
+ </header>
23
+
24
+ <p>
25
+ JEPAMatch combines <strong>FlexMatch</strong>-style adaptive pseudo-labeling with a
26
+ <strong>LeJEPA</strong>-inspired representation-level objective, so that instead of only
27
+ thresholding softmax outputs, the model also explicitly shapes its latent space into
28
+ well-separated, isotropic per-class clusters. This fixes two long-standing FixMatch-family
29
+ bottlenecks &mdash; majority-class dominance in pseudo-labeling, and the ~2&sup2;&#8304; iteration
30
+ convergence tax &mdash; cutting the iteration budget by <strong>8&times;</strong> while matching
31
+ or beating prior SSL methods on CIFAR-100, STL-10, and Tiny-ImageNet.
32
+ </p>
33
+
34
+ <figure>
35
+ <img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/architecture.png" alt="JEPAMatch architecture diagram">
36
+ <figcaption>A shared backbone feeds two levels: the <strong>Curriculum Level</strong> (top) does
37
+ FlexMatch-style adaptive pseudo-labeling on weak/strong views; the <strong>Representation
38
+ Level</strong> (bottom) aligns global and local crops via a JEPA prediction loss, regularized
39
+ by <strong>Adaptive Class-wise SIGReg</strong> &mdash; per-class isotropic Gaussians instead of
40
+ one global one, kept apart by an active repulsion term.</figcaption>
41
+ </figure>
42
+
43
+ <h2>Highlights</h2>
44
+ <ul class="highlights">
45
+ <li><strong>8&times; fewer iterations to converge.</strong> JEPAMatch reaches FlexMatch's final
46
+ CIFAR-100 (400-label) accuracy roughly 50k steps earlier, and finishes training at 2&sup1;&#8311;
47
+ iterations vs. the standard 2&sup2;&#8304;.</li>
48
+ <li><strong>State-of-the-art or competitive results</strong> on CIFAR-100, STL-10, and
49
+ Tiny-ImageNet against FixMatch, FlexMatch, FreeMatch, SoftMatch, CrMatch, SimMatch, Suave,
50
+ and RegMixMatch.</li>
51
+ <li><strong>More robust under class imbalance</strong>, and <strong>works as a drop-in
52
+ module</strong> on top of FlexMatch, FreeMatch, or SoftMatch's curriculum.</li>
53
+ </ul>
54
+
55
+ <h2>Results</h2>
56
+ <p>Error rate (%), lower is better, 3 seeds.</p>
57
+
58
+ <div class="table-wrap">
59
+ <table>
60
+ <caption>CIFAR-100 &amp; STL-10</caption>
61
+ <thead>
62
+ <tr><th>Method</th><th>Iter.</th><th>CIFAR-100 (400)</th><th>CIFAR-100 (2.5K)</th><th>CIFAR-100 (10K)</th><th>STL-10 (40)</th><th>STL-10 (1K)</th></tr>
63
+ </thead>
64
+ <tbody>
65
+ <tr><td>FixMatch</td><td>2&sup2;&#8304;</td><td>46.42 &plusmn; 0.82</td><td>28.03 &plusmn; 0.16</td><td>22.20 &plusmn; 0.12</td><td>35.97 &plusmn; 4.14</td><td>6.25 &plusmn; 0.33</td></tr>
66
+ <tr><td>FlexMatch</td><td>2&sup2;&#8304;</td><td>39.94 &plusmn; 1.62</td><td>26.49 &plusmn; 0.20</td><td>21.90 &plusmn; 0.15</td><td>29.15 &plusmn; 4.16</td><td>5.77 &plusmn; 0.18</td></tr>
67
+ <tr><td>FreeMatch</td><td>2&sup2;&#8304;</td><td>37.98 &plusmn; 0.42</td><td>26.47 &plusmn; 0.20</td><td>21.68 &plusmn; 0.03</td><td>15.56 &plusmn; 0.55</td><td>5.63 &plusmn; 0.15</td></tr>
68
+ <tr><td>SoftMatch</td><td>2&sup2;&#8304;</td><td>37.10 &plusmn; 0.77</td><td>26.66 &plusmn; 0.25</td><td>22.03 &plusmn; 0.03</td><td>21.42 &plusmn; 3.48</td><td>5.73 &plusmn; 0.24</td></tr>
69
+ <tr><td>CrMatch</td><td>2&sup2;&#8304;</td><td>39.45 &plusmn; 1.69</td><td>25.43 &plusmn; 0.14</td><td>20.40 &plusmn; 0.08</td><td>&ndash;</td><td>4.89 &plusmn; 0.17</td></tr>
70
+ <tr><td>SimMatch</td><td>2&sup2;&#8304;</td><td>37.81 &plusmn; 2.21</td><td>25.07 &plusmn; 0.32</td><td>20.58 &plusmn; 0.11</td><td>&ndash;</td><td>&ndash;</td></tr>
71
+ <tr><td>FlatMatch</td><td>2&sup2;&#8304;</td><td>38.76 &plusmn; 1.62</td><td>25.38 &plusmn; 0.85</td><td>19.01 &plusmn; 0.43</td><td>16.20 &plusmn; 4.34</td><td>4.82 &plusmn; 1.21</td></tr>
72
+ <tr><td>Suave*</td><td>2&sup2;&#8304;</td><td>35.40</td><td>23.00</td><td><strong>18.40</strong></td><td>&ndash;</td><td>&ndash;</td></tr>
73
+ <tr><td>RegMixMatch*</td><td>2&sup2;&#8304;</td><td>35.27</td><td>23.78</td><td>19.41</td><td><strong>11.74</strong></td><td>4.66</td></tr>
74
+ <tr class="ours"><td>JEPAMatch (Ours)</td><td>2&sup1;&#8311;</td><td>34.25 &plusmn; 1.97</td><td>22.59 &plusmn; 1.17</td><td>18.55 &plusmn; 0.85</td><td>13.44 &plusmn; 3.2</td><td>4.28 &plusmn; 1.43</td></tr>
75
+ </tbody>
76
+ </table>
77
+ </div>
78
+ <p style="color:var(--muted); font-size:0.85rem;">*standard deviation not reported in the original paper. Full baseline table (PseudoLabel, MeanTeacher, MixMatch, ReMixMatch, UDA) in the paper.</p>
79
+
80
+ <div class="tables-row">
81
+ <div class="table-wrap">
82
+ <table>
83
+ <caption>Tiny-ImageNet</caption>
84
+ <thead><tr><th>Method</th><th>Iter.</th><th>1K labels</th><th>10K labels</th></tr></thead>
85
+ <tbody>
86
+ <tr><td>FlexMatch</td><td>2&sup1;&#8312;</td><td>41.73</td><td>27.89</td></tr>
87
+ <tr><td>SoftMatch</td><td>2&sup1;&#8312;</td><td>40.09</td><td>25.92</td></tr>
88
+ <tr class="ours"><td>JEPAMatch</td><td>2&sup1;&#8312;</td><td>38.82</td><td>24.50</td></tr>
89
+ </tbody>
90
+ </table>
91
+ </div>
92
+ <div class="table-wrap">
93
+ <table>
94
+ <caption>Drop-in module on other curricula (CIFAR-100, 400)</caption>
95
+ <thead><tr><th>Method</th><th>Iter.</th><th>Error</th></tr></thead>
96
+ <tbody>
97
+ <tr><td>FlexMatch</td><td>2&sup2;&#8304;</td><td>50.15 &plusmn; 1.51</td></tr>
98
+ <tr><td>FreeMatch</td><td>2&sup2;&#8304;</td><td>49.64 &plusmn; 1.46</td></tr>
99
+ <tr><td>SoftMatch</td><td>2&sup2;&#8304;</td><td>49.24 &plusmn; 2.16</td></tr>
100
+ <tr class="ours"><td>JEPAMatch (Flex)</td><td>2&sup1;&#8311;</td><td>45.77 &plusmn; 2.77</td></tr>
101
+ <tr class="ours"><td>JEPAMatch (Free)</td><td>2&sup1;&#8311;</td><td>45.12 &plusmn; 1.98</td></tr>
102
+ <tr class="ours"><td>JEPAMatch (Soft)</td><td>2&sup1;&#8311;</td><td>44.65 &plusmn; 2.14</td></tr>
103
+ </tbody>
104
+ </table>
105
+ </div>
106
+ </div>
107
+
108
+ <h2>Convergence speed &amp; pseudo-labeling quality</h2>
109
+ <figure>
110
+ <img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/convergence_speed.png" alt="Convergence speed vs FlexMatch" style="max-width:480px;">
111
+ <figcaption>JEPAMatch reaches FlexMatch's peak accuracy (CIFAR-100, 4 labels/class) roughly
112
+ 50k iterations earlier, and keeps climbing to a substantially higher final accuracy.</figcaption>
113
+ </figure>
114
+ <div class="two-figs">
115
+ <figure>
116
+ <img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/data_utilization.png" alt="Data utilization vs FlexMatch">
117
+ <figcaption>JEPAMatch keeps more pseudo-labels above the confidence threshold, at higher correctness, than FlexMatch.</figcaption>
118
+ </figure>
119
+ <figure>
120
+ <img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/max_class_count.png" alt="Class dominance comparison">
121
+ <figcaption>FlexMatch's majority class can claim up to a quarter of all pseudo-labels in a batch; JEPAMatch keeps this far more balanced.</figcaption>
122
+ </figure>
123
+ </div>
124
+
125
+ <h2>Code</h2>
126
+ <p>Training code, all configs, and the full paper are on
127
+ <a href="https://github.com/aah94/JEPAMatch">GitHub: aah94/JEPAMatch</a>.</p>
128
+ <pre><code>git clone https://github.com/aah94/JEPAMatch.git
129
+ cd JEPAMatch
130
+ pip install -r requirements.txt
131
+ python train.py --c config/classic_cv/jepamatch/jepamatch_cifar100_400_0.yaml</code></pre>
132
+
133
+ <h2>Citation</h2>
134
+ <pre><code>@article{aghababaeiharandi2026jepamatch,
135
+ title = {JEPAMatch: Geometric Representation Shaping for Semi-Supervised Learning},
136
+ author = {Aghababaei-Harandi, Ali and Sportisse, Aude and Amini, Massih-Reza},
137
+ journal = {arXiv preprint arXiv:2604.21046},
138
+ year = {2026}
139
+ }</code></pre>
140
+
141
+ <footer>
142
+ Built on the <a href="https://github.com/microsoft/Semi-supervised-learning">USB</a>
143
+ semi-supervised learning benchmark. This Space is a paper/code landing page &mdash; an
144
+ interactive inference demo will be added once a released checkpoint is available.
145
+ </footer>
146
+
147
+ </main>
148
+ </body>
149
  </html>
style.css CHANGED
@@ -1,28 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
 
 
 
 
 
 
 
 
 
9
  }
 
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
 
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  }
 
 
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
 
 
 
28
  }
 
 
 
 
1
+ :root {
2
+ --ink: #1a1a1a;
3
+ --muted: #5a5a5a;
4
+ --line: #e3e3e3;
5
+ --accent: #7c3aed;
6
+ --accent-bg: #f5f0ff;
7
+ --bg: #ffffff;
8
+ --code-bg: #f6f6f8;
9
+ --max-width: 880px;
10
+ }
11
+
12
+ * { box-sizing: border-box; }
13
+
14
  body {
15
+ margin: 0;
16
+ padding: 0 1.25rem 4rem;
17
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
18
+ color: var(--ink);
19
+ background: var(--bg);
20
+ line-height: 1.6;
21
+ }
22
+
23
+ main { max-width: var(--max-width); margin: 0 auto; }
24
+
25
+ header {
26
+ text-align: center;
27
+ padding: 3rem 0 1.5rem;
28
+ }
29
+
30
+ header h1 {
31
+ font-size: 2rem;
32
+ margin: 0 0 0.75rem;
33
+ line-height: 1.25;
34
  }
35
 
36
+ .authors { font-size: 1.05rem; margin-bottom: 0.25rem; }
37
+ .affil { color: var(--muted); font-size: 0.95rem; margin-bottom: 1.25rem; }
38
+
39
+ .badges { display: flex; gap: 0.6rem; justify-content: center; flex-wrap: wrap; margin-bottom: 0.5rem; }
40
+ .badges a {
41
+ display: inline-block;
42
+ padding: 0.35rem 0.9rem;
43
+ border-radius: 999px;
44
+ background: var(--accent-bg);
45
+ color: var(--accent);
46
+ text-decoration: none;
47
+ font-size: 0.85rem;
48
+ font-weight: 600;
49
+ border: 1px solid #e6dbfa;
50
  }
51
+ .badges a:hover { background: #ece2ff; }
52
 
53
+ h2 {
54
+ font-size: 1.35rem;
55
+ margin-top: 2.75rem;
56
+ margin-bottom: 1rem;
57
+ padding-bottom: 0.4rem;
58
+ border-bottom: 1px solid var(--line);
59
  }
60
 
61
+ p { margin: 0.75rem 0; }
62
+
63
+ figure { margin: 1.5rem 0; text-align: center; }
64
+ figure img { max-width: 100%; border-radius: 8px; }
65
+ figcaption { color: var(--muted); font-size: 0.9rem; margin-top: 0.6rem; text-align: left; }
66
+
67
+ .highlights { padding-left: 1.25rem; }
68
+ .highlights li { margin-bottom: 0.5rem; }
69
+
70
+ table { border-collapse: collapse; width: 100%; margin: 1rem 0; font-size: 0.92rem; }
71
+ caption { caption-side: top; text-align: left; color: var(--muted); font-size: 0.9rem; margin-bottom: 0.5rem; }
72
+ th, td { padding: 0.5rem 0.7rem; border-bottom: 1px solid var(--line); text-align: center; }
73
+ th:first-child, td:first-child { text-align: left; }
74
+ thead th { border-bottom: 2px solid var(--ink); font-weight: 600; }
75
+ tr.ours td { font-weight: 700; background: var(--accent-bg); }
76
+ .table-wrap { overflow-x: auto; }
77
+
78
+ .tables-row { display: flex; gap: 2rem; flex-wrap: wrap; }
79
+ .tables-row > div { flex: 1 1 320px; }
80
+
81
+ .two-figs { display: flex; gap: 1rem; flex-wrap: wrap; }
82
+ .two-figs figure { flex: 1 1 320px; margin: 1rem 0; }
83
+
84
+ pre {
85
+ background: var(--code-bg);
86
+ border: 1px solid var(--line);
87
+ border-radius: 8px;
88
+ padding: 1rem 1.2rem;
89
+ overflow-x: auto;
90
+ font-size: 0.88rem;
91
  }
92
+ code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; }
93
+ p code, li code { background: var(--code-bg); padding: 0.1rem 0.35rem; border-radius: 4px; }
94
 
95
+ footer {
96
+ text-align: center;
97
+ color: var(--muted);
98
+ font-size: 0.85rem;
99
+ margin-top: 3.5rem;
100
+ padding-top: 1.5rem;
101
+ border-top: 1px solid var(--line);
102
  }
103
+ footer a { color: var(--accent); }
104
+
105
+ a { color: var(--accent); }