CoLab - 图像人脸检测_框出人脸

此文章教你如何使用谷歌Colaboratory实现静止图片的人脸检测和划框框。

CoLab最大好处:GPU计算速度快!

注:

· 国内登陆Colab需使用到梯梯才能使用;

· 初次接触Colab同学请先自行搜索熟悉基本操作;

· 同学们可自行尝试将代码放到Jetson Nano环境,或其他具备GPU环境运行​;

· ipynb格式的教程传送门在此。


准备工作& 安装库

1) CoLab开启GPU支持

上方菜单栏 ➡ 代码执行程序 ➡ 更改运行时类型 ➡ 笔记本设置 ➡ 硬件加速器:GPU

2) 安装:依赖项

通过apt安装一些基本库,为了支持numpy和dlib的运行
(注:CuLab内置已经有numpy)

!sudo apt-get update
!sudo apt-get install python3-pip cmake libopenblas-dev liblapack-dev libjpeg-dev
!pip3 install numpy

3) 安装:Dlib深度学习库

大师Davis King创建的深度学习库,使得face_recognition库的运行效率大大提高。

下载dlib,解压代码,安装dlib
(CuLab环境下安装需10分钟左右,耐心等待一下)

!wget http://dlib.net/files/dlib-19.17.tar.bz2
!tar jxvf dlib-19.17.tar.bz2
!cd dlib-19.17;python setup.py install

4) 安装:人脸识别库 Face_recognition

以上完成之后,我们就开始安装人脸识别python库face_recognition啦:

!sudo pip3 install face_recognition

加载大神Adam Geitgey在GitHub的源代码文档

!git clone https://github.com/ageitgey/face_recognition.git

(一)人脸划框框(一步步教你玩)

加载人脸识别、OpenCV和MatPlotlib库

import face_recognition
import cv2
import matplotlib.pyplot as plt

首先我们先下载一张复仇联盟合照,将其图片Wget下载到“文件”根目录下,并修改命名为avengers_cast.jpeg

然后通过load_image_file可以将图片文件转变为数组数据,利用MatPlotlib的imshow来输出原图像。

!wget https://www.cheatsheet.com/wp-content/uploads/2019/05/The-Avengers-Cast-640x427.jpg -O avengers_cast.jpeg
image = face_recognition.load_image_file("/content/avengers_cast.jpeg")
plt.imshow(image)


face_locations模块对图像数据进行处理,定位人脸位置:四值 ➡ 两坐标: y1,x1,y2,x2

face_locations = face_recognition.face_locations(image)
#统计出一共多少人脸数
print("图像检测到人脸数:", len(face_locations))
#输出所有人脸定位数据
print (face_locations)

得到以下结果:

图像检测到人脸数: 7
[(118, 197, 154, 161), (98, 325, 134, 289), (98, 253, 134, 217), (103, 415, 146, 371), (84, 544, 127, 501), (78, 481, 114, 445), (118, 103, 161, 59)]

利用cv2的rectangle函数进行画框:
参考函数讲解OpenCV Python 2D绘制矩形

#为第一个人脸画框(注意xy轴数值输入顺序)
img_test = cv2.rectangle(image, (face_locations[0][1], face_locations[0][0]), (face_locations[0][3], face_locations[0][2]), (255,0,0),5)
#输出效果图像
plt.imshow(img_test)


编写循环语句,为所有人脸画框:

#为所有人脸画框
for i in face_locations:img1_detect = cv2.rectangle(image, (i[1], i[0]), (i[3], i[2]),  (255,0,0),5)
#输出效果图像
plt.imshow(img1_detect)


接下来,我再找多个案例来试试:马爸爸与校友合照

#案例2:下载图片
!wget http://5b0988e595225.cdn.sohucs.com/images/20180513/0b958761ba0f4b99b35747ac656f4ec4.jpeg -O Jack_Ma_schoolmates.jpeg
#将图片数据化赋值到img2
img2 = face_recognition.load_image_file("/content/Jack_Ma_schoolmates.jpeg")
#识别人脸数据
face_locations_img2 = face_recognition.face_locations(img2)
#为所有人脸画框
for i in face_locations_img2:img2_detect = cv2.rectangle(img2, (i[1], i[0]), (i[3], i[2]), (255,0,0), 5)
#输出效果图像
plt.imshow(img2_detect)
#统计出一共多少人脸数
print("图像总人脸数:", len(face_locations_img2))


以上例子就能发现,这人脸识别并不完美:

部分同学未被识别入框,且前排蓝色衣服同学某衣服处竟然被错认为是人脸!

