网加思维做网站推广,网站排名西安,培训机构推广,wordpress网站管理员插件半监督学习与数据增强#xff08;论文复现#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 半监督学习与数据增强#xff08;论文复现#xff09;概述算法原理核心逻辑效果演示使用方式 概述 本文复现论文提出的半监督学习方法#xff0c;半监督学习…半监督学习与数据增强论文复现 本文所涉及所有资源均在传知代码平台可获取 文章目录 半监督学习与数据增强论文复现概述算法原理核心逻辑效果演示使用方式 概述 本文复现论文提出的半监督学习方法半监督学习Semi-supervised Learning是一种机器学习方法它将少量的标注数据带有标签的数据和大量的未标注数据不带标签的数据结合起来训练模型。在许多实际应用中标注数据获取成本高且困难而未标注数据通常较为丰富和容易获取。因此半监督学习方法被引入并被用于利用未标注数据来提高模型的性能和泛化能力 该论文介绍了一种基于一致性和置信度的半监督学习方法 FixMatch。FixMatch首先使用模型为弱增强后的未标注图像生成伪标签。对于给定图像只有当模型产生高置信度预测时才保留伪标签。然后模型在输入同一图像的强增强版本时被训练去预测伪标签。FixMatch 在各种半监督学习数据集上实现了先进的性能 算法原理 FixMatch 结合了两种半监督学习方法一致性正则化和伪标签。其主要创新点在于这两种方法的结合以及在执行一致性正则化时分别使用了弱增强和强增强。 FixMatch 的损失函数由两个交叉熵损失项组成一个用于有标签数据的监督损失 lsl**s 和一个用于无标签数据的无监督损失 lul**u 。具体来说lsl**s 只是对弱增强有标签样本应用的标准交叉熵损失 其中 BB 表示 batch sizeHH 表示交叉熵损失pbp**b 表示标记pm(y∣α(xb))p**m(y∣α(x**b)) 表示模型对弱增强样本的预测结果。 FixMatch 对每个无标签样本计算一个伪标签然后在标准交叉熵损失中使用该标签。为了获得伪标签我们首先计算模型对给定无标签图像的弱增强版本的预测类别分布qbpm(y∣α(ub))q**bp**m(y∣α(u**b))。然后我们使用 qbargmaxqb*q*bargmaxq**b 作为伪标签但我们在交叉熵损失中对模型对 ubu**b 的强增强版本的输出进行约束 其中 μμ 表示无标签样本与有标签样本数量之比1(max(qb)τ)1(max(q**b)τ) 当前仅当 max(qb)τmax(q**b)τ 成立时为 1 否则为 0ττ 表示置信度阈值A(ub)A(u**b) 表示对无标签样本的强增强。 FixMatch的总损失就是 lsλulul**sλul**u其中 λuλ**u 是表示无标签损失相对权重的标量超参数 FixMatch 利用两种增强方法“弱增强”和“强增强”。论文所使用的弱增强是一种标准的翻转和位移增强策略。具体来说除了SVHN数据集之外我们在所有数据集上以50%的概率随机水平翻转图像并随机在垂直和水平方向上平移图像最多12.5%。对于“强增强”我采用了基于随机幅度采样的 RandAugment然后进行了 Cutout 处理。 我在CIFAR-10、CIFAR-100 、SVHN 和 FER2013 数据集上对 FixMatch 进行了实验。关于使用的神经网络我在 CIFAR-10 和 SVHN 上使用了 Wide ResNet-28-2在 CIFAR-100 上使用了 Wide ResNet-28-8在 FER2013 上使用了 Wide ResNe-37-2。实验结果如下表所示 为了直观展示 FixMatch 的效果我在线部署了基于 FER2013 数据集训练的 Wide ResNe-37-2 模型。FER2013[2] 是一个面部表情识别数据集其包含约 30000 张不同表情的面部 RGB 图像尺寸限制为 48×48。其主要标签可分为 7 种类型愤怒Angry厌恶Disgust恐惧Fear快乐Happy悲伤Sad惊讶Surprise中性Neutral。厌恶表情的图像数量最少只有 600 张而其他标签的样本数量均接近 5,000 张 核心逻辑 具体的核心逻辑如下所示 for epoch in range(epochs):model.train()train_tqdm zip(labeled_dataloader, unlabeled_dataloader)for labeled_batch, unlabeled_batch in train_tqdm:optimizer.zero_grad()# 利用标记样本计算损失data labeled_batch[0].to(device)labels labeled_batch[1].to(device)logits model(normalize(strong_aug(data)))loss F.cross_entropy(logits, labels)# 计算未标记样本伪标签with torch.no_grad():data unlabeled_batch[0].to(device)logits model(normalize(weak_aug(data)))probs F.softmax(logits, dim-1)trusted torch.max(probs, dim-1).values thresholdpseudo_labels torch.argmax(probs[trusted], dim-1)loss_factor weight * torch.sum(trusted).item() / data.shape[0]# 利用未标记样本计算损失logits model(normalize(strong_aug(data[trusted])))loss loss_factor * F.cross_entropy(logits, pseudo_labels)# 反向梯度传播并更新模型参数loss.backward()optimizer.step()效果演示 网站提供了在线体验功能。用户需要输入一张长宽尽可能相等且大小不超过 1MB 的正面脸部 JPG 图像网站就会返回图片中人物表情所表达的情绪 使用方式 解压附件压缩包并进入工作目录。如果是Linux系统请使用如下命令 unzip FixMatch.zip
cd FixMatch代码的运行环境可通过如下命令进行配置 pip install -r requirements.txt如果希望在本地运行程序请运行如下命令 python main.py如果希望在线部署请运行如下命令 python main-flask.py文章代码资源点击附件获取