序文
大規模なモデルが一般的ですが、実際に実装する場合は、ハードウェアと動作電力の消費を考慮する必要があるため、企業は「小規模な」モデルを展開することを好みます。したがって、いくつかの蒸留技術を学ぶことは、一部のアルゴリズムエンジニアにとって必要なスキルポイントになっています.
_
MGD
論文:マスク生成蒸留
コード: https://github.com/yzd-v/MGD
距離
より強力な教師コードからの知識の抽出: https://github.com/hunto/DIST_KD
疑似コード
import torch.nn as nn
def cosine_similarity(a, b, eps=1e-8):
return (a * b).sum(1) / (a.norm(dim=1) * b.norm(dim=1) + eps)
def pearson_correlation(a, b, eps=1e-8):
return cosine_similarity(a - a.mean(1).unsqueeze(1), b - b.mean(1).unsqueeze(1), eps)
def inter_class_relation(y_s, y_t):
return 1 - pearson_correlation(y_s, y_t).mean()
def intra_class_relation(y_s, y_t):
return inter_class_relation(y_s.transpose(0, 1), y_t.transpose(0, 1))
class DIST(nn.Module):
def __init__(self, beta, gamma):
super(DIST, self).__init__()
self.beta = beta
self.gamma = gamma
def forward(self, z_s, z_t):
y_s = z_s.softmax(dim=1)
y_t = z_t.softmax(dim=1)
inter_loss = inter_class_relation(y_s, y_t)
intra_loss = intra_class_relation(y_s, y_t)
kd_loss = self.beta * inter_loss + self.gamma * intra_loss
return kd_loss
教師と生徒
论文:半教師付きセマンティック セグメンテーションのための乱れた厳格な平均教師
コード: https://github.com/yyliu01/PS-MT
ブログ投稿: CVPR 2022 | PS-MT: 半教師付きセマンティック セグメンテーションには、より安定した一貫性トレーニングが必要です!
蒸留主鎖
TinyViT
論文: TinyViT: 小型ビジョン トランスフォーマーの高速事前トレーニング蒸留
コード: https://github.com/microsoft/Cream/tree/main/TinyViT
ブログ投稿: ECCV22|Swin よりも優れているパラメーターは 11% のみ、Microsoft は高速なプレトレーニング蒸留法 TinyViT を提案
半監督下
DTG-SSOD
22.07
論文DTG-SSOD: 半教師ありオブジェクト検出のための Dense Teacher ガイダンス
ブログ投稿: DTG-SSOD: 最新の半教師あり検出フレームワーク、Dense Teacher
データの蒸留
R2L
2022 ECCV
論文: R2L : Distilling Neural Radiance Field to Neural Light Field for Efficient Novel View Synthesis