標籤:

人臉特徵向量用整數存儲精度損失多少?

人臉特徵向量用整數存儲精度損失多少?

問題描述:向量 parallel mathbf{x} parallel_2^2=1, parallel mathbf{y} parallel_2^2=1 ,展開形式為 mathbf{x} = (x_1, x_2, ... , x_N)^T, mathbf{y} = (y_1, y_2, ... , y_N)^T ,相似度時計算公式 f = mathbf{x}^Tmathbf{y}

浮點轉定點: 假設轉定點數時把[0.0, 1.0] 映射到 [0, M], 則分量最大損失為 frac{1}{M} ,考慮四捨五入則為 frac{0.5}{M}

誤差分析:

Delta f = f(mathbf{x}+Delta x,mathbf{y}+Delta y) - f(mathbf{x},mathbf{y}) approx Delta mathbf{x}^T cdot 
abla_mathbf{x} f + Delta mathbf{y} ^T cdot 
abla_mathbf{y}f

其中 
abla_mathbf{x} f = mathbf{y}, 
abla_mathbf{y} = mathbf{x} , 替換之後

Delta f approx Deltamathbf{x}^Tcdot mathbf{y}+Deltamathbf{y}^Tcdotmathbf{x}

兩邊再加上絕對值

|Delta f| approx |Deltamathbf{x}^Tcdotmathbf{y}| +|Deltamathbf{y}^Tcdotmathbf{x}|quadquadquadquad\ <frac{0.5}{M}left(sum_{i=1}^N|x_i|+sum_{i=1}^N|y_i|
ight)\ leqfrac{0.5}{M}(sqrt{N}+sqrt{N})quadquadquad\ =frac{sqrt{N}}{M}quadquadquadquadquadquadquadquad

取N = 256, M = 32767,相似度的誤差在萬分之五以內。

進行人臉查找時,這個誤差應該可以忽略不計,向量點積由32位浮點轉為32位整型,我的機器大概能快5~6倍。


推薦閱讀:

目標檢測—圖像特徵提取
沒錯,kNN演算法也要玩人臉識別
人臉識別的LOSS(上)
我們為何會對形似「臉」的非動物體產生錯覺?

TAG:人臉識別 |