ArcFace層問題分析

2022-05-03 03:27:06 字數 1057 閱讀 3269

arcface訓練問題分析

1、現象

使用arcface 層時,訓練前期準確率一直為0,到後面才逐漸上公升;

2、分析

從**入手

output = (y * phi) + ((1.0 - y) * cosine)

output *= s

y 是one-hot形式的真實label,phi=cos(θ+m),cosine=cosθ,θ即特徵向量與權值向量的夾角。則:

(1)     label = 0 -> y=[1, 0] -> output = [s*cos(θ1+m), s*cosθ2]

(2)     label = 1 -> y=[0,1] -> output = [s*cosθ1, s*cos(θ2+m)]

然後經過softmax操作進行概率轉換;

初始時,θ1和θ2在高維空間中均接近pi/2,m一般為正數(這裡為0.05)。針對softmax的輸出使用ce-loss進行約束,形式如下:

則:(1)   label = 0 ->  損失函式會朝著s*cos(θ1+m) >> s*cosθ2 的方向約束,結合cos函式在[0, pi]上的單調遞減性,則(θ1+m) 應越來越小於 θ2;但是初始時 θ1=θ2=pi/2,則θ1+m 在訓練初期都大於θ2,即訓練初期 s*cos(θ1+m) < s*cosθ2 ,即label = 0 時, prediction =1;

(2)   label = 1時的情況同上

所以訓練初期:label = 0 的樣本都被判為負樣本,label = 1的樣本都被判為正樣本,所以訓練初期acc = 0%。

而隨著訓練的不斷進行,比如對於label = 0時, θ1從pi/2縮小到pi/2 -m 至更小時,則acc開始上公升。

備註:m值需為正數,它代表著類別在角度空間中的margin。若m為負數,則根據上面的分析可知:訓練初期就有θ1+m

input 層簡單分析

drivers input input.c input init err register chrdev input major,input input fops static const struct file operations input fops 問 怎麼讀按鍵?input open fi...

傳輸層協議分析

tcp分析 udp分析 三次握手建立tcp 四次握手斷開tcp連線 抓包 ddos 1.tcp協議屬於四層傳輸層 tcp可靠傳輸資料,速度慢 tcp是面向連線的服務 udp不可靠,速度快 udp是無連線的服務 tcp包頭分析 tcp總長度 20到60位元組。源埠 客戶機隨機生成的。例如 開啟ie瀏覽...

Linux IO排程層分析 1

linux io 排程程式是塊裝置 i o子系統的主要元件,它介於通用塊層和塊裝置驅動程式之間,所圖 2 1所示。當 linux 核心元件要讀寫一些資料時,並不是請求一發出,核心便立即執行該請求,而是將其推遲執行。延遲的設定是塊裝置效能的關鍵機制!當傳輸乙個新資料塊時,核心檢查能否通過擴充套件前乙個...