Github项目|几行代码即可实现人脸检测、目标检测的开源计算机视觉库

关注&置顶“算法猿的成长

每日8:30,干货速递!

2019 年第 73 篇文章,总第 97 篇文章

今天介绍一个简单、易用的开源计算机视觉库,名字是 cvlib,其 Github 地址:

https://github.com/arunponnusamy/cvlib

官方文档地址:

http://cvlib.net/

安装

cvlib 这个库首先需要安装这两个库:

  • tensorflow

  • opencv

快速的安装方法是:

pip install opencv-python tensorflow

当然上述安装的 tensorflow 是 cpu 版本,如果希望安装可以使用 gpu 的,安装包名字是 tensorflow-gpu ,安装 gpu 版本需要注意安装正确版本的英伟达驱动、CUDA、CUDNN。

接着就是正式安装 cvlib,简单的安装方法是通过 pip

pip install cvlib

如果是希望升级到最新版本,命令为:

pip install --upgrade cvlib

第二种通过源码安装方法,只需要按照下列命令依次执行即可:

git clone https://github.com/arunponnusamy/cvlib.git
cd cvlib
python setup.py sdist
pip install .

注意:目前仅在 Python 3.x 版本测试通过,而 2.x 版本并没有进行测试,所以建议在 Python 3.x 环境使用该库。

主要功能

目前 cvlib 支持以下几种应用:

  • 人脸检测

  • 性别检测

  • 目标检测

人脸检测

人脸检测的接口是 detect_face(),返回的结果是所有检测到的人脸的一个坐标点和置信度。

代码示例:

import cvlib as cv
import sys
import cv2
import os # read input image
image = cv2.imread(sys.argv[1])# apply face detection
faces, confidences = cv.detect_face(image)print(faces)
print(confidences)# loop through detected faces
for face,conf in zip(faces,confidences):(startX,startY) = face[0],face[1](endX,endY) = face[2],face[3]# draw rectangle over facecv2.rectangle(image, (startX,startY), (endX,endY), (0,255,0), 2)# display output
# press any key to close window           
cv2.imshow("face_detection", image)
cv2.waitKey()# save output
cv2.imwrite("face_detection.jpg", image)# release resources
cv2.destroyAllWindows()

输出结果如下所示:

640?wx_fmt=jpeg

人脸检测的底层实现其实是通过 OpenCV 的 dnn 模块,并加载一个预训练的 caffemodel

性别检测

性别检测的接口是 detect_gender(),返回的是标签(男性or女性)以及预测的概率。

代码示例:

import cv2
import cvlib as cv
import sys
import numpy as np# read input image
img = cv2.imread(sys.argv[1])# apply face detection
face, conf = cv.detect_face(img)# loop through detected faces
for f in face:(startX,startY) = f[0],f[1](endX,endY) = f[2],f[3]# draw rectangle over facecv2.rectangle(img, (startX,startY), (endX,endY), (0,255,0), 2)face_crop = np.copy(img[startY:endY, startX:endX])# apply gender detection(label, confidence) = cv.detect_gender(face_crop)print(confidence)print(label)idx = np.argmax(confidence)label = label[idx]label = "{}: {:.2f}%".format(label, confidence[idx] * 100)Y = startY - 10 if startY - 10 > 10 else startY + 10cv2.putText(img, label, (startX, Y),  cv2.FONT_HERSHEY_SIMPLEX,0.7, (0, 255, 0), 2)# display output
# press any key to close window           
cv2.imshow("gender detection", img)
cv2.waitKey()# save output
cv2.imwrite("gender_detection.jpg", img)# release resources
cv2.destroyAllWindows()

输出结果如下所示:

640?wx_fmt=jpeg

从示例代码可以看到,首先是需要检测人脸,然后将人脸部分传入性别检测接口,再得到最终的检测结果。其底层实现是采用 keras 的预训练模型,不过其准确率并不是特别的高,所以可以自己优化模型,提升性别检测的准确率,然后替换模型。

目标检测

目标检测的接口是 detect_common_objects(),它用于检测常见的物体,返回结果是图片中检测到的物体的坐标、类别标签以及置信度。

代码示例如下:

import cvlib as cv
from cvlib.object_detection import draw_bbox
import sys
import cv2# read input image
image = cv2.imread(sys.argv[1])# apply object detection
bbox, label, conf = cv.detect_common_objects(image)print(bbox, label, conf)# draw bounding box over detected objects
out = draw_bbox(image, bbox, label, conf)# display output
# press any key to close window           
cv2.imshow("object_detection", out)
cv2.waitKey()# save output
cv2.imwrite("object_detection.jpg", out)# release resources
cv2.destroyAllWindows()

输出结果:

640?wx_fmt=jpeg

目标检测的底层实现是采用在 COCO 数据集上训练的 YOLOv3 模型。

另外,上述三个功能其实不仅是对图片进行检测,还可以实时调用,通过摄像头捕捉到的实时返回结果,代码例子可以查看:

https://github.com/arunponnusamy/cvlib/tree/master/examples

其他功能

除了上述三个主要功能,其实 cvlib 也还能实现以下两个功能:

  • 获取视频的帧

  • 生成 gif 动图

