Python太好用了!AI初学者快速体验人脸检测

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python太好用了!AI初学者快速体验人脸检测相关的知识,希望对你有一定的参考价值。

参考技术A 我们使用python进行AI识别测试,具体方式是是开启本地电脑的摄像头进行实时的识别,或者直接传入一张图片进行行人检测,在分析代码把数据源传入到识别,看到的是source=’0’,但是这个参数是打开本地电脑的摄像头流,再进行行人检测。

但我们需要对此处进行修改,使用rtsp流,进行AI行人识别,下面需要进行分析代码,找到可以修改的地方,或者摸个参数,来进行RTSP流的修改。

已经找到了视频流在哪里传进去的了,下面就是进行分析里面的代码进行改成rtsp流,把rtsp流写进去,来做到实时分析,实现行人检测的效果。

在进行分析的时候,发现source这个参数只有LoadStreams用到过,而且是直接传进去的。

进入source参数里面查看,发现里面有一个默认的值,就是读文件,如果不是文件,就把source=[source],再进行source值遍历。在遍历中还使用到了opencv打开本地电脑的摄像机流,再开一个线程进行实时行人识别。

代码中使用了opencv中cv2.VideoCapture的函数,从网上查找这个函数的用法得知,此函数是可以直接传入rtsp流地址的,所以问题解决就简单多了。cv2.VideoCapture这个函数是可以传入rtsp地址的,所以传入rtsp地址进行尝试,发现传入rtsp地址是没有问题的。

只要修改source这个参数即可,最终实现了检测:

五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)

导读

本文主要介绍如何使用OpenCV和PaddleHub实现一个实时人脸口罩检测系统。(公众号:OpenCV与AI深度学习)

背景介绍

    从19年疫情爆发到现在,佩戴口罩对大家来说已是常态。应运而生的就有了很多相关应用,如病毒发展预测、口罩佩戴检测以及戴口罩的人脸识别等。

    今天介绍的人脸口罩佩戴检测系统主要使用OpenCV和百度飞浆(PaddlePaddle)的PaddleHub提供的检测模型。PaddleHub提供了很多实用的模型,包括图像处理、文字处理、音频处理、视频处理和工业应用等。github地址:https://github.com/PaddlePaddle/PaddleHub

人脸口罩检测

    人脸检测部分的模型如下:

    红框内的两个模型支持人脸口罩检测,这里选择pyramidbox_lite_server_mask,实现详细步骤:

【1】安装PaddlePaddle、PaddleHub和OpenCV(opencv-python)

pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn
pip install paddlehub -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple  --trusted-host https://pypi.tuna.tsinghua.edu.cn

    本文使用的版本:

    PaddlePaddle---2.3.0

    PaddleHun---2.2.0

    opencv-python---4.6.0.66

    注意:安装PaddlePaddle可能会遇到一些问题,导致import paddle失败,大家根据报错信息搜索解决方法即可。

【2】图片人脸口罩检测

    准备待测图,运行下面代码,修改图片路径即可:

import paddlehub as hub
import cv2

mask_detector = hub.Module(name="pyramidbox_lite_server_mask")
img_path = './imgs/A0.png'
img = cv2.imread(img_path)

input_dict = "data": [img]
result = mask_detector.face_detection(data=input_dict)

count = len(result[0]['data'])
if count < 1:
  print('There is no face detected!')
else:
  for i in range(0,count):

    #print(result[0]['data'][i])
    label = result[0]['data'][i].get('label')
    score = float(result[0]['data'][i].get('confidence'))
    x1 = int(result[0]['data'][i].get('left'))
    y1 = int(result[0]['data'][i].get('top'))
    x2 = int(result[0]['data'][i].get('right'))
    y2 = int(result[0]['data'][i].get('bottom'))
    cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
    if label == 'NO MASK':
      cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
    else:
      cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
 
cv2.imwrite('result.jpg',img)
cv2.imshow('mask-detection', img)
cv2.waitKey()
cv2.destroyAllWindows()
print('Done!')

 

 代码开始第一次会先下载对应的模型到如下位置:

    C:\\Users\\xxx\\.paddlehub\\modules,以后不用再下载

测试图1:

运行结果:

测试图2:

运行结果:

测试图3:

运行结果:

测试图4:

运行结果:

    从上面测试结果来看,效果还不错!

【3】视频或摄像头实时人脸口罩检测

    准备测试视频或直接打开摄像头检测,选择对应的代码即可:

cap = cv2.VideoCapture('2.mp4') #视频文件检测# cap = cv2.VideoCapture(0) #摄像头检测

 完整代码:


import paddlehub as hub
import cv2

mask_detector = hub.Module(name="pyramidbox_lite_server_mask")

def mask_detecion(img):
  input_dict = "data": [img]
  result = mask_detector.face_detection(data=input_dict) 
  count = len(result[0]['data'])
  if count < 1:
    #print('There is no face detected!')
    pass
  else:
    for i in range(0,count):
      #print(result[0]['data'][i])
      label = result[0]['data'][i].get('label')
      score = float(result[0]['data'][i].get('confidence'))
      x1 = int(result[0]['data'][i].get('left'))
      y1 = int(result[0]['data'][i].get('top'))
      x2 = int(result[0]['data'][i].get('right'))
      y2 = int(result[0]['data'][i].get('bottom'))
      cv2.rectangle(img,(x1,y1),(x2,y2),(255,200,0),2)
      if label == 'NO MASK':
        cv2.putText(img,label,(x1,y1),0,0.8,(0,0,255),2)
      else:
        cv2.putText(img,label,(x1,y1),0,0.8,(0,255,0),2)
  return img


if __name__ == '__main__':
  cap = cv2.VideoCapture('2.mp4') #视频文件检测
  #cap = cv2.VideoCapture(0) #摄像头检测
  if(cap.isOpened()): #视频打开成功
    while(True):
      ret,frame = cap.read()#读取一帧
      result = mask_detecion(frame)
      cv2.imshow('mask_detection',result)
      if cv2.waitKey(1)&0xFF ==27: #按下Esc键退出
        break
  else:
    print ('open video/camera failed!')
  cap.release()
  cv2.destroyAllWindows()

   测试结果:

下载1:Pytoch常用函数手册

在「OpenCV与AI深度」号后台回复:Pytorch函数手册能够学习下载全网第一份Pytorch函数常用手册,包括Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多处理等十四章内容。

下载2:145个OpenCV实例应用代码

在「OpenCV与AI深入」公众号后台回复:OpenCV145能够学习下载145个OpenCV实例应用代码(Python和C++双语言实现)。

 

以上是关于Python太好用了!AI初学者快速体验人脸检测的主要内容,如果未能解决你的问题,请参考以下文章

走两步!AI通过步态诊断帕金森;从入门到如土·AI绘画中文指南;超好用的视频补帧软件;YOLO7人脸检测实现;前沿论文 | ShowMeAI资讯日报

基于人脸识别姿态检测距离估计的看电视姿态检测

基于人脸识别姿态检测距离估计的看电视姿态检测

[php]百度AI人脸识别教程

使用百度AI平台图像识别-人脸动漫化与黑白图片上色(PHP)

AI人脸检测智能分析网关算法模型管理,支持自由组合算法