臉部辨識

NEC在2014年7月15日, 美國國家標準與技術研究院U.S. National Institute of Standards and Technology (NIST) ,的臉部辨識技術基準測試中( Face Recognition Vendor Test (FRVT) 2014 performed),於「靜止影像臉部辨識評比測試recent Face Recognition Vendor Test」拔得頭籌。NEC已持續進行臉部辨識技術的開發約25年之久,並於全球20個國家以上導入應用該技術的系統。
資料來源 中時電子報
新聞來源 marketwatch.com

NEC 官方網站 這裡

如果你想對這比賽有更多了解,可以到NIST 官方網站 這裡

Screen Shot 2014-07-19 at 4.23.06 PM
近年來,犯罪與恐怖攻擊的增加也逐漸成為關注議題,並期望能夠像電影全民公敵一樣,透過道路上的監控攝影機,就可以自動找出罪犯。

如果對臉部辨識感興趣的話,目前有些API 可以供開發
#. face recognition algorithm VeriLook 5.5 這例
#. Apple 的 iOS 5 也有API 使用方法 這裡
#. 當然頂頂大名的 Open CV 也有針對 臉部辨識 的範例 這裡
Screen Shot 2014-07-19 at 4.23.55 PM

以下是我用simple CV 所寫的一個帶眼鏡的AR範例,是可以在藍莓派上執行的

 

#!/usr/bin/env python
# author: Powen Ko
from SimpleCV import *
from time import sleep
myCamera = Camera(prop_set={'width':320, 'height': 240}) # 指定網路攝影機的影像大小
myDisplay = Display(resolution=(320, 240)) # 抓取網路攝影機的影像
pic=Image("glasses.png")
mask2= pic.createBinaryMask(color1=(0,0,0), color2=(254,254,254)) # 重點:設定去背顏色
while not myDisplay.isDone():
frame = myCamera.getImage()
faces = frame.findHaarFeatures('face') # 搜尋人臉
if faces:
for face in faces:
print "Face at: " + str(face.coordinates())# 列印出人練臉的中心位置
facelayer = DrawingLayer((frame.width,frame.height)) # 準備一個新的圖層
w=face.width()
h=face.height()
print "x:"+str(w)+" y:"+str(h)
facebox_dim = (w,h)
facebox = facelayer.centeredRectangle(face.coordinates(), facebox_dim)# 畫出一個正方形
frame.addDrawingLayer(facelayer)
frame.applyLayers() # 把圖層放回畫面上
# 辨識 眼睛
myFace = face.crop() # 取的臉部的影像
eyes = myFace.findHaarFeatures('eye') #辨識 眼睛
if eyes:
for eye in eyes:
# 計算出眼鏡的位置
xf = face.x -(face.width()/2)
yf = face.y -(face.height()/2)
xm = eye.x -(eye.width()/2)
ym = eye.y -(eye.height()/2)
x1=pic.width
x1=x1/2
x2=eye.width()
x2=x2/2
xmust = xf+xm -x1+x2
ymust = yf+ym
print "Eye at: " + str(eye.coordinates())
frame = frame.blit(pic,pos=(xmust,ymust),mask = mask2) #畫出眼鏡

else:
print "No faces detected."
frame.save(myDisplay) # 顯示在畫面上
sleep(.1)

Screen Shot 2014-08-18 at 9.28.51 AM