【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 视觉应用的快速开发设计提供了参考。

相关推荐
喵手1 小时前
Python爬虫实战:携程景点数据采集实战:从多页列表到结构化数据集(附SQLite持久化存储)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·携程景点数据采集·sqlite存储采集数据
yuankoudaodaokou1 小时前
突破大型工件测量瓶颈:思看科技在风电与船舶制造中的革新应用
python·科技·制造
A01234123451 小时前
当AI成为“仿生绿植”:从颜廷利《升命学说》看技术时代的灵魂缺失
人工智能·心理学三大泰斗谁最厉害·中国最出名的心理学专家·心理学的三大巨头·中国心理学第一名是谁·中国最顶尖的心理学家·世界公认顶尖心理学家
新缸中之脑1 小时前
用Ollama Launch连接AI编码代理
人工智能
一招定胜负1 小时前
卷积神经网络提取人脸五个特征点
人工智能·cnn·kotlin
一招定胜负1 小时前
回顾:cbow连续词袋与词嵌入
人工智能·自然语言处理·nlp
七夜zippoe1 小时前
大模型低成本高性能演进 从GPT到DeepSeek的技术实战手记
人工智能·gpt·算法·架构·deepseek
Allen_LVyingbo1 小时前
面向70B多模态医疗大模型预训练的工程落地(医疗大模型预训练扩展包)
人工智能·python·分类·知识图谱·健康医疗·迁移学习
一方_self1 小时前
cloudflare AI gateway实战代理任意第三方大模型服务提供商
人工智能·gateway