当前位置: 首页 > article >正文

ESP32-S3-DevKitC-1开发记录帖(2)——与MPU6050一起部署动作识别神经网络

一.标签分类

对于人的日常行为动作,我将其分为行、坐、卧、胸外按压三个动作,分别为walk,sit,down,emergency

而对于我这个初学者来说,先复刻一个已经成功的代码可以学习大致的步骤才能进行创新,所以根据这篇博客,把动作分为了Walking、Jogging、Upstairs、Downstairs、Stading、Sitting

二.硬件

esp32-s3-DevKitC-1、MPU6050   MB-102面包板、pcb电源

三.DTW算法->动态时间规整算法(东找西找找到的算法,当做一个科普了解了) pass

为什么会pass掉,是因为原视频的up主演示时需要输入一些指令,而我们的目的是为了实现无感动作检测, 所以pass掉了

定义:是基于动态规划策略对两个时序列通过非线性地进行时域对准调整以便于正确地计算两者之间的相似度的一种算法,以搜索估计它们之间最小可能的距离(最大可能的相似度)

简单来说,就是计算两个序列之间的相似性  

时序列相似度度量:时序列波形之间的相似度的衡量的一种方法就是把时序列波形看作是一个向量,然后计算两个向量之间的欧几里得距离。

用途:用于时序列分类和聚类等应用中

算法实现: 

1.填充累计距离矩阵

关键:距离公式  自己定义,比如dist(x,y)=|x-y|,对于矩阵中的每个元素

2.从右上角开始,向左下找寻配准路径找到左下三点中,较小的那个作为下一节点

3.输出配准结果

四.好戏开场(CNN1D人体活动检测算法)

复现博客:

传感器数据处理:CUBEAI详细使用教程二(STM32运行神经网络)---人体活动检测(MPU6050、CNN1D)_cubeai教程-CSDN博客

使用python中的flask快速部署Pytorch模型

4.1.开发环境:VSCode

4.2.flask学习

语言:python

1.定义/用途

可以用flask在短时间内就可以完成功能丰富的中小型网站或Web服务的实现,其强大的插件库可以让用户实现个性化的网站定制。

2.Flask基础入门

1)路由route的创建

a.通过创建路由并关联函数,实现一个基本的网页:

from flask import Flask

# 用当前脚本名称实例化Flask对象,方便flask从该脚本文件中获取需要的内容
app=Flask(__name__)

@app.route("/")
def index():
    return "Hello World!"

# 启动一个本地开发服务器,激活该网页
app.run()    

路由定义:程序实例需要知道每个url请求所对应的运行代码是什么,所以程序中必须要创建一个url请求地址到python运行函数的一个映射。故处理url和视图函数之间的关系的程序就是”路由“

b.通过路由的methods指定url允许的请求格式

from flask import Flask

app=Flask(__name__)

@app.route("/hello",methods=['GET','POST'])
def hello():
    return "Hello World!"

@app.route("/hi",methods=['POST'])
def hi():
    return "Hi World!"

app.run()

methods参数用于指定允许的请求格式

c.通过路由在url内添加参数,其关联的函数可以接收该函数

from flask import Flask

app = Flask(__name__)

# 可以在路径内以/<参数名>的形式指定参数,默认接收到的参数类型是string

'''#######################
以下为框架自带的转换器,可以置于参数前将接收的参数转化为对应类型
string 接受任何不包含斜杠的文本
int 接受正整数
float 接受正浮点数
path 接受包含斜杠的文本
########################'''

@app.route("/index/<int:id>",)
def index(id):
    if id == 1:
        return 'first'
    elif id == 2:
        return 'second'
    elif id == 3:
        return 'thrid'
    else:
        return 'hello world!'

if __name__=='__main__':
    app.run()

2)request对象的使用

a.定义

当客户端向服务器端发送请求时,服务器为本次请求创建request对象,并在调用Servlet的service的方法时,将该对象传递给service方法。Request对象中封装了客户端发送过来的所有的请求数据。

b.render_template()

可以用于呈现一个我们编写的html文件模板。从模板文件夹templates中呈现给定的模板上下文

语法:flask.render_template(template_name,**context)

·template_name 模板文件名,是一个字符串型参数,不可省略

