Excel实战解析之项目进度图(excel做进度图)
752
2022-05-29
首先我们通过视频学习之后,会有官方给的链接,复制之后打开如下图一,~因为复制粘贴少了一个符号-
复制粘贴后时(例子):https://nbviewer.jupyter.org/github/huaweicloud/ModelArtsLab/blob/master/notebook/DL_face_recognition_advanced/face_similarity.ipynb
一
然后打开:
https://nbviewer.jupyter.org/图二
需要手动修改一下:https://nbviewer.jupyter.org/github/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face_recognition_advanced/face_similarity.ipynb(成功打开的例子)将手动修改后的链接复制到如下图,回车即可打开
二
本次实验链接 https://nbviewer.jupyter.org/github/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face_detector/face_detection.ipynb
具体操作步骤:
登陆ModelArts控制台https://www.huaweicloud.com/product/modelarts.html -> 开发环境 -> Notebook -> 创建
名称:任意设置参数:python3-公共资源池-GPU-云硬盘EVS
创建Notebook
可以选择免费的版本,但是免费的要排队哦~
点击提交
创建步骤我就直接省略了,直接启动以及创建好的,初次创建只要选择好GPU一般都不会出现什么问题,如果选择cpu可能会出现内存耗尽的问题,所以建议选择GPU~
点击‘new’选择 ’tensorflow-1.13.1’
在Notebook中,我们输入一个简单的打印语句,然后点击上方的运行按钮,可以查看语句执行的结果:"如果未输出结果,则环境还没准备好,稍等一下在试试,还不能输出结果,则重新创建环境
数据和代码下载
运行下面代码,进行数据和代码的下载和解压
import os from modelarts.session import Session sess = Session() if sess.region_name == 'cn-north-1': bucket_path="modelarts-labs/notebook/DL_face_detector/face_detector.tar.gz" elif sess.region_name == 'cn-north-4': bucket_path="modelarts-labs-bj4/notebook/DL_face_detector/face_detector.tar.gz" else: print("请更换地区到北京一或北京四") if not os.path.exists('./models/detector.dat'): sess.download_data(bucket_path=bucket_path, path="./face_detector.tar.gz")
if os.path.exists('./face_detector.tar.gz'): # 使用tar命令解压资源包 os.system("tar -xf ./face_detector.tar.gz") # 清理压缩包 os.system("rm ./face_detector.tar.gz")
安装依赖
!pip install dlib==19.17.0
from PIL import Image import dlib
获取基于神经网络CNN的人脸区域检测器,并加载预训练模型。
dlib.cnn_face_detection_model_v1()方法介绍: http://dlib.net/cnn_face_detector.py.html
cnn_face_detector = dlib.cnn_face_detection_model_v1("./models/detector.dat")
也可以通过notebook的upload按钮上传自己的测试数据。,测试数据需要是图片,并且放在test文件夹下
image = dlib.load_rgb_image("./test.jpg")
检测,得到图片中人脸的位置。返回人脸区域左上角和右下角的坐标
dets = cnn_face_detector(image, 1)
打印检测结果
dets
print("Number of faces detected: {}".format(len(dets))) for i, d in enumerate(dets): print("Detection {}: Left: {} Top: {} Right: {} Bottom: {} Confidence: {}".format( i, d.rect.left(), d.rect.top(), d.rect.right(), d.rect.bottom(), d.confidence))
rects = dlib.rectangles() rects.extend([d.rect for d in dets])
rects
import cv2 res_img = cv2.rectangle(image, (rects[0].left(), rects[0].top()), (rects[0].right(), rects[0].bottom()), 0, 1)
Image.fromarray(res_img)
人脸关键点检测
人脸关键点检测,依赖人脸区域检测输出的人脸位置,然后在人脸区域内检测人脸关键点。会输出68个人脸关键点。
检测人脸区域
获取人脸区域检测器
dlib.get_frontal_face_detector()方法返回基于HoG (Histogram of Oriented Gradients)的人脸区域检测器。HoG是图像处理领域用于目标检测的特征描述器。
detector = dlib.get_frontal_face_detector()
dets = detector(image, 1)
检测人脸关键点
获取基于神经网络的人脸关键点检测模型,并加载预训练模型
predictor_kp = dlib.shape_predictor("./models/shape_predictor_68_face_landmarks.dat")
人脸关键点检测,检测人脸的68个关键点。
for k, d in enumerate(dets): # 遍历每个人脸框 print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format( k, d.left(), d.top(), d.right(), d.bottom())) res_img = cv2.rectangle(res_img,( d.left(), d.top()), (d.right(), d.bottom()), 0, 1) # 检测人脸关键点 shape = predictor_kp(image, d) print("Point 0: {}, Point 1: {} ...".format(shape.part(0), shape.part(1)))
显示关键点检测结果
绘制关键点
for i in range(68): res_img = cv2.circle(res_img,(shape.part(i).x,shape.part(i).y), 1, 255, 4)
显示人脸区域和68个关键点的检测结果
Image.fromarray(res_img)
视频人脸检测
使用OpenCV读取一段视频,然后逐帧显示视频。
from IPython.display import clear_output, Image, display, HTML import time import cv2 import base64 import numpy as np # 原视频来源:UCF-101数据集 video_name = "./face.avi" def arrayShow(img): _,ret = cv2.imencode('.jpg', img) return Image(data=ret) # 打开一个视频流 cap = cv2.VideoCapture(video_name) frame_id = 0 while True: try: clear_output(wait=True) # 清除之前的显示 ret, frame = cap.read() # 读取一帧图片 if ret: frame_id += 1 if frame_id > 100: break cv2.putText(frame, str(frame_id), (5, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) # 画frame_id tmp = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # 转换色彩模式 img = arrayShow(frame) display(img) # 显示图片 time.sleep(0.05) # 线程睡眠一段时间再处理下一帧图片 else: break except KeyboardInterrupt: cap.release() cap.release()
人脸关键点检测函数
使用dlib集成的深度学习模型,检测人脸的68个关键点。
def keypoint_detector(image): global res_img detector = dlib.get_frontal_face_detector() # 获取人脸区域检测器 dets = detector(image, 1) # 检测人脸区域 predictor_kp = dlib.shape_predictor("./models/shape_predictor_68_face_landmarks.dat") # 加载人脸关键点检测模型 for k, d in enumerate(dets): print("Detection {}: Left: {} Top: {} Right: {} Bottom: {}".format( k, d.left(), d.top(), d.right(), d.bottom())) res_img = cv2.rectangle(image,( d.left(), d.top()), (d.right(), d.bottom()), 0, 1) shape = predictor_kp(image, d) # 检测人脸关键点 for i in range(68): res_img = cv2.circle(image,(shape.part(i).x,shape.part(i).y), 1, 255, 2) return res_img
检测视频中的人脸关键点,并显示检测结果,由于dlib做人脸关键点检测比较慢,因此只显示10帧图片的检测结果
def arrayShow(img): _,ret = cv2.imencode('.jpg', img) return Image(data=ret) cap = cv2.VideoCapture(video_name) frame_id = 0 while True: try: clear_output(wait=True) ret, frame = cap.read() if ret: frame_id += 1 if frame_id > 10: break cv2.putText(frame, str(frame_id), (5, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) # 画frame_id res_img = keypoint_detector(frame) img = arrayShow(res_img) display(img) else: break except KeyboardInterrupt: cap.release() cap.release()
AI OpenCV 云学院
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。