人脸检测工具专栏——OpenCV
人脸检测技术在我们生活中经常被用到,人脸面部识别、年龄以及表情的识别都是以人脸为基础。接下来我分享一下最近整理的开源人脸检测工具,由于篇幅较长,所以打算将此作为一个专栏,希望能给AI实战营的小伙伴们提供帮助!
目前常用的人脸检测工具有:OpenCV Haar级联分类器、MTCNN方式、dlib方式...(后续会继续补充),首先介绍一下OpenCV.....
什么是OpenCV?
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了很多函数,这些函数非常高效地实现了计算机视觉算法(最基本的滤波到高级的物体检测皆有涵盖)。
OpenCV 使用 C/C++ 开发,同时也提供了 Python、Java、MATLAB 等其他语言的接口。
OpenCV 是跨平台的,可以在 Windows、Linux、Mac OS、Android、iOS 等操作系统上运行。
OpenCV 的应用领域非常广泛,包括图像拼接、图像降噪、产品质检、人机交互、人脸识别、动作识别、动作跟踪、无人驾驶等。
(以上源于百度搜索)
什么是级联分类器?
大致知道OpenCV的作用后,来看下Haar特征+Adaboost级联分类器,Haar特征算子就是下图的所有黑色矩阵的像素值减去所有白色矩阵像素值的和。
Haar特征可以在检测窗口中由放大+平移产生一系列子特征。可以简单理解为算子在图片上横扫过去生成多个框检索是否有人脸的存在。
准备工作
打开ModelArts控制台选择notebook:
点击new,选择Tensorflow1.13.1框架。如图:
注:Modelarts中安装好了OpenCV供我们使用,无需再次安装。
将测试图片先上传到notebook中,如图,点击Upload上传自己的本地图片:
代码实战
将haarcascade_frontalface_alt.xml用path变量存储起来。接下来配置分类器,读取图片后进行灰度化处理,处理完将图片传入检测器中检测。
haarcascade_frontalface_alt.xml文件可以理解为模型,存储了6061个特征,38个阶段,算子的位置大小形状,直接使用即可。
下图给出detectMultiScale检测函数中的参数介绍:
第六行代码中detectMultiScale方法中和第一种方法中介绍的一样,gray就是image,1.3代表scaleFactor,5是minNeighbors。
最后输出图片结果:
解释下最后一句from PIL import Image,PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库。由于我们对图片进行灰度处理,需要从numpy数组格式转换回image格式,故使用Image.fromarray(img)。
文中所述的完整代码如下,欢迎大家参考学习!
path="/home/ma-user/anaconda3/envs/TensorFlow-1.13.1/lib/python3.6/site-packages/cv2/data/haarcascade_frontalface_alt.xml" import cv2 face_cascade = cv2.CascadeClassifier(path) #修改为自己的图片文件名 image_path = "./img_1.jpeg" img = cv2.imread(image_path) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray,1.3,5) for(x,y,w,h) in faces: cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2) img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) from PIL import Image Image.fromarray(img)
上述便是本篇文章的全部内容,如有错误,希望各位小伙伴能热心指出,共同进步,在AI学习的旅程中,狩猎愉快!
- 点赞
- 收藏
- 关注作者
评论(0)