·context  模板参数,由模板参数和对应的值组成的字典,可以省略的参数

c.request.method

用于获取url接收到的请求方式,以此返回不同的响应页面

from flask import Flask,render_template,request

app=Flask(__name__)

@app.route("/",methods=['GET','POST'])
# url映射的函数,要传参则在上述route中添加参数申明
def index():
    if request.method=='GET'
        # 想要html文件被函数访问到,首先要创建一个template文件,将html文件放入其中
        # 该文件夹需要被标记为模板文件夹,且模板语言设置为jinja2
        return render_template('index.html')
    # 此处欲发送post请求,需要在对应html文件的form表单中设置method为post
    elif request.method=='POST'
        name=request.form.get('name')
        password=request.form.get('password')
        return name+" "+password

if __name__=='__main__':
    app.run()

d.请求钩子before/after_request

用途:在正常执行的代码的前、中、后时期,强行执行一段我们想要执行的功能代码,便要用到钩子函数

分类:

1.before_request:在每一次请求之前调用

这个钩子函数表示每一次请求之前,可以执行某个特定功能的函数,执行顺序是先绑定的先执行。一般用于检验用户权限、请求是否合法等场景

from flask import Flask
app=Flask(__name__)

@app.before_request
def before_request_a():
    print('I am in before_request_a')

2.before_first_request:只在第一次请求之前调用

表示第一次请求之前可以执行的函数

@app.before_first_request
def teardown_request_a():
    print('I am in teardown_request_a')

3.after_request:每一次请求之后都会调用

表示每一次请求之后,可以执行某个特定功能的函数,这个函数接收response对象,所以执行完后必须归还response对象,一般可以用于产生csrf_token验证码等场景

代码格式同上

4.teardown_request:每一次请求之后都会调用

该函数接收一个参数,该参数是服务器出现的错误信息。只有在请求上下文被pop出请求栈的时候才会直接跳转到teardown_request,所以在被正常调用之前,即使某次请求有抛出错误,该请求也都会被继续执行,并在执行完后返回response

3) 返回json数据给前端

方法一:make_response方法和json库共同完成

from flask import Flask,make_respponse,json

app=Flask(__name__)

@app.route("/index")
def index():
    data={
        'name':'张三'
    }
    # json.dumps 将一个python数据结构转化为json
    # json.dumps 序列化时对中文默认使用的ascii编码,像输出真正的中文需要指定ensure_ascii=False
    # 生成一个response响应对象
    response=make_response(json.dumps(data,ensure_ascii=False))

    response.mimetype='application/json'
    return response

if __name__=='__main__':
    app.run()

4.3 Let's do it


http://www.kler.cn/news/368375.html

相关文章:

  • Kafka如何控制消费的位置?
  • [Python学习日记-53] Python 中的正则表达式模块 —— re
  • Linux - 动静态库
  • OCR应用之集装箱箱号自动识别技术,原理与应用
  • 尽管加密货币被禁,中国仍是比特币挖矿巨头!不过主导地位正在转向美国?
  • python 结构作业
  • 单链表总结
  • Zig 语言通用代码生成器:逻辑,冒烟测试版发布二
  • 学习qmake
  • 配置smaba (Linux与windows通信)
  • GPT打数模——电商品类货量预测及品类分仓规划
  • LeetCode9:回文数
  • golang将指针传给cgo后还能被回收吗?
  • 15-4连续子串和的整除问题
  • Android Studio历史版本下载
  • 开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用
  • jsp网上招标系统+lw视频讲解
  • 【论文阅读】Reliable, Adaptable, and Attributable Language Models with Retrieval
  • 基于stm32的HAL库的adc采集实验
  • 第18次CCF CSP认证真题解
  • 算法题总结(十九)——图论
  • Redis设计与实现 学习笔记 第十三章 客户端
  • Sora高端制造业WordPress外贸主题
  • 编程学习与心理健康:孩子会因学习编程而焦虑吗?
  • 远程:HTTP基本身份验证失败。提供的密码或令牌不正确,或者您的账户启用了两步验证,您必须使用个人访问令牌而不是密码。
  • BotScreen: Trust Everybody, but Cut the Aimbots Yourself