https://arxiv.org/pdf/2506.10361
以下は、実装者向けに最短距離でコード化できるよう整理した“FaceLiVT”の完全要約です。図表や式の参照も付けています。実装の核は RepMix(構造的再パラメータ化付きの深層可分畳み込み) と MHLA(Multi‑Head Linear Attention) の2点です。図1(p.2)にブロック構造、表1(p.4)に各ステージ設定、表2–4(p.5)に結果とアブレーションの要点がまとまっています。
1) 目的と全体像(実装観点の要点)
-
FaceLiVT は、CNN×Transformerのハイブリッドで、前段=RepMix、後段=MHLA をトークンミキサとして組み合わせ、モバイル推論向けにレイテンシと精度の両立を図る設計。図1参照。
-
MHLA は自己注意(MHSA)の 二乗計算を避け、トークン次元に2層の線形(+非線形) をかける設計。計算量は Ω(MHLA)=2(N·Nr)·C と低く、MHSAの Ω=4NC²+2N²C より小さい(§3.4)。
-
構造的再パラメータ化(BN融合・分岐結合・残差の折り畳み)で、学習時は表現力、推論時は単一DWCへ畳み込み、Core ML等で高速化(§3.2)。
2) 入出力・ネットワーク構成
-
入力:112×112 のアライン済み顔画像(Glint360Kで学習時に使用)。値域は [-1,1] 正規化。
-
Stem:3×3 s=2 畳み込み ×2(112→56→28)。図1、表1。
-
ステージ数:4(Stage1/2=RepMix、Stage3/4=MHLA 版ではMHLA)。各ブロックは TokenMixer → 残差加算 → Channel MLP → 残差加算(式(1))。
-
Channel MLP:2層全結合(拡張比 r=3)、BN、GELU 1回(式(2))。実装は 1×1 Conv×2+BN+GELU でOK。
-
ヘッド:Global AvgPool → FC(512) で埋め込み512次元(CosFace学習用)。表1。
3) トークンミキサの詳細
3.1 RepMix(学習時)— 式(6)
-
DWC k×k と DWC 1×1 を足し合わせ、その後 BN、元入力を残差接続:
X' = X + BN( DWC_k×k(X) + DWC_1×1(X) )
(非線形は省略)。図1(b)、式(6)。
3.2 RepMix(推論時)— 構造的再パラメータ化
-
(a) BN融合:Conv→BN を 重みW' = W·γ/σ, バイアス b' = (b−μ)·γ/σ + β で単一Conv化(式(3)(4))。
-
(b) 分岐の畳み込み:
1×1 DWC と 恒等(残差)を k×kのDWCカーネル中央に埋め込み、k×k分岐に合算。最終的に 単一のDWC(k×k)+(a)でBN融合済み になる。図1(b)、§3.2。
3.3 MHLA(Multi‑Head Linear Attention)— 式(9)(10)
-
入力:X∈ℝ^{B×C×H×W} → N=H·Wの1Dトークンへ並べ X∈ℝ^{B×C×N}。Heads=He に チャネル分割:Xᵍ∈ℝ^{B×(C/He)×N}。図1(c)、§3.4。
-
各ヘッドはトークン次元で 2層線形 + GELU:
Y = GELU( Xᵍ · Wᵢ )
(Wᵢ∈ℝ^{N×Nr}),Z = Y · Wₒ
(Wₒ∈ℝ^{Nr×N})。ヘッド結合で出力(式(10))。Q/K/Vやsoftmaxは使わない。 -
計算量:Ω=2·N·Nr·C(MHSAより小)。Nがステージで固定(例:Stage3=7×7=49、Stage4=4×4=16)なので、ステージごとに(N, Nr, He)を固定して重みを持つ 実装が簡潔。
4) バリアントとステージ設定(表1の実装写経)
FaceLiVT‑S / M と、MHLA置換版 S‑(Li) / M‑(Li)。サイズは 112×112 入力を前提。各行は「解像度 / チャネル / ブロック数 / ミキサ」を示す:
-
Stem:3×3 s=2 ×2、出力C=S:40, M:64
-
Stage1(28×28):C=S:40, M:64、RepMix、Blocks=2
-
Stage2(14×14):Down=RepMix 3×3 s=2、C=S:80, M:128、RepMix、Blocks=4
-
Stage3(7×7):Down=RepMix 3×3 s=2、C=S:160, M:256、S/MはMHSA, S-(Li)/M-(Li)はMHLA、Blocks=6
-
Stage4(4×4):Down=RepMix 3×3 s=2、C=S:320, M:512、同上、Blocks=2
-
Head:AvgPool → FC(512)
He(ヘッド数) はアブレーションで 8 or 16 を検討。16 は精度が上がり(CFP‑FP 94.6%)、8 はレイテンシ短縮(0.41ms)。表4。
5) 学習レシピ(そのまま再現可能)
-
データ:Glint360K(112×112、テンソル化、[-1,1]正規化)。分散学習。
-
損失:CosFace。最後のFC(512)出力をPartialFCと併用。
-
最適化:AdamW, LR=6e‑3, Polynomial decay。Batch=256。20 or 40 エポック。埋め込み 512。
-
評価:LFW / CFP‑FP / AgeDB‑30 / IJB‑B / IJB‑C。iPhone 15 Pro(Core ML) でレイテンシ計測。
6) 主要結果(モバイル実用バランス)
-
FaceLiVT‑M‑(Li):9.75M Param / 386M FLOP、LFW 99.7–99.8、CFP‑FP 96.0–97.2、AgeDB 96.7–97.6、IJB‑C 94.1–95.7、0.67ms。
-
FaceLiVT‑S‑(Li):5.05M Param / 160M FLOP、LFW 99.6–99.7、CFP‑FP 94.6–95.1、AgeDB 95.6–96.6、IJB‑C 82.5–92.7、0.47ms。
-
速度優位:EdgeFace‑XS(0.6) 比 8.6×、純ViT系比 21.2× 高速(本文・表2、抄録)。
7) アブレーション(実装判断に効く要点)
-
再パラメータ化の効果(S‑(Li)):
-
fused BNなし → 0.47→0.60ms と悪化、
-
残差の再パラメータ化なし → 0.47→0.50ms、
-
DWC 1×1除去 → 精度低下(CFP‑FP −1.4pt, AgeDB −1.0pt)。表3。
-
-
He=8 vs 16:He=16 で精度↑(CFP‑FP 94.6%)、He=8 で速度↑(0.41ms)。表4。
8) 最小実装スケルトン(PyTorch風・擬似コード)
※形だけ把握できるように簡略化。実環境では SyncBN / AMP / DDP / PartialFC などを追加してください。MHLAはステージごとにN(トークン数)固定の重みを持つ前提で実装しています。
9) 推論最適化・移植のポイント
-
学習→推論への切り替え時に、RepMixの fuse_for_inference() を必ず実行(BN融合+分岐統合)。表3の通り、fused BN はレイテンシ短縮に効く(0.47→0.60ms防止)。
-
MHLA は ステージ解像度依存(N固定) の重みを持つため、Core ML / TensorRT 変換前に形状を固定。
-
iPhone 15 Pro(Core ML) の計測では、S-(Li)で0.47ms、M-(Li)で0.67ms。エッジ展開では INT8/FP16 量子化も候補。
10) 評価・再現用チェックリスト
-
112×112, [-1,1] 正規化
-
CosFace + PartialFC, 埋め込み512
-
AdamW, LR=6e‑3, poly decay, batch=256, 20/40ep
-
S-(Li)=Param≈5.05M / FLOP≈160M / LFW≈99.6–99.7 / CFP‑FP≈94.6–95.1 / AgeDB≈95.6–96.6 / IJB‑C≈82.5–92.7 / 0.47ms
-
M-(Li)=Param≈9.75M / FLOP≈386M / LFW≈99.7–99.8 / CFP‑FP≈96.0–97.2 / AgeDB≈96.7–97.6 / IJB‑C≈94.1–95.7 / 0.67ms
-
He=16で精度優先、He=8で速度優先(表4)。
11) まとめ(実装の勘所)
-
前段はRepMix:DWC(k×k)+DWC(1×1)→BN→残差。推論では単一DWCへ折り畳む(BN融合を忘れない)。
-
後段はMHLA:トークン次元に線形×2+GELU。Nはステージで固定。MHSA不要で長距離関係を近似しつつ高速。
-
ハイパラ:r(MLP)=3, He=8/16, S/Mは表1のチャンネル/ブロック数 を踏襲。
-
実運用:Core ML変換+再パラメータ化済み重みで、EdgeFaceやViT系より高速。
図1(p.2)のブロック図、表1(p.4)の設定、表2–4(p.5)の数値をそのままコードに落とし込めば、学習〜推論まで一気通貫で再現できます。
――以上。
0 件のコメント:
コメントを投稿