蒸留学習フレームワークのチートシート (1)

序文

大規模なモデルが一般的ですが、実際に実装する場合は、ハードウェアと動作電力の消費を考慮する必要があるため、企業は「小規模な」モデルを展開することを好みます。したがって、いくつかの蒸留技術を学ぶことは、一部のアルゴリズムエンジニアにとって必要なスキルポイントになっています.



_

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

おすすめ

転載: blog.csdn.net/weixin_43850253/article/details/126147230