CoLab - 图像人脸检测_框出人脸
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 - 图像人脸检测_框出人脸相关推荐
- flutter 人脸检测_【转载】opencv实现人脸检测
全文转载自CSDN的博客(不知道怎么将CSDN的博客转到博客园,应该没这功能吧,所以直接复制全文了),转载地址如下 http://blog.csdn.net/lsq2902101015/article ...
- 基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统
基于wxpython+MySQL--实现人脸检测识别的宿舍人脸检测系统 一.功能需求 二.数据库建立 2.1 初始化数据库 2.2 压缩/解压数据流 2.3 输入数据 三.宿舍管理 3.1 新建录入 ...
- 人脸检测和识别:人脸检测(Python)
在静态图像或者视频中检测人脸的操作非常相似.视频人脸检测只是从摄像头读出每帧图像,然后采用静态图像中的人脸检测方法进行检测.至于视频人脸检测涉及到的其他处理过程,例如轨迹跟踪,将在以后完善.本文只介绍 ...
- 深度学习cnn人脸检测_用于对象检测的深度学习方法:解释了R-CNN
深度学习cnn人脸检测 介绍 (Introduction) CNN's have been extensively used to classify images. But to detect an ...
- javacv 人脸检测_使用JavaCV进行手和手指检测
javacv 人脸检测 这篇文章是Andrew Davison博士发布的有关自然用户界面(NUI)系列的一部分,内容涉及使用JavaCV从网络摄像头视频提要中检测手. 注意:本章的所有源代码都可以从h ...
- python 人脸检测_借助摄像头在Python中实现人脸检测
Python部落(www.freelycode.com)组织翻译, 禁止转载 本文作者是Shantnu Tiwari--曾多年在C/C++的魔爪中饱受折磨,直到他发现了Python--使用起来感觉如呼 ...
- 基于python的移动物体检测_感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python)...
感兴趣区域.特定区域.框出移动物体的轮廓.越界检测.入侵物体检测.使用 opencv-python库的函数cv2.findContours.cv2.approxPolyDP.cv2.arcLength ...
- Azure 微软|人脸检测|边界框检测|物体分类检测|WEB_API|PYTHON
开通服务 略 环境 pip install --upgrade azure-cognitiveservices-vision-computervision pip install pillow sub ...
- python 人脸检测_厉害了,用Python一行代码实现人脸识别
编辑推荐: 来源于微信号datanami,从环境搭建到人脸识别,图文以及代码叙述详细,希望对大家有帮助. 摘要: 1行代码实现人脸识别,1. 首先你需要提供一个文件夹,里面是所有你希望系统认识的人的图 ...
最新文章
- YML(2)yml 语法
- freebsd系统/: write failed, filesystem is full问题解决办法
- 使用Python实现真正意义上的随机数,谁能破解奖励1千万
- VR眼镜,怎样才算性感?
- i节点详解以及软连接和硬链接的区别
- 秒杀多线程第五篇 经典线程同步 关键段CS
- Android ActivityManager 检测Service与Activity运行状态
- ebs 选择excel输出 后缀 html,Oracle EBS XML报表中数字的处理(Excel输出)
- 安装SQL Server Express和SQL Server Management Studio
- JDK GUI对应的c文件
- 云计算计算机二级,2021计算机二级office用的是哪个版本
- (1.5万字图文)解读华为集成产品开发IPD之市场管理流程(MM流程)
- 2017 matlab 仿真,Matlab 2017a 安装程序
- Linux沙箱技术简介
- 腾讯产品总监曹菲:如何克服职业焦虑
- Ubuntu启动项管理
- 基于广义线性组合的Capon波束形成原理介绍及MATLAB实现
- Ubuntu 16.04 LTS安装搜狗输入法解析
- mysql查询行数count(*)、coun(1)、count(primary key)查询效率问题
- die_visual