AI嵌入式K210项目(23)-人脸检测

文章目录

  • 前言
  • 一、实验准备
  • 二、实验步骤
  • 总结


前言

本章使用预训练好的模型,进行人脸检测,将摄像头采集的画面分析,比对模型,如果有人脸则框出来,并打印相关信息。

一、实验准备

请先将模型文件导入内存卡上,再将内存卡插入到K210开发板的内存卡插槽上,具体操作步骤请参考:
AI嵌入式K210项目(21)-AI模型文件导入至TF卡

本实验使用/sd/KPU/yolo_face_detect/face_detect_320x240.kmodel模型;

人脸检测需要用的内存卡加载模型文件,所以需要提前将模型文件导入内存卡,再将内存卡插入K210开发板的内存卡卡槽里,如果无法读取到内存卡里的模型文件,则会报错。

二、实验步骤

为了方便学习,我们将代码功能分块进行注释;

导入相关库,并初始化摄像头和LCD显示屏

import sensor, image, time, lcdfrom maix import KPU
import gclcd.init()
# sensor.reset(freq=48000000, dual_buff=True) # improve fps
sensor.reset()                      # Reset and initialize the sensor. It will# run automatically, call sensor.run(0) to stop
sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
sensor.skip_frames(time = 1000)     # Wait for settings take effect.
clock = time.clock()                # Create a clock object to track the FPS.

初始化KPU相关的参数,kpu需要加载kmodel文件,本次实验需要的模型文件路径为:/sd/KPU/yolo_face_detect/face_detect_320x240.kmodel,并使用yolo2来计算是否符合模型要求。目前检测人脸的阈值为threshold=0.5,如果需要检测人脸更加准确,可以适当调整阈值。

anchor = (0.1075, 0.126875, 0.126875, 0.175, 0.1465625, 0.2246875, 0.1953125, 0.25375, 0.2440625, 0.351875, 0.341875, 0.4721875, 0.5078125, 0.6696875, 0.8984375, 1.099687, 2.129062, 2.425937)
kpu = KPU()
kpu.load_kmodel("/sd/KPU/yolo_face_detect/face_detect_320x240.kmodel")
kpu.init_yolo2(anchor, anchor_num=9, img_w=320, img_h=240, net_w=320 , net_h=240 ,layer_w=10 ,layer_h=8, threshold=0.5, nms_value=0.2, classes=1)

新建while循环,将图像传入KPU进行计算,使用yolo2神经网络算法进行解算,最终得到人脸的位置信息,再将人脸框出来。

while True:#print("mem free:",gc.mem_free())clock.tick()                    # Update the FPS clock.img = sensor.snapshot()kpu.run_with_output(img)dect = kpu.regionlayer_yolo2()fps = clock.fps()if len(dect) > 0:print("dect:",dect)for l in dect :a = img.draw_rectangle(l[0],l[1],l[2],l[3], color=(0, 255, 0))a = img.draw_string(0, 0, "%2.1ffps" %(fps), color=(0, 60, 128), scale=2.0)lcd.display(img)gc.collect()kpu.deinit()

将K210开发板通过TYPE-C数据线连接到电脑上,CanMV IDE点击连接按钮,连接完成后点击运行按钮,运行例程代码。也可以将代码作为main.py下载到K210开发板上运行。
在这里插入图片描述
等待系统初始化完成后,LCD显示摄像头画面,用摄像头拍摄人脸,当检测到人脸后,屏幕会出现绿框把人脸框出来,并且在IDE底部的串行终端打印检测到的人脸的信息。

在这里插入图片描述
串口日志如下:
在这里插入图片描述


总结

本实验使用K210的KPU和yolov2模型实现人脸检测功能,使用IDE示例中代码,对实现的功能模块加以分析;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/440092.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

装机打不开BIOS怎么办?如何进入Windows10的BIOS页面,如何关闭快速启动

电脑有快速启动,想进去BIOS页面非常困难,在临开机的页面,按触发按键不管用。 然后我看到了一种新的进入BIOS的方式: (1)win8以上的系统,按住shift,然后鼠标点击重启,再…