为什么会这样子?是因为本项目的人脸识别是基于C++开源库dlib中的深度学习模型,用Labeled Faces in the Wild人脸数据集进行训练,这个库的人脸数据几乎都是外国成人…… 因此,

此人脸识别模型对亚洲人和小孩脸的识别准确率尚待提升

那有没有更好的开源库来检测人脸呢?是有的,

比如主编朋友就推荐我使用MTCNN,此模块在检测人脸效率会更加高,不管所检测的人脸是什么种族。

有关此部分的教程,主编另外再找时间编辑好分享给大家吧

CoLab - 图像人脸检测_框出人脸相关推荐

  1. flutter 人脸检测_【转载】opencv实现人脸检测

    全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...

  2. 基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统

    基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统 一.功能需求 二.数据库建立 2.1 初始化数据库 2.2 压缩/解压数据流 2.3 输入数据 三.宿舍管理 3.1 新建录入 ...

  3. 人脸检测和识别:人脸检测(Python)

    在静态图像或者视频中检测人脸的操作非常相似.视频人脸检测只是从摄像头读出每帧图像,然后采用静态图像中的人脸检测方法进行检测.至于视频人脸检测涉及到的其他处理过程,例如轨迹跟踪,将在以后完善.本文只介绍 ...

  4. 深度学习cnn人脸检测_用于对象检测的深度学习方法:解释了R-CNN

    深度学习cnn人脸检测 介绍 (Introduction) CNN's have been extensively used to classify images. But to detect an ...

  5. javacv 人脸检测_使用JavaCV进行手和手指检测

    javacv 人脸检测 这篇文章是Andrew Davison博士发布的有关自然用户界面(NUI)系列的一部分,内容涉及使用JavaCV从网络摄像头视频提要中检测手. 注意:本章的所有源代码都可以从h ...

  6. python 人脸检测_借助摄像头在Python中实现人脸检测

    Python部落(www.freelycode.com)组织翻译, 禁止转载 本文作者是Shantnu Tiwari--曾多年在C/C++的魔爪中饱受折磨,直到他发现了Python--使用起来感觉如呼 ...

  7. 基于python的移动物体检测_感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python)...

    感兴趣区域.特定区域.框出移动物体的轮廓.越界检测.入侵物体检测.使用 opencv-python库的函数cv2.findContours.cv2.approxPolyDP.cv2.arcLength ...

  8. Azure 微软|人脸检测|边界框检测|物体分类检测|WEB_API|PYTHON

    开通服务 略 环境 pip install --upgrade azure-cognitiveservices-vision-computervision pip install pillow sub ...

  9. python 人脸检测_厉害了,用Python一行代码实现人脸识别

    编辑推荐: 来源于微信号datanami,从环境搭建到人脸识别,图文以及代码叙述详细,希望对大家有帮助. 摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图 ...

最新文章

  1. YML(2)yml 语法
  2. freebsd系统/: write failed, filesystem is full问题解决办法
  3. 使用Python实现真正意义上的随机数,谁能破解奖励1千万
  4. VR眼镜,怎样才算性感?
  5. i节点详解以及软连接和硬链接的区别
  6. 秒杀多线程第五篇 经典线程同步 关键段CS
  7. Android ActivityManager 检测Service与Activity运行状态
  8. ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
  9. 安装SQL Server Express和SQL Server Management Studio
  10. JDK GUI对应的c文件
  11. 云计算计算机二级,2021计算机二级office用的是哪个版本
  12. (1.5万字图文)解读华为集成产品开发IPD之市场管理流程(MM流程)
  13. 2017 matlab 仿真,Matlab 2017a 安装程序
  14. Linux沙箱技术简介
  15. 腾讯产品总监曹菲:如何克服职业焦虑
  16. Ubuntu启动项管理
  17. 基于广义线性组合的Capon波束形成原理介绍及MATLAB实现
  18. Ubuntu 16.04 LTS安装搜狗输入法解析
  19. mysql查询行数count(*)、coun(1)、count(primary key)查询效率问题
  20. die_visual

热门文章

  1. centos 6.8使用wine安装QQ2016
  2. [Verilog硬件描述语言]程序设计语句
  3. 第四章-1 Hashcat
  4. 一个实习生的CnosDB之旅
  5. 编译64位Detours(其他vs版本同理)
  6. 勒索软件、移动恶意软件攻击将在2020年激增
  7. Qt获取当前系统时间和时间戳及其之间转换
  8. VMware 黑苹果开机失败 磁盘修复
  9. angularjs中ng-show与css中display:none的优先级问题
  10. 关于stc,stm32,gd32单片机 isp 通过CAT1 ota升级的说明