获取视频的帧是在 utils.py 中的函数 get_frames(),输入是视频的路径,使用方法如下所示:

import cvlib as cv
frames = cv.get_frames('~/Downloads/demo.mp4')

也可以添加一个保存所有帧的文件夹路径,返回的帧 frames 是用列表保存的 numpy 数组形式。

frames = cv.get_frames('~/Downloads/demo.mp4', '~/Downloads/demo_frames/')

生成 gif 动图则是函数 animate() 实现的,它需要输入一批图片或者保存图片的文件夹路径,然后返回一个 gif 并保存。

cv.animate(frames, '~/Documents/frames.gif')

这两个功能,具体可以查看:

https://github.com/arunponnusamy/cvlib/blob/master/cvlib/utils.py#L48

https://github.com/arunponnusamy/cvlib/blob/master/cvlib/utils.py#L87

小结

今天介绍的计算机视觉库 cvlib 是一个非常容易上手的工具,简单实现了人脸检测、性别检测和目标检测三个非常常用的应用。

最后,前两张图片其实是来自一部美剧《硅谷》,这是一部讲述几个程序员创业的故事,非常有趣又有常见的程序员梗,目前出了第四季,第五季也是最后一季估计是在年底播出,还是非常推荐大家看看的。

欢迎关注我的微信公众号--算法猿的成长,或者扫描下方的二维码,大家一起交流,学习和进步!

640?wx_fmt=png

如果觉得不错,在看、转发就是对小编的一个支持!

推荐阅读

  • - [资源分享] Github上八千Star的深度学习500问教程

  • 必读的AI和深度学习博客

  • [Github项目推荐] 机器学习& Python 知识点速查表

  • [Github项目推荐] 推荐三个助你更好利用Github的工具

  • Github上的各大高校资料以及国外公开课视频

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认识迅雷界面引擎

UI开发的新时代----认识迅雷界面引擎 第一部分:交互开发技术概述软件产品的交互开发一直以来都不是一件令人愉悦的事情。首先,由于每个人编写的第一个图形应用程序就已经使用了一些交互开发技术,而且由于IDE工具的强大,容易总结出交互开发就是…

最棒的Chrome插件去哪找?这里有一份榜单

上个月给大家介绍了重大更新后的 扩展迷 Extfans 网站,当时也说到:可以把它当成是一个 Chrome 商店的镜像版,可以无障碍下载安装 Chrome 扩展。不得不说,在不能正常使用 Chrome 商店的情况下,多亏了扩展迷 Extfans 这样…

【原创】推荐广告入门:DeepCTR-Torch,基于深度学习的CTR预测算法库

在计算广告和推荐系统中,CTR预估一直是一个核心问题。无论在工业界还是学术界都是一个热点研究问题,近年来也有若干相关的算法竞赛陆续举办。本文介绍一个使用PyTorch编写的深度学习的点击率预测算法库DeepCTR-Torch,具有简洁易用、模块化和可…

JAVA编程心得-Eclipse/MyEclipse 中文乱码解决办法

将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同。 总结网上的建议和自己的体会,可以参考以下几种解决方式: 1 改变整个…

程序员相亲图鉴

程序员,已经渐渐成当代相亲市场的一只主力军。甚至可以说是“香饽饽”。越来越多的妹子,在写择偶要求时,会说对程序员有好感。因为他们,踏实聪明又靠谱,钱多花花肠子少。但关于程序员谈恋爱的“笑点”也不少&#xff0…

推荐几个提高工作效率的神器

推荐几个提高工作效率的神器,只要用到电脑的工作都适用,可以大大提高工作效率。本文所提到的装备经过本人试用,所有价格来自京东网,建议根据自己的经济条件购买装备(理论上越贵越好),不建议购买…

终于等到你!GitHub 终于支持 multi-line comments!

今天(北京时间 2019 年 10 月 2 日),GitHub CEO Nat Friedman 在 Twitter 发布消息,宣布 GitHub pull request 正式支持 multi-line comments!相信一直用 GitHub 进行 PR review 的童鞋,一定对于 GitHub 的…

github标星11600+:最全的吴恩达机器学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...

吴恩达老师的机器学习课程,可以说是机器学习入门的第一课和最热门课程,我在github开源了吴恩达机器学习个人笔记,用python复现了课程作业,成为热门项目,star数达到11671,曾经有相关报道文章。科学无国界&am…

github标星8331+:吴恩达深度学习课程资源(完整笔记、中英文字幕视频、python作业,提供百度云镜像!)...

吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在github开源,star数达到8331,曾经有相关报道文章。为解决github下载速度较慢&…

GitHub上有哪些比较好的计算机视觉/机器视觉的项目?

来源:Unsplash,作者: JR Korpa 来源:知乎问题今天分享一下 Github 上不错的计算机视觉或者机器视觉方面的项目,包括入门的教程、非常经典的算法和实战项目等等。今日推荐文章github标星11600:最全的吴恩达机…

20个常用的Python小技巧

2019 年第 73 篇文章,总第 97 篇文章 原题 | 20 Python Snippets You Should Learn Today 作者 | Chaitanya Baweja 原文 | https://medium.com/better-programming/20-python-snippets-you-should-learn-today-8328e26ff124 译者 | kbsc13("算法猿的成长&q…