In SSOD, we have two datasets.
The first set \(\mathbf {D_s} = \lbrace x_i^s, y_i^s\rbrace _{i=1}^{N_s}\) , typically smaller, contains \(N_s\)  images \(\mathbf {x^s}\)  with the corresponding labels \(\mathbf {y^s}\) , and the second set \(\mathbf {D_u} = \lbrace x_i^u\rbrace _{i=1}^{N_u}\)  contains \(N_u\)  images \(\mathbf {x^u}\)  without labels. Similarly to [1]}, our architecture is composed of two identical models where one behaves as Teacher and the other as the Student.
At each iteration of the semi-supervised training, the Student is trained with one batch of images coming from \(\mathbf {D_s}\)  (supervised training) and one from \(\mathbf {D_u}\)  (unsupervised training), using the pseudo-labels generated by the Teacher as ground-truth and filtered by a threshold.
Then, the Student transfers the learned knowledge to the Teacher using the EMA applied to the weights.
