【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测

【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:人脸检测

本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 实现人脸检测的项目设计。

项目介绍

VisionFive 2 Lite 结合 OpenCV 与 Haar 级联分类、DNN 模型实现人脸检测。

  • 准备工作:硬件连接、系统安装、OpenCV 的板端部署、相关补充等;
  • Haar 级联分类:使用 OpenCV 自带的 Haar 级联分类器实现人脸检测;
  • DNN 模型:使用 OpenCV 自带的 DNN 算法工具实现模型调用和人脸检测,给出高精度人脸检测解决方案。

准备工作

包括硬件连接、OpenCV 部署及测试等。

硬件连接

包括供电、联网、显示、鼠标键盘输入等。

系统安装

安装和烧录 VisionFive2 Lite 官方 Ubuntu 操作系统。

详见:VF2 Lite 系统安装 .

软件更新

更新软件包

bash 复制代码
wget https://github.com/starfive-tech/Debian/releases/download/v0.15.0-engineering-release-wayland/install_full.sh
sudo chmod +x install_full.sh
sudo ./install_full.sh

详见: StarFive-Tech | Debian .

OpenCV

更新操作系统后,检查 OpenCV 是否已正确安装

bash 复制代码
sudo apt install python3-opencv
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"

若未输出版本号,如 4.6.0,则需根据报错信息添加缺失的库或更改为匹配的版本。

版本匹配

这里给出一种绕过软件源冲突实现 OpenCV 正确部署的方案。

缺失或版本对应错误,可从其他源获取目标版本,待安装完成再恢复软件源。

  • 临时禁用 StarFive 源
bash 复制代码
sudo mv /etc/apt/sources.list.d/starfive-main.list /etc/apt/sources.list.d/starfive-main.list.bak
  • 更新索引并安装缺失的 OpenCV 包
bash 复制代码
sudo apt update
sudo apt install -y libopencv-dev python3-opencv
  • 恢复 StarFive 源
bash 复制代码
sudo mv /etc/apt/sources.list.d/starfive-main.list.bak /etc/apt/sources.list.d/starfive-main.list
sudo apt update
  • 验证安装结果
bash 复制代码
pkg-config --modversion opencv4
python3 -c "import cv2,sys;print(cv2.__version__,sys.version)"
  • 输出 OpenCV 版本号

至此,完成 OpenCV 的板端本地部署。

Haar CasCade

使用 Haar 级联分类器快速实现人脸检测。

  • 使用已安装的 haarcascade_frontalface_default.xml 模型文件检测人脸;

  • 加载模型 ./model/*.xml 和目标图片 ./img/test.jpg

  • 检测结果弹窗显示。

代码

终端执行指令 touch fd_xml.py 新建文件,并添加如下代码

python 复制代码
import numpy as np
import cv2
# 加载分类器
face_cascade = cv2.CascadeClassifier('/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml')
# 读取图片
img = cv2.imread('./img/westfour.jpg',cv2.IMREAD_COLOR)
# 转换灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸,输出外框
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=1)
# 遍历人脸检测结果
for (x,y,w,h) in faces:
    # 画框
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
# 显示结果
cv2.namedWindow('faces', cv2.WINDOW_AUTOSIZE)
cv2.imshow('faces',img)
# 退出
cv2.waitKey(0)
# 关闭窗口
cv2.destroyAllWindows()

保存代码。

效果

  • 终端执行 python3 fd_xml.py 弹窗显示识别结果,按任意键关闭窗口。
  • 识别效果如下

使用 Haar 级联分类的方案可以获得较为可信的人脸检测结果,准确度有进一步提升的空间。

DNN

下载预训练模型

使用 OpenCV 自带的 DNN 工具读取模型文件,加载本地模型 ./model/*.* 和目标图片 ./img/test.jpg,将检测结果弹窗显示。

代码

终端执行 touch fd_dnn.py 新建程序文件,添加如下代码

python 复制代码
#!/usr/bin/env python3
import cv2
import numpy as np

# 1. 加载模型
prototxt = "./model/deploy.prototxt"
caffemodel = "./model/res10_300x300_ssd_iter_140000.caffemodel"
net = cv2.dnn.readNetFromCaffe(prototxt, caffemodel)

# 2. 读取本地图片
img = cv2.imread("./img/bean.jpg")
if img is None:
    raise FileNotFoundError("请确认 ./img/*.jpg 存在")
h, w = img.shape[:2]

# 3. 构造 blob 并推理
blob = cv2.dnn.blobFromImage(cv2.resize(img, (300, 300)), 1.0,
                             (300, 300), (104.0, 177.0, 123.0))
net.setInput(blob)
detections = net.forward()

# 4. 画框 + 置信度
for i in range(detections.shape[2]):
    confidence = detections[0, 0, i, 2]
    if confidence < 0.5:
        continue
    # 映射回原图坐标
    box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
    (x1, y1, x2, y2) = box.astype("int")
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
    cv2.putText(img, f"{confidence * 100:.1f}%", (x1, y1 - 5),
                cv2.FONT_HERSHEY_SIMPLEX, 0.6, (0, 255, 0), 2)

# 5. 弹窗显示
cv2.imshow("Face Detection", img)
cv2.waitKey(0)            # 按任意键关闭
cv2.destroyAllWindows()

保存代码。

效果

  • 终端运行指令 python3 fd_dnn.py 弹窗显示识别结果,按任意键关闭窗口。
  • 识别效果如下

总结

本文介绍了昉·星光 VisionFive2 Lite 单板计算机结合 OpenCV 与 Haar 级联分类、DNN 模型实现人脸检测,包括OpenCV 部署、Haar 级联分类方案、DNN 算法等方案实现模型调用,给出高精度人脸检测解决方案,为相关产品在边缘 AI 视觉应用的快速开发设计提供了参考。

相关推荐
素玥5 小时前
实训5 python连接mysql数据库
数据库·python·mysql
互联网江湖5 小时前
携程当学胖东来
人工智能
一叶知秋yyds5 小时前
Ubuntu 虚拟机安装 OpenClaw 完整流程
linux·运维·ubuntu·openclaw
陌殇殇5 小时前
001 Spring AI Alibaba框架整合百炼大模型平台 — 快速入门
人工智能·spring boot·ai
zzzzls~5 小时前
Python 工程化: 用 Copier 打造“自我进化“的项目脚手架
开发语言·python·copier
Proxy_ZZ05 小时前
用Matlab绘制BER曲线对比SPA与Min-Sum性能
人工智能·算法·机器学习
黎阳之光5 小时前
黎阳之光:以视频孪生领跑全球,赋能数字孪生水利智能监测新征程
大数据·人工智能·算法·安全·数字孪生
韶博雅5 小时前
emcc24ai
开发语言·数据库·python
宇擎智脑科技5 小时前
基于 SAM3 + FastAPI 搭建智能图像标注工具实战
人工智能·计算机视觉
F_U_N_6 小时前
效率提升80%:AI全流程研发真实项目落地复盘
人工智能·ai编程