1,百度在線人臉識別技術文檔
https://cloud.baidu.com/doc/FACE/Face-Search.html#.E8.AF.B7.E6.B1.82.E8.AF.B4.E6.98.8E
2,測試目的
注冊1萬張人臉庫,然后輸入圖片進行匹配檢測,測試其從人臉庫識別目標的准確性和速度。
3,測試代碼
參考下文進行測試。對人臉注冊部分的代碼進行了修改,以批量方式注冊人臉。
https://blog.csdn.net/midaszhk/article/details/77340219
4,測試環境
² PC機:windows7 64位旗艦版 SP1,4GB內存;AMD A6-7400K
² Python 3.5 64位
5,測試步驟
5.1 注冊人臉庫
運行程序:face2.py –add2
共注冊人臉10872張。人員ID共2287個。
注:受限於人臉圖片采集較為耗時,因此相同ID下的人臉圖片采用相同的圖片,不同ID下的圖片也存在相同的人臉。注冊人臉參見:附錄1:人臉庫注冊照片集
5.2 人臉識別測試1
在人臉庫中注冊數量達到5586個時,測試人臉(參見附錄2:測試照片集)識別的結果如下表,可見:
1,在控制輸入圖片尺寸不要過大時,api識別反饋時間小於1秒
2,以匹配分數80為界,在庫人員和非在庫人員識別結果正確。
測試類別 |
輸入 |
圖片尺寸 |
輸出 |
最高匹配得分 |
識別是否正確 |
耗時(秒) |
在庫人員1 |
Jack1.jpg |
4224*5632 |
jack-kwok1.jpg |
94 |
1 |
2 |
Jack2.jpg |
4224*5632 |
jack-kwok1.jpg |
94 |
1 |
2 |
|
Jack3.jpg |
4224*5632 |
jack-kwok2,jpg |
93 |
1 |
3 |
|
Jack1.jpg |
500*667 |
jack-kwok1.jpg |
95 |
1 |
0 |
|
Jack2.jpg |
500*667 |
jack-kwok1.jpg |
95 |
1 |
0 |
|
Jack3.jpg |
500*667 |
jack-kwok2,jpg |
94 |
1 |
0 |
|
在庫人員2 |
JackMa.jpg |
500*434 |
mayun1.jpg |
91 |
1 |
0 |
JackMa2.jpg |
733*574 |
mayun1.jpg |
94 |
1 |
0 |
|
不在庫人員1 |
Noreg1.jpg |
1730*1597 |
- |
20 |
1 |
0 |
不在庫人員2 |
Noreg2.jpg |
634*407 |
- |
54 |
1 |
0 |
5.2.1在庫人員1
5.2.1.1輸入大圖4224*5632
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck1.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"10","scores":[94.944915771484],"group_id":"face1000","user_in
fo":"jack-kwok1.jpg info to be added."},{"uid":"10","scores":[94.944915771484],"
group_id":"face1000","user_info":"jack-kwok1.jpg info to be added."}],"result_nu
m":2,"log_id":2750418294071813}
0: 10 scores: 94 group: face1000
1: 10 scores: 94 group: face1000
2
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck2.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"10","scores":[94.432579040527],"group_id":"face1000","user_in
fo":"jack-kwok1.jpg info to be added."},{"uid":"10","scores":[94.432579040527],"
group_id":"face1000","user_info":"jack-kwok1.jpg info to be added."}],"result_nu
m":2,"log_id":2759043572071813}
0: 10 scores: 94 group: face1000
1: 10 scores: 94 group: face1000
2
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck3.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"11","scores":[93.317947387695],"group_id":"face1000","user_in
fo":"jack-kwok2.jpg info to be added."},{"uid":"11","scores":[93.317947387695],"
group_id":"face1000","user_info":"jack-kwok2.jpg info to be added."}],"result_nu
m":2,"log_id":2751478195071813}
0: 11 scores: 93 group: face1000
1: 11 scores: 93 group: face1000
3
5.2.1.2輸入小圖500*667
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck1.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"10","scores":[95.532615661621],"group_id":"face1000","user_in
fo":"jack-kwok1.jpg info to be added."},{"uid":"10","scores":[95.532615661621],"
group_id":"face1000","user_info":"jack-kwok1.jpg info to be added."}],"result_nu
m":2,"log_id":2889208623071813}
0: 10 scores: 95 group: face1000
1: 10 scores: 95 group: face1000
0
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck2.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"10","scores":[95.283851623535],"group_id":"face1000","user_in
fo":"jack-kwok1.jpg info to be added."},{"uid":"10","scores":[95.283851623535],"
group_id":"face1000","user_info":"jack-kwok1.jpg info to be added."}],"result_nu
m":2,"log_id":2890058562071813}
0: 10 scores: 95 group: face1000
1: 10 scores: 95 group: face1000
0
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ck3.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"11","scores":[94.254653930664],"group_id":"face1000","user_in
fo":"jack-kwok2.jpg info to be added."},{"uid":"11","scores":[94.254653930664],"
group_id":"face1000","user_info":"jack-kwok2.jpg info to be added."}],"result_nu
m":2,"log_id":2890630033071813}
0: 11 scores: 94 group: face1000
1: 11 scores: 94 group: face1000
0
5.2.2在庫人員2
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ckma2.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"18","scores":[94.516395568848],"group_id":"face1000","user_in
fo":"mayun1.jpg info to be added."},{"uid":"18","scores":[94.516395568848],"grou
p_id":"face1000","user_info":"mayun1.jpg info to be added."}],"result_num":2,"lo
g_id":2797092861071813}
0: 18 scores: 94 group: face1000
1: 18 scores: 94 group: face1000
0
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id ja
ckma.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"18","scores":[91.986534118652],"group_id":"face1000","user_in
fo":"mayun1.jpg info to be added."},{"uid":"18","scores":[91.986534118652],"grou
p_id":"face1000","user_info":"mayun1.jpg info to be added."}],"result_num":2,"lo
g_id":2799813774071813}
0: 18 scores: 91 group: face1000
1: 18 scores: 91 group: face1000
0
5.2.3不在庫人員1
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id no
reg1.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"18","scores":[20.506534576416],"group_id":"face1000","user_in
fo":"mayun1.jpg info to be added."},{"uid":"18","scores":[20.506534576416],"grou
p_id":"face1000","user_info":"mayun1.jpg info to be added."}],"result_num":2,"lo
g_id":2852407994071813}
0: 18 scores: 20 group: face1000
1: 18 scores: 20 group: face1000
0
5.2.4不在庫人員2
F:\XXX\工作\201806\人臉識別應用研究\百度人臉識別\人臉識別SDKv3>face.py -id no
reg2.jpg
//------ start read image data ...
//------ start urlencode data ...
//------ start request() ...
//------ start urlopen() ...It may take a while....
{"result":[{"uid":"13","scores":[54.975402832031],"group_id":"face1000","user_in
fo":"jetLi_2ren.jpg info to be added."},{"uid":"13","scores":[54.975402832031],"
group_id":"face1000","user_info":"jetLi_2ren.jpg info to be added."}],"result_nu
m":2,"log_id":2861838227071813}
0: 13 scores: 54 group: face1000
1: 13 scores: 54 group: face1000
0
5.3 人臉識別測試2
在人臉庫中注冊數量達到10872個時,測試人臉(參見附錄2:測試照片集)識別的結果如下表,可見與5.2 人臉識別測試1 結果完全相同:
1,在控制輸入圖片尺寸不要過大時,api識別反饋時間小於1秒
2,以匹配分數80為界,在庫人員和非在庫人員識別結果正確。
測試類別 |
輸入 |
圖片尺寸 |
輸出 |
最高匹配得分 |
識別是否正確 |
耗時(秒) |
在庫人員1 |
Jack1.jpg |
500*667 |
jack-kwok1.jpg |
95 |
1 |
0 |
Jack2.jpg |
500*667 |
jack-kwok1.jpg |
95 |
1 |
0 |
|
Jack3.jpg |
500*667 |
jack-kwok2,jpg |
94 |
1 |
0 |
|
在庫人員2 |
JackMa.jpg |
500*434 |
mayun1.jpg |
91 |
1 |
0 |
JackMa2.jpg |
733*574 |
mayun1.jpg |
94 |
1 |
0 |
|
在庫人員3 |
Ldh_test1.jpg |
|
Ldh_2ren.jpg |
85 |
1 |
0 |
Ldh_test2.jpg |
|
Ldh_2ren.jpg |
94 |
1 |
0 |
|
不在庫人員1 |
Noreg1.jpg |
1730*1597 |
- |
20 |
1 |
0 |
不在庫人員2 |
Noreg2.jpg |
634*407 |
- |
54 |
1 |
0 |
不在庫人員3 |
Noreg3.jpg |
|
|
22 |
1 |
0 |
6,測試結論
經實測,總結百度在線人臉識別功能具有准確、快速、方便、免費等4大特點,具體如下:
優勢:
² 識別准確。一般在庫人員匹配值>80,而非在庫人員匹配值遠小於80。
² 識別快速。1萬注冊人臉下的識別時間小於1秒。
² 支持人臉庫采用API管理,方便使用。
² 人臉識別下基礎在線API接口調用量免費,無需支付費用即可無限制調用。
劣勢:
² QPS限制。QPS(query per second)指每秒向服務發送的請求數量峰值,相當於每個API每秒可以允許請求的最大上限數量。免費QPS默認為2,如果您通過百度雲的企業認證,基礎在線API接口的免費QPS將擴充至10。QPS可按天按月靈活購買:300元 / 月 / QPS 或 30元 / 天 / QPS
² 應用開發無自主核心技術,完全依賴百度雲服務,現場需順暢連接互聯網。
注意事項:
² 本次測試對於識別准確性的測試並不完整,實際使用中有諸多因素可能降低識別率。如帽子、眼鏡等的遮擋,光線過亮或過暗的影響,人員側臉、低頭、化妝等多種因素。
² 如果不想受QPS和在線使用的限制,百度也提供了人臉離線識別SDK,以及SDK+API離在線混用模式。但人臉離線識別SDK需按每設備299元付費。詳見:http://ai.baidu.com/tech/face/offline-sdk
附錄1:人臉庫注冊照片集
附錄2:測試照片集