python人脸识别从入门到工程实践,python实现人脸识别系统

  python人脸识别从入门到工程实践,python实现人脸识别系统

  接着系列一,继续开始我们人脸识别。

  计算机编程语言模块:人脸识别在计算机编程语言中,你可以导入人脸识别模块,调用丰富的应用程序接口接口,用几行代码就可以轻松玩转各种人脸识别功能!

  应用程序接口接口文档:https://人脸识别。阅读文档。io(可以参考这个)

  在图片中定位人脸的位置关键代码导入人脸识别

  image=face _ recognition。load _ image _ file( my _ picture。jpg’)

  面部位置=面部识别。面部_位置(图像)

  #面孔_位置现在是一个数组,列出了每张脸的坐标!

  看定位鞠婧祎的脸:在认识_人文件夹中创建find_faces_in_picture.py文件并写入以下代码:

  从太平航运进口图片

  导入人脸识别

  #将使用jpeg文件交换格式存储的编码图像文件扩展名文件加载到数组数组中

  image=face _ recognition。load _ image _ file(鞠婧祎. JPEG’)

  #使用默认的基于猪的模型查找图像中的所有人脸。

  #这种方法相当准确,但不如美国有线新闻网;卷积神经网络模型准确,而且不是国家政治保卫局。参见OGPU加速的。

  #另请参阅:find_faces_in_picture_cnn.py

  面部位置=面部识别。面部_位置(图像)

  打印(我在这张照片中找到了{}张脸。。格式(len(face_locations)))

  对于面部_位置中的face_location:

  #打印此图像中每张脸的位置

  顶部、右侧、底部、左侧=面_位置

  打印(人脸位于像素位置上:{},左:{},下:{},右:{} 。格式(上、左、下、右))

  #您可以像这样访问实际的人脸本身:

  face _ image=image[上:下,左:右]

  pil _ image=image。来自数组(face _ image)

  pil_image.show()

  然后终端切换到认识_人目录下,输入以下命令,弹出窗口如下:可以看到终端已经找到鞠婧祎人脸坐标分别是:上:297,左:553,下:759,右:1016,并输出人脸。继续测试

  将第二段第二行改为image=face _ recognition。load _ image _ file(特朗普. jpg’),终端输出如下:你也可以使用深度学习模型达到更加精准的人脸定位。

  注意:这种方法需要国家政治保卫局。参见国家政治保卫局加速(通过英伟达显卡的库达库驱动),你在编译安装dlib的时候也需要开启库达支持。

  导入人脸识别

  image=face _ recognition。load _ image _ file( my _ picture。jpg’)

  面部位置=面部识别。face _ locations(image,model=cnn )

  #面孔_位置现在是一个数组,列出了每张脸的坐标!

  看案例:利用卷积神经网络深度学习模型定位鞠婧祎的人脸在认识_人文件夹中创建find_faces_in_picture_cnn.py文件并写入以下代码:

  从太平航运进口图片

  导入人脸识别

  #将使用jpeg文件交换格式存储的编码图像文件扩展名文件加载到数组数组中

  image=face _ recognition。load _ image _ file(鞠婧祎. jpg’)

  #使用预先训练的卷积神经网络找到图像中的所有人脸。

  #此方法比默认的猪模型更准确,但速度较慢

  #除非你有图形处理器和用库达扩展编译的dlib .但是如果你做了,

  #这将使用国家政治保卫局。参见OGPU加速,性能良好。

  #另请参阅:find_faces_in_picture.py

  面部位置=面部识别。face _ locations(image,number_of_times_to_upsample=0,model=cnn )

  打印(我在这张照片中找到了{}张脸。。格式(len(face_locations)))

  对于面部_位置中的face_location:

  #打印此图像中每张脸的位置

  顶部、右侧、底部、左侧=面_位置

  打印(人脸位于像素位置上:{},左:{},下:{},右:{} 。格式(上、左、下、右))

  #您可以像这样访问实际的人脸本身:

  face _ image=image[上:下,左:右]

  pil _ image=image。来自数组(face _ image)

  pil_image.show()然后终端切换到认识_人目录下,输入以下命令,弹出窗口如下:

  如果你有很多图片需要识别,同时又有GPU,那么你可以参考这个例子:

  案例:利用卷积神经网络深度学习模型批量识别人脸照片

  在认识_人文件夹中创建find_faces_in_batches.py文件并写入以下代码:

  导入人脸识别

  导入cv2

  #这段代码使用美国有线新闻网;卷积神经网络模型在图像列表中查找所有的人脸。

  #

  #这个演示是为特殊情况准备的,当你需要在大量图像中快速找到人脸时

  #完全一样大。这在有大量视频帧的视频处理应用中很常见

  #要处理。

  #

  #如果您正在处理大量图像,并使用带有库达的GPU,批处理速度可能比处理速度快3倍左右

  #一次一张图。但是如果你没有使用GPU,那么批处理将不会有很大帮助。

  #

  #请注意:这个例子只需要安装OpenCV("cv2 "库)来读取视频文件。

  # OpenCV *不是*使用人脸识别库所必需的。只有当你想运行它时才需要它

  #具体演示。如果您在安装它时遇到问题,请尝试其他不需要它的演示。

  #打开视频文件

  视频_捕捉=cv2 .视频捕获( short _ Hamilton _ clip。MP4’)

  框架=[]

  frame_count=0

  while video_capture.isOpened():

  #抓取一帧视频

  ret,frame=video_capture.read()

  #当视频文件结束时退出

  如果不是ret:

  破裂

  #将图像从班戈颜色(OpenCV使用)转换为RGB颜色(人脸识别使用)

  frame=frame[:-1]

  #将视频的每一帧保存到列表中

  frame_count=1

  框架.附加(帧)

  #每隔128帧(默认批量大小),批量处理帧列表以查找人脸

  如果镜头(帧数)==128:

  batch _ of _ face _ locations=face _ recognition。batch _ face _ locations(frames,number _ of _ times _ to _ upsample=0)

  #现在让我们列出在所有128帧中找到的所有面孔

  对于frame_number_in_batch,face _ locations in enumerate(batch _ of _ face _ locations):

  帧内面数=len(面位置)

  帧编号=帧计数- 128帧编号批量

  打印(我在第{}帧中找到了{}张面孔。。格式(帧中的面数,帧号)

  对于面部_位置中的face_location:

  #打印该帧中每个面的位置

  顶部、右侧、底部、左侧=面_位置

  打印(-人脸位于像素位置上:{},左:{},下:{},右:{} 。格式(上、左、下、右))

  #清除帧数组以开始下一批

  框架=[]

  注意到:这个例子需要安装openCV .这个例子需要GPU cuda加速,否则运行卡顿。我就试了几次,电脑死机,先跳过,以后再说。

  案例:使用卷积神经网络深度学习模型把来自网络摄像头视频的人脸高斯模糊。在认识_人文件夹中创建blur_faces_on_webcam.py文件并写入以下代码:

  导入人脸识别

  导入cv2

  #这是视频中模糊人脸的演示。

  #请注意:本示例要求安装OpenCV("cv2 "库),以便从您的网络摄像头读取。

  # OpenCV *不是*使用人脸识别库所必需的。只有当你想运行它时才需要它

  #具体演示。如果您在安装它时遇到问题,请尝试其他不需要它的演示。

  #获取网络摄像机#0的引用(默认)

  视频_捕捉=cv2 .视频捕获(0)

  #初始化一些变量

  face_locations=[]

  虽然正确:

  #抓取一帧视频

  ret,frame=video_capture.read()

  #将视频帧调整为1/4大小,以加快人脸检测处理速度

  small_frame=cv2.resize(frame,(0,0),fx=0.25,fy=0.25)

  #查找当前视频帧中的所有面孔和面孔编码

  面部位置=面部识别。face _ locations(small _ frame,model=cnn )

  #显示结果

  对于面部_位置中的顶部、右侧、底部和左侧:

  #放大脸部位置,因为我们在中检测到的帧被放大到1/4大小

  top *=4

  右*=4

  底部*=4

  左*=4

  #提取图像中包含人脸的区域

  face _ image=frame[上:下,左:右]

  #模糊面部图像

  face_image=cv2 .GaussianBlur(face_image,(99,99),30)

  #将模糊的面部区域放回帧图像中

  框架[上:下,左:右]=面部图像

  #显示结果图像

  cv2.imshow(视频,帧)

  #按键盘上的“q”退出!

  if cv2.waitKey(1)0xFF==ord(q ):

  破裂

  #松开网络摄像头的手柄

  视频_捕获.发布()

  2.cv2.destroyAllWindows()然后终端切换到knowe _ people目录,输入下面的命令。弹出窗口如下:(希望舍友不介意我卖宿舍,嘻嘻)

  好了,今天到此为止。今天主要实现四个功能(如下)。更多功能见以下系列。案例一:定位kiku的人脸案例二:用卷积神经网络深度学习模型定位kiku的人脸案例三:用卷积神经网络深度学习模型批量识别人脸照片案例四:用卷积神经网络深度学习模型从网络摄像头视频中高斯模糊人脸。源代码:https://github.com/ageitgey/face_recognition

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: