基于树莓派的自拍神器

项目名称:基于树莓派的自拍神器

归属:工程实践项目

材料:树莓派4B 4G,MG995舵机X2,云台,UPS电源,开关X2,定制亚克力壳

功用:利用树莓派的实现云台人脸识别追踪,在底座固定的情况下实现左右330°,上下120°左右的视野覆盖,实现竖屏和横屏下皆可的人脸识别追踪,确保自拍、录像时人脸能在屏幕中央。另外可以作为追踪云台,在人运动时屏幕显示能始终正对着人脸。可将用户的若干图像进行训练生成训练文件,在训练后云台将只识别追踪特定用户,实现定制性。

主要原理:树莓派对手机支架上的摄像头传入图像进行实时帧识别,开启多线程,优化使得5min平均负载不低于75%,平均识别帧率不低于20FPS,调用CV库进行人脸识别判断,并提供代码改进实现横竖人脸皆可识别,经过训练文件比对特定用户,后通过PID控制PCA9685模块驱动二维舵机实现云台运动。

项目评定:本项目入选2020-2022-2学期工程实践校级优秀项目

现有特性:后期加入了训练功能,可以导入使用者的自拍照进行训练,训练后该自拍神器将只会追踪训练文件中的人脸对象,强化针对性和隐私性。

预计更新:加入手机APP远程控制功能,可在手机上实时查看摄像头画面,并在手机上提交和使用使用者个人头像图片作为训练和判断文件。


具体实现思路:

  1. 视觉追踪思路:

    • 利用Opencv库实现摄像头图像的采集与标准化处理
    • 利用Opencv中提供的级联分级器,载入训练好的Haar特征分类器,并对用户训练文件进行比对,实现人脸识别。
    • 绘制人脸矩形区域,并将该区域中心与图片中心(像素矩阵中心)做对比,作为误差来源。
    • 使用PID控制二维云台,实现人脸追踪。
  2. 目标检测原理:

    • Paul Viola 和 Michael Jones 2001 年在论文《Rapid Object Detection using a Boosted Cascade of Simple Features》中提出的一种高效目标检测方法。这种机器学习方法基于大量正面、负面图像训练级联函数,然后用于检测其他图像中的对象。

      这里,我们将用它进行人脸识别。最初,该算法需要大量正类图像(人脸图像)和负类图像(不带人脸的图像)来训练分类器。然后我们需要从中提取特征。

  3. 目标检测流程:

    • 读取视频流,截取单帧
    • 对图片进行灰度处理
    • 将宽高不等的图片无损转化为方形图片,以便进行横竖的通用识别
    • 利用训练好的Haar特征检测图片中的所有人脸
    • 选择最大的且在定制化训练文件中的人脸并绘制矩形
    • 对人脸中心坐标和大小运算,给出最后PID参数并下达舵机实行
  4. 舵机控制:

    舵机的控制基于PWM波,我的MG995的舵机控制周期为20ms(50Hz),发送不同占空比的脉冲能够使舵机转动一定的角度,实现伺服的原理就是根据检测到的猫脸矩形框中心与图片像素中心的X,Y差值,计算得到对应的舵机占空比的变化。


观看演示视频➡ 演示视频

代码项目地址➡Facetrack