搭建人臉識別系統(tǒng)需要使用把特征存儲到數(shù)據(jù)庫,以及從數(shù)據(jù)庫中讀取特征進(jìn)行比較,因此使用MySQLdb進(jìn)行mysql數(shù)據(jù)庫的簡單操作
https://pypi.python.org/pypi/MySQL-python/1.2.5
安裝可以直接使用pip安裝 也可以直接下源碼編譯
特征是一個128維的浮點數(shù)向量,嘗試了兩種存儲的方式:
方式1: 在表中創(chuàng)建128個列,每個列存儲一個DOUBLE類型的數(shù)據(jù),存儲成f0, f2, ..., f127,
方式2: 把這個浮點數(shù)向量使用python的json模塊進(jìn)行序列化 json.dumps 成為一個字符串后以TEXT類型數(shù)據(jù)存儲,取出的時候再使用json.load還原成向量,浮點數(shù)精度取了10位,粗略估計一下按20計算每一個維度,則每一個向量存儲空間不大于20*128, TEXT類型能夠存儲下。
比較了一下兩種存儲方式在查詢的時候的時間
多次實驗后發(fā)現(xiàn)基本是blob稍微還要慢一點點,但是總體來說差距不是很大
之后在表上建立了一些索引,優(yōu)化了一下SQL,發(fā)現(xiàn)基本查詢時間都在100秒左右
這時候考慮到是不是傳輸都數(shù)據(jù)量比較大,導(dǎo)致時間沒辦法減小
正在糾結(jié)都時候突然發(fā)現(xiàn)數(shù)據(jù)庫使用的外網(wǎng)連接地址,修改成內(nèi)網(wǎng)連接后,獲得了100X的提速
差距不是太大基本都可以用了
這是一個比較大大數(shù)據(jù)量大場景下,一共有3700+張圖片,共識別出臉5300+個
一般場景下大概是600張圖片,人臉1000個左右 數(shù)據(jù)庫查詢時間基本在0.2秒以下