Softmax分类器

文章目录 回顾使用Sigmoid构建多分类器? SoftMax函数交叉熵损失函数例子 MINIST多分类器数据集步骤实现1.数据集2.构建模型3.构建损失函数和优化器4. 训练和测试 完整代码 回顾 上节课利用糖尿病数据集做了二分类任务 MNIST数据集有10个类别我们又该如何进行分类呢…

java反射常用方法

反射思维导图 使用案例 package Reflection.Work.WorkTest01;import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays;public class WorkDe…

基于数字签名技术的挑战/响应式认证方式

挑战/响应式认证方式简便灵活,实现起来也比较容易。当网络需要验证用户身份时,客户端向服务器提出登录请求;当服务器接收到客户端的验证请求时,服务器端向客户端发送一个随机数,这就是这种认证方式的“冲击&#xff08…

java学习之路(2)-编译java文件运行Java文件

创建.java后缀文本文件HelloWorld .java 写入代码: public class HelloWorld { public static void main(String []args) { System.out.println("Hello World"); } } 运行cmd命令 找到代码所在目录 输入javac编译Java文件生成HelloWorld.class 编译:…

Spring Security简介

什么是Spring Security Spring Security是 Spring提供的安全认证服务的框架。 使用Spring Security可以帮助我 们来简化认证和授权的过程。 官网&#xff1a;Spring Security 对应的maven坐标&#xff1a; <!--security启动器--> <dependency><groupId>or…

服装产业转型升级,iPayLinks帮助企业拓展市场盈更多

从十万件的大订单转变为几百件的小订单&#xff0c;小单快反模式为中国服装出口带来了机遇&#xff0c;也带来了挑战。   “十三行-中大-鹭江”是广州曾经最具代表性的外贸服装产业带。在过去很长的一段时间里&#xff0c;服装外贸老板在这里创造“神话”&#xff1a;24小时内…

C# IP v4转地址·地名 高德

需求: IPv4地址转地址 如&#xff1a;输入14.197.150.014&#xff0c;输出河北省石家庄市 SDK: 目前使用SDK为高德地图WebAPI 高德地图开放平台https://lbs.amap.com/ 可个人开发者使用&#xff0c;不过有配额限制。 WebAPI 免费配额调整公告https://lbs.amap.com/news/…

第一节 分布式架构设计理论与Zookeeper环境搭建

目录 1. 分布式架构设计理论 1. 分布式架构介绍 1.1 什么是分布式 1.2 分布式与集群的区别 1.3 分布式系统特性 1.4 分布式系统面临的问题 2. 分布式理论 2.1 数据一致性 2.1.1 什么是分布式数据一致性 2.1.2 副本一致性 2.1.3 一致性分类 2.2 CAP定理 2.2.1 CAP定…

ros2配合yolov8具体实现

效果图 用yolov8实时检测物体,包括物体的类别,置信度和坐标通过ros2发布出去自定义消息 int64 xmin int64 ymin int64 xmax int64 ymax float32 conf string name发布端代码 from ultralytics import YOLO import cv2 import rclpy from yolo_interfaces.msg import Msgyo…

C++入门(一)— 使用VScode开发简介

文章目录 C 介绍C 擅长领域C 程序是如何开发编译器、链接器和库编译预处理编译阶段汇编阶段链接阶段 安装集成开发环境 &#xff08;IDE&#xff09;配置编译器&#xff1a;构建配置配置编译器&#xff1a;编译器扩展配置编译器&#xff1a;警告和错误级别配置编译器&#xff1…

基于Vue uniapp和java SpringBoot的汽车充电桩微信小程序

摘要&#xff1a; 随着新能源汽车市场的迅猛发展&#xff0c;汽车充电桩的需求日益增长。为了满足市场需求&#xff0c;本课题开发了一款基于Java SpringBoot后端框架和Vue uniapp前端框架的汽车充电桩微信小程序。该小程序旨在为用户提供一个简洁高效的充电服务平台&#xff0…