File size: 8,878 Bytes
86def9b f5c17be 86def9b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | <!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>JEPAMatch</title>
<meta name="description" content="JEPAMatch: Geometric Representation Shaping for Semi-Supervised Learning" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<main>
<header>
<h1>JEPAMatch: Geometric Representation Shaping<br>for Semi-Supervised Learning</h1>
<div class="authors">Ali Aghababaei-Harandi · Aude Sportisse · Massih-Reza Amini</div>
<div class="affil">Université Grenoble Alpes, CNRS, Computer Science Laboratory LIG, Grenoble, France</div>
<div class="badges">
<a href="https://github.com/aah94/JEPAMatch">Code (GitHub)</a>
<a href="https://arxiv.org/abs/2604.21046">Paper (arXiv:2604.21046)</a>
<a href="https://github.com/aah94/JEPAMatch/blob/main/LICENSE.txt">License: MIT</a>
</div>
</header>
<p>
JEPAMatch combines <strong>FlexMatch</strong>-style adaptive pseudo-labeling with a
<strong>LeJEPA</strong>-inspired representation-level objective, so that instead of only
thresholding softmax outputs, the model also explicitly shapes its latent space into
well-separated, isotropic per-class clusters. This fixes two long-standing FixMatch-family
bottlenecks — majority-class dominance in pseudo-labeling, and the ~2²⁰ iteration
convergence tax — cutting the iteration budget by <strong>8×</strong> while matching
or beating prior SSL methods on CIFAR-100, STL-10, and Tiny-ImageNet.
</p>
<figure>
<img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/architecture.png" alt="JEPAMatch architecture diagram">
<figcaption>A shared backbone feeds two levels: the <strong>Curriculum Level</strong> (top) does
FlexMatch-style adaptive pseudo-labeling on weak/strong views; the <strong>Representation
Level</strong> (bottom) aligns global and local crops via a JEPA prediction loss, regularized
by <strong>Adaptive Class-wise SIGReg</strong> — per-class isotropic Gaussians instead of
one global one, kept apart by an active repulsion term.</figcaption>
</figure>
<h2>Highlights</h2>
<ul class="highlights">
<li><strong>8× fewer iterations to converge.</strong> JEPAMatch reaches FlexMatch's final
CIFAR-100 (400-label) accuracy roughly 50k steps earlier, and finishes training at 2¹⁷
iterations vs. the standard 2²⁰.</li>
<li><strong>State-of-the-art or competitive results</strong> on CIFAR-100, STL-10, and
Tiny-ImageNet against FixMatch, FlexMatch, FreeMatch, SoftMatch, CrMatch, SimMatch, Suave,
and RegMixMatch.</li>
<li><strong>More robust under class imbalance</strong>, and <strong>works as a drop-in
module</strong> on top of FlexMatch, FreeMatch, or SoftMatch's curriculum.</li>
</ul>
<h2>Results</h2>
<p>Error rate (%), lower is better, 3 seeds.</p>
<div class="table-wrap">
<table>
<caption>CIFAR-100 & STL-10</caption>
<thead>
<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>
</thead>
<tbody>
<tr><td>FixMatch</td><td>2²⁰</td><td>46.42 ± 0.82</td><td>28.03 ± 0.16</td><td>22.20 ± 0.12</td><td>35.97 ± 4.14</td><td>6.25 ± 0.33</td></tr>
<tr><td>FlexMatch</td><td>2²⁰</td><td>39.94 ± 1.62</td><td>26.49 ± 0.20</td><td>21.90 ± 0.15</td><td>29.15 ± 4.16</td><td>5.77 ± 0.18</td></tr>
<tr><td>FreeMatch</td><td>2²⁰</td><td>37.98 ± 0.42</td><td>26.47 ± 0.20</td><td>21.68 ± 0.03</td><td>15.56 ± 0.55</td><td>5.63 ± 0.15</td></tr>
<tr><td>SoftMatch</td><td>2²⁰</td><td>37.10 ± 0.77</td><td>26.66 ± 0.25</td><td>22.03 ± 0.03</td><td>21.42 ± 3.48</td><td>5.73 ± 0.24</td></tr>
<tr><td>CrMatch</td><td>2²⁰</td><td>39.45 ± 1.69</td><td>25.43 ± 0.14</td><td>20.40 ± 0.08</td><td>–</td><td>4.89 ± 0.17</td></tr>
<tr><td>SimMatch</td><td>2²⁰</td><td>37.81 ± 2.21</td><td>25.07 ± 0.32</td><td>20.58 ± 0.11</td><td>–</td><td>–</td></tr>
<tr><td>FlatMatch</td><td>2²⁰</td><td>38.76 ± 1.62</td><td>25.38 ± 0.85</td><td>19.01 ± 0.43</td><td>16.20 ± 4.34</td><td>4.82 ± 1.21</td></tr>
<tr><td>Suave*</td><td>2²⁰</td><td>35.40</td><td>23.00</td><td><strong>18.40</strong></td><td>–</td><td>–</td></tr>
<tr><td>RegMixMatch*</td><td>2²⁰</td><td>35.27</td><td>23.78</td><td>19.41</td><td><strong>11.74</strong></td><td>4.66</td></tr>
<tr class="ours"><td>JEPAMatch (Ours)</td><td>2¹⁷</td><td>34.25 ± 1.97</td><td>22.59 ± 1.17</td><td>18.55 ± 0.85</td><td>13.44 ± 3.2</td><td>4.28 ± 1.43</td></tr>
</tbody>
</table>
</div>
<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>
<div class="tables-row">
<div class="table-wrap">
<table>
<caption>Tiny-ImageNet</caption>
<thead><tr><th>Method</th><th>Iter.</th><th>1K labels</th><th>10K labels</th></tr></thead>
<tbody>
<tr><td>FlexMatch</td><td>2¹⁸</td><td>41.73</td><td>27.89</td></tr>
<tr><td>SoftMatch</td><td>2¹⁸</td><td>40.09</td><td>25.92</td></tr>
<tr class="ours"><td>JEPAMatch</td><td>2¹⁸</td><td>38.82</td><td>24.50</td></tr>
</tbody>
</table>
</div>
<div class="table-wrap">
<table>
<caption>Drop-in module on other curricula (CIFAR-100, 400)</caption>
<thead><tr><th>Method</th><th>Iter.</th><th>Error</th></tr></thead>
<tbody>
<tr><td>FlexMatch</td><td>2²⁰</td><td>50.15 ± 1.51</td></tr>
<tr><td>FreeMatch</td><td>2²⁰</td><td>49.64 ± 1.46</td></tr>
<tr><td>SoftMatch</td><td>2²⁰</td><td>49.24 ± 2.16</td></tr>
<tr class="ours"><td>JEPAMatch (Flex)</td><td>2¹⁷</td><td>45.77 ± 2.77</td></tr>
<tr class="ours"><td>JEPAMatch (Free)</td><td>2¹⁷</td><td>45.12 ± 1.98</td></tr>
<tr class="ours"><td>JEPAMatch (Soft)</td><td>2¹⁷</td><td>44.65 ± 2.14</td></tr>
</tbody>
</table>
</div>
</div>
<h2>Convergence speed & pseudo-labeling quality</h2>
<figure>
<img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/convergence_speed.png" alt="Convergence speed vs FlexMatch" style="max-width:480px;">
<figcaption>JEPAMatch reaches FlexMatch's peak accuracy (CIFAR-100, 4 labels/class) roughly
50k iterations earlier, and keeps climbing to a substantially higher final accuracy.</figcaption>
</figure>
<div class="two-figs">
<figure>
<img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/data_utilization.png" alt="Data utilization vs FlexMatch">
<figcaption>JEPAMatch keeps more pseudo-labels above the confidence threshold, at higher correctness, than FlexMatch.</figcaption>
</figure>
<figure>
<img src="https://raw.githubusercontent.com/aah94/JEPAMatch/main/assets/max_class_count.png" alt="Class dominance comparison">
<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>
</figure>
</div>
<h2>Code</h2>
<p>Training code, all configs, and the full paper are on
<a href="https://github.com/aah94/JEPAMatch">GitHub: aah94/JEPAMatch</a>.</p>
<pre><code>git clone https://github.com/aah94/JEPAMatch.git
cd JEPAMatch
pip install -r requirements.txt
python train.py --c config/classic_cv/jepamatch/jepamatch_cifar100_400_0.yaml</code></pre>
<h2>Citation</h2>
<pre><code>@article{aghababaeiharandi2026jepamatch,
title = {JEPAMatch: Geometric Representation Shaping for Semi-Supervised Learning},
author = {Aghababaei-Harandi, Ali and Sportisse, Aude and Amini, Massih-Reza},
journal = {arXiv preprint arXiv:2604.21046},
year = {2026}
}</code></pre>
<footer>
Built on the <a href="https://github.com/microsoft/Semi-supervised-learning">USB</a>
semi-supervised learning benchmark. This Space is a paper/code landing page — an
interactive inference demo will be added once a released checkpoint is available.
</footer>
</main>
</body>
</html>
|