安装百度飞桨paddlepaddle和PaddleHub,本地部署百度开源口罩人脸检测及分类模型,并利用OpenCV调用摄像头实现视频实的时检测

目录

前言

安装百度飞桨paddlepaddle和PaddleHub

本地部署预训练模型,并实现实时检测


前言

最近参加了百度“深度学习7日入门-CV疫情特辑”的课程,使用的深度学习框架是百度自研的飞桨PaddlePaddle,课程结合当前疫情中的一些人工智能应用案例开展相关内容的介绍。早在2020年2月13日,百度就已经开源了业内首个口罩人脸检测及分类模型,飞桨预训练模型管理与迁移学习工具PadddleHub已提供了PyramidBox预训练模型,听课期间我也尝试了将这个口罩模型进行本地部署,并利用OpenCV调用摄像头实现视频实的时检测。

百度提供的在线演示链接地址:飞桨PaddlePaddle-源于产业实践的开源深度学习平台

安装百度飞桨paddlepaddle和PaddleHub

1.安装paddlepaddle

可以直接采用pip安装的方式(CPU和GPU二选一即可):

CPU版本安装:pip install paddlepaddle

GPU版本安装:pip install paddlepaddle-gpu

2.安装PaddleHub

pip install paddlehub

本地部署预训练模型,并实现实时检测

1. 首先安装OpenCV库:pip install opencv-python

2.使用paddlehub将模型下载到本地,进入到python环境,输入程序并执行

import paddlehub as hub
module = hub.Module(name="pyramidbox_lite_server_mask")
#module = hub.Module(name="pyramidbox_lite_mobile_mask")

模型会自动下载到本地,windows下是默认下载到 用户/user/.paddlehub文件夹下,Ubuntu是默认下载到/home/aistudio/.paddlehub目录下。

3. 给程序创建一个文件夹,我这里取名为mask_detection

4.新建文件夹data

5.新建文件夹detection_result

6.创建mask_detection.py,并编写代码:

from paddlehub import Module
import cv2
import time

test_img_path = ["./data/test_mask_detection.jpg"]
input_dict = {"image": test_img_path}
cap = cv2.VideoCapture(0)
#module = Module(name="pyramidbox_lite_server_mask")
module = Module(name="pyramidbox_lite_mobile_mask")
fps = 15
counter = 0
start_time = time.time() #开始时间
x = 1 # 每秒计算一次帧率

while True:
    ret,img = cap.read()#视频读取
    img = cv2.flip(img,1,dst=None) #镜像
    cv2.imwrite('./data/test_mask_detection.jpg',img)
    
    counter += 1
    now_time = time.time() #当前时间
    if (now_time - start_time) > x:
        fps=counter / (now_time - start_time)
        fps=round(fps,1) #保留小数点后1位
        counter = 0
        start_time = time.time()

    # 口罩检测预测
    results = module.face_detection(data=input_dict, use_multi_scale=False, shrink=0.6,)
    for result in results:
        print(result)

    # 预测结果展示
    img = cv2.imread("detection_result/test_mask_detection.jpg")
    cv2.putText(img, str(fps)+' FPS', (10, 20), cv2.FONT_HERSHEY_PLAIN, 1, (0,255,0), 1, cv2.FONT_ITALIC)
    cv2.imshow('camera',img)
    keyCode = cv2.waitKey(1) & 0xFF
    if keyCode == 27:# ESC键退出
        break

运行程序,为了不暴露自己就补贴运行成功的截图了。

  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我了解了您的问题。要使用Java OpenCV调用摄像头并动态识别人脸,您需要遵循以下步骤: 1. 安装OpenCV库 您需要在本地计算机上安装OpenCV库,以便能够在Java中调用OpenCV。您可以从OpenCV官方网站下载并安装OpenCV库。 2. 导入OpenCV库 在Java项目中,您需要导入OpenCV库。您可以使用Maven和Gradle等构建工具来导入OpenCV库。 3. 调用摄像头 您可以使用Java OpenCV中的VideoCapture类调用摄像头。以下是一个简单的示例代码: ``` import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.videoio.VideoCapture; public class CameraCapture { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); VideoCapture camera = new VideoCapture(0); if(!camera.isOpened()){ System.out.println("Error"); } else { Mat frame = new Mat(); while(true){ if (camera.read(frame)){ System.out.println("Frame Obtained"); System.out.println("Captured Frame Width " + frame.width() + " Height " + frame.height()); Core.flip(frame, frame, 1); break; } } } camera.release(); } } ``` 此代码段将获取从摄像头获取的帧并将其翻转。 4. 识别人脸 要识别人脸,您可以使用Java OpenCV中的CascadeClassifier类。以下是一个简单的示例代码: ``` import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfRect; import org.opencv.core.Rect; import org.opencv.core.Scalar; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier; import org.opencv.videoio.VideoCapture; public class FaceDetection { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); CascadeClassifier faceDetector = new CascadeClassifier("haarcascade_frontalface_alt.xml"); VideoCapture camera = new VideoCapture(0); Mat frame = new Mat(); while (true){ if (camera.read(frame)){ MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(frame, faceDetections); System.out.println(String.format("Detected %s faces", faceDetections.toArray().length)); for (Rect rect : faceDetections.toArray()){ Imgproc.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0)); } HighGui.imshow("Face Detection", frame); HighGui.waitKey(1); } } } } ``` 此代码段将检测从摄像头获取的帧中的面部,并将其框定。您需要下载名为“haarcascade_frontalface_alt.xml”的人脸检测器文件并将其放在代码中的相应位置。 希望这可以帮助您开始使用Java OpenCV调用摄像头并动态识别人脸。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值