黑龙江11选5

OpenVINOTM,给你看得见的未来!>>
电子产品世界 » 论坛黑龙江11选5 » 企业专区 » OpenVINO生态社区 » 黑龙江11选5【原创】项目实战—人脸检测之卷积神经网络实战(六)

共13条 1/2 1 2 跳转至

【原创】项目实战—人脸检测之卷积神经网络实战(六)

高工
2020-08-26 20:55:01    评分

项目实战—人脸检测之卷积神经网络实战

现在我们来进行实战,以前的方法中,很大一部分工作是选择滤波器来创建特征,以便尽从图像中可能多地提取信息。随着深度学习和计算能力的提高,这项工作现在可以实现自动化。CNN 的名称就来自我们用一组滤波器卷积初始图像输入的事实。需要选择的参数仍是需要应用的滤波器数量以及尺寸。滤波器的尺寸称为步幅。一般步幅设置在 2 5 之间。

                                              image.png

在这种特定情况下,CNN 的输出是二分类,如果有人脸,则取值 1,否则取 0

检测图像上的人脸

一些元素在实现中会发生变化。

第一步是下载预训练模型:

将下载后的权重放到文件夹中,并定义 dnnDaceDetector

dnnFaceDetector = dlib.cnn_face_detection_model_v1"mmod_human_face_detector.dat"

完整代码:

import cv2
 import dlib
 import matplotlib.pyplot as plt
 
 dnnFaceDetector = dlib.cnn_face_detection_model_v1('mmod_human_face_detector.dat')
 gray = cv2.imread('min.jpg', 0)
 rects = dnnFaceDetector(gray, 1)
 for (i, rect) in enumerate(rects):
     x1 = rect.rect.left()
     y1 = rect.rect.top()
     x2 = rect.rect.right()
     y2 = rect.rect.bottom()
     # Rectangle around the face
     cv2.rectangle(gray, (x1, y1), (x2, y2), (255, 255, 255), 3)
 plt.figure(figsize=(12,8))
 plt.imshow(gray, cmap='gray')
 plt.show()

实验结果:

image.png

最后,实现实时 CNN 人脸检测:

video_capture = cv2.VideoCapture(0)
 flag = 0
 dnnFaceDetector = dlib.cnn_face_detection_model_v1('mmod_human_face_detector.dat')
 
 while True:
     # Capture frame-by-frame
     ret, frame = video_capture.read()
 
     gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
     rects = dnnFaceDetector(gray, 1)
 
     for (i, rect) in enumerate(rects):
         x1 = rect.rect.left()
         y1 = rect.rect.top()
         x2 = rect.rect.right()
         y2 = rect.rect.bottom()
 
         # Rectangle around the face
         cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
 
     # Display the video output
     cv2.imshow('Video', frame)
 
     # Quit video by typing Q
     if cv2.waitKey(10) & 0xFF == ord('q'):
         break
 
 video_capture.release()
 cv2.destroyAllWindows()

这些只是卷积神经网络的一些很简单的应用,由于其对硬件资源的依赖较大,所以一般我们用显卡来运算。

至于卷积神经网络的一些其他知识,我们并不详述,其本身属于一个较为复杂的知识体系,如果大家有兴趣,可以看看机器学习的内容,了解神经网络、BP神经网络、优化器、损失函数、各种梯度下降算法、以及各种高级网络模型的搭建等等。

总之不要急着入手深度学习,深度学习本身属于机器学习的一个分支,只要掌握好机器学习的知识,深度学习基本上就是网络模型的搭建,各种层的叠加,大量数据集的“炼丹”过程。在现有的已成熟的深度学习框架TensorFlow以及pytorch的情况下,深度学习也不再复杂,真正的核心反而是机器学习的基础算法。

曾经有人问我,深度学习框架选择哪一个比较好,事实上在我看来,pytorch用来入门更为方便,且由于其构件计算图的方便性,目前在学术界已经占了大比例,Tensorflow更适合工业界生态的部署,但目前这个局面可能正在被打破,也许在未来几年后,Tensorflow的优势可能越来越弱。

以上仅仅是我个人的看法,从全局来讲,这些东西都只是一个框架而已,无论是TensorFlow还是pytorch都属于框架,真正的核心仍然是机器学习算法,掌握了核心的东西,我们在使用各种框架时,通过阅读使用手册,基本上就能做到实战化,基础仍然十分重要。谨记!

 

 

 

 

 


对计算机视觉感兴趣?这个社区推荐给你~

>>点击了解OpenVINO生态开发社区



助工
2020-08-27 18:25:15    评分
2楼

谢谢分享


助工
2020-08-27 18:31:57    评分
3楼

学习一下


助工
2020-08-27 18:36:00    评分
4楼

收藏了


助工
2020-08-27 18:39:13    评分
5楼

感谢楼主分享


助工
2020-08-27 18:41:57    评分
6楼

谢谢楼主分享


助工
2020-08-27 18:44:35    评分
7楼

谢谢分享


工程师
2020-08-27 23:05:07    评分
8楼

讲解的非常好


专家
2020-08-28 13:36:57    评分
9楼

给祝老师送花。这个系列要仔细跟着练习了



助工
2020-08-29 15:26:56    评分
10楼

感谢您的分享


共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
安徽11选5开奖 安徽11选5 江苏快3 山西福彩网 河北福彩网 黑龙江11选5 贵州快3走势 江苏快3 浙江快乐12玩法 宁夏11选5走势图