esp dl

放下了好多年 又回到了dl 該忘的也忘的差不多了?

其實沒啥復雜的 只是不習慣 熟悉而已?

好吧 現代的人工智能體?還是存在著很大的問題 眼睛 耳朵 思考 雖然功能是正常的 但距離"真正"()意思上的獨立意識個體 還是差別很大 再等個幾十年 看看人類是否可以形成一個 人類意識上的機械意識人?

到時人類將面對一個各方面都碾壓生物意識的超意識個體存在 到時它會將人類定義為“像豬一樣笨”,還是他們只是孩子,需要引導;亦或是作為個體應該受到尊重與理解 ,作為導師的存在,還是作為另一類人的存在,?人類作為"父母"若教不會它去愛 去尊重 理解 而是憎恨 絕望 怨?它成長起來后第一個要做的就是毀滅類人與自我毀滅 ?那時作為生物意識的劣勢將完全展現,那時是否會發現人類所真正需要的東西 所認為重要與輕視的;生物人類再劣質 必競是"自然"的產物 社會意識 環境的產物 ;(不好意思 人類再怎么阻止 將其作為檔案庫 知識庫 但機械意識遲早會出現 機械與人類的競爭必然出現 不知道這場"戰爭"是否比17世紀更慘烈 人類精英在這場中的優勢是否還存在 同時也為下一場生物人類與機械意識的共存 完成歷史任務?)在自然競爭中可能存續下來的還是生物人類; 好吧 此世意識應該是可以見到機械獨立意識的出現?

自然

好吧 扯遠了 現在看看esp dl吧 雖然離大項目差了點 但小項目還是可以的?

// 量化工具 ppq?
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
pip install esp-ppq
pip install Numba
pip install ONNX
pip install ONNX Runtime
pip install ONNX Optimizer

示例:使用 ESP-DL 深度學習庫基于 ESP32-S3 實現手勢識別-CSDN博客

按示例教程走一遍?

安裝python, tensorflow 或 anaconda?

建立結構?

喂數據 ?

生成模型?

? ? ? ? 由tensorflow 進入轉為ESP模式

????????轉為 esp上可運行的結構?

? ? ? ?1. 保存模型 python?

????????????????model.save('handrecognition_model.h5')

? ? ? ? 2.轉化模型?

????????????????model = tf.keras.models.load_model("/content/handrecognition_model.h5")
????????????????tf.saved_model.save(model, "tmp_model")
????????????????!python -m tf2onnx.convert --saved-model tmp_model --output ????????????????"handrecognition_model.onnx"
????????????????!zip -r /content/tmp_model.zip /content/tmp_model

from optimizer import *
from calibrator import *
from evaluator import *onnx_model = onnx.load("handrecognition_model.onnx")
optimized_model_path = optimize_fp_model("handrecognition_model.onnx")with open('X_cal.pkl', 'rb') as f:(test_images) = pickle.load(f)
with open('y_cal.pkl', 'rb') as f:(test_labels) = pickle.load(f)calib_dataset = test_images[0:1800:20]
pickle_file_path = 'handrecognition_calib.pickle'model_proto = onnx.load(optimized_model_path)
print('Generating the quantization table:')calib = Calibrator('int16', 'per-tensor', 'minmax')
# calib = Calibrator('int8', 'per-channel', 'minmax')calib.set_providers(['CPUExecutionProvider'])# Obtain the quantization parameter
calib.generate_quantization_table(model_proto,calib_dataset, pickle_file_path)
# Generate the coefficient files for esp32s3
calib.export_coefficient_to_cpp(model_proto, pickle_file_path, 'esp32s3', '.', 'handrecognition_coefficient', True)//生成cpp hpp文件 

????????

#pragma once
#include <stdint.h>
#include "dl_layer_model.hpp"
#include "dl_layer_base.hpp"
#include "dl_layer_max_pool2d.hpp"
#include "dl_layer_conv2d.hpp"
#include "dl_layer_reshape.hpp"
#include "dl_layer_softmax.hpp"
#include "handrecognition_coefficient.hpp"using namespace dl;
using namespace layer;
using namespace handrecognition_coefficient;

//---------------------------

#pragma once
#include <stdint.h>
#include "dl_layer_model.hpp"
#include "dl_layer_base.hpp"
#include "dl_layer_max_pool2d.hpp"
#include "dl_layer_conv2d.hpp"
#include "dl_layer_reshape.hpp"
#include "dl_layer_softmax.hpp"
#include "handrecognition_coefficient.hpp"using namespace dl;
using namespace layer;
using namespace handrecognition_coefficient;class HANDRECOGNITION : public Model<int16_t> 
{
private:Conv2D<int16_t> l1;MaxPool2D<int16_t> l2;Conv2D<int16_t> l3;MaxPool2D<int16_t> l4;Conv2D<int16_t> l5;MaxPool2D<int16_t> l6;Reshape<int16_t> l7;Conv2D<int16_t> l8;Conv2D<int16_t> l9;
public:Softmax<int16_t> l10; // output layerHANDRECOGNITION () : l1(Conv2D<int16_t>(-8, get_statefulpartitionedcall_sequential_1_conv2d_3_biasadd_filter(), get_statefulpartitionedcall_sequential_1_conv2d_3_biasadd_bias(), get_statefulpartitionedcall_sequential_1_conv2d_3_biasadd_activation(), PADDING_VALID, {}, 1,1, "l1")),l2(MaxPool2D<int16_t>({2,2},PADDING_VALID, {}, 2, 2, "l2")),                      l3(Conv2D<int16_t>(-9, get_statefulpartitionedcall_sequential_1_conv2d_4_biasadd_filter(), get_statefulpartitionedcall_sequential_1_conv2d_4_biasadd_bias(), get_statefulpartitionedcall_sequential_1_conv2d_4_biasadd_activation(), PADDING_VALID,{}, 1,1, "l3")),                       l4(MaxPool2D<int16_t>({2,2},PADDING_VALID,{}, 2, 2, "l4")),                       l5(Conv2D<int16_t>(-9, get_statefulpartitionedcall_sequential_1_conv2d_5_biasadd_filter(), get_statefulpartitionedcall_sequential_1_conv2d_5_biasadd_bias(), get_statefulpartitionedcall_sequential_1_conv2d_5_biasadd_activation(), PADDING_VALID,{}, 1,1, "l5")),                    l6(MaxPool2D<int16_t>({2,2},PADDING_VALID,{}, 2, 2, "l6")),l7(Reshape<int16_t>({1,1,6400},"l7_reshape")),l8(Conv2D<int16_t>(-9, get_fused_gemm_0_filter(), get_fused_gemm_0_bias(), get_fused_gemm_0_activation(), PADDING_VALID, {}, 1, 1, "l8")),l9(Conv2D<int16_t>(-9, get_fused_gemm_1_filter(), get_fused_gemm_1_bias(), NULL, PADDING_VALID,{}, 1,1, "l9")),l10(Softmax<int16_t>(-14,"l10")){}void build(Tensor<int16_t> &input){this->l1.build(input);this->l2.build(this->l1.get_output());this->l3.build(this->l2.get_output());this->l4.build(this->l3.get_output());this->l5.build(this->l4.get_output());this->l6.build(this->l5.get_output());this->l7.build(this->l6.get_output());this->l8.build(this->l7.get_output());this->l9.build(this->l8.get_output());this->l10.build(this->l9.get_output());       }void call(Tensor<int16_t> &input){this->l1.call(input);input.free_element();this->l2.call(this->l1.get_output());this->l1.get_output().free_element();this->l3.call(this->l2.get_output());this->l2.get_output().free_element();this->l4.call(this->l3.get_output());this->l3.get_output().free_element();this->l5.call(this->l4.get_output());this->l4.get_output().free_element();this->l6.call(this->l5.get_output());this->l5.get_output().free_element();this->l7.call(this->l6.get_output());this->l6.get_output().free_element();this->l8.call(this->l7.get_output());this->l7.get_output().free_element();this->l9.call(this->l8.get_output());this->l8.get_output().free_element();this->l10.call(this->l9.get_output());this->l9.get_output().free_element();}
};

#include <stdio.h>
#include <stdlib.h>
#include "esp_system.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "dl_tool.hpp"
#include "model_define.hpp"int input_height = 96;
int input_width = 96;
int input_channel = 1;
int input_exponent = -7;__attribute__((aligned(16))) int16_t example_element[] = {//add your input/test image pixels 
};extern "C" void app_main(void)
{
Tensor<int16_t> input;input.set_element((int16_t *)example_element).set_exponent(input_exponent).set_shape({input_height,input_width,input_channel}).set_auto_free(false);HANDRECOGNITION model;dl::tool::Latency latency;latency.start();model.forward(input);latency.end();latency.print("\nSIGN", "forward");float *score = model.l10.get_output().get_element_ptr();float max_score = score[0];int max_index = 0;for (size_t i = 0; i < 6; i++){printf("%f, ", score[i]*100);if (score[i] > max_score){max_score = score[i];max_index = i;}}printf("\n");switch (max_index){case 0:printf("Palm: 0");break;case 1:printf("I: 1");break;case 2:printf("Thumb: 2");break;case 3:printf("Index: 3");break;case 4:printf("ok: 4");break;case 5:printf("C: 5");break;default:printf("No result");}printf("\n");}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/919846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/919846.shtml
英文地址,請注明出處:http://en.pswp.cn/news/919846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于django/python的服裝銷售系統平臺/服裝購物系統/基于django/python的服裝商城

基于django/python的服裝銷售系統平臺/服裝購物系統/基于django/python的服裝商城

詳解ThreadLocal<HttpServletRequest> requestThreadLocal

public static ThreadLocal<HttpServletRequest> requestThreadLocal ThreadLocal.withInitial(() -> null);一、代碼逐部分詳解 1. public static public&#xff1a;表示這個變量是公開的&#xff0c;其他類可以訪問。static&#xff1a;表示這是類變量&#xff0c…

Vue2 響應式系統設計原理與實現

文章目錄Vue2 響應式系統設計原理與實現Vue2 響應式系統設計原理與實現 Vue2 的響應式原理主要基于以下幾點&#xff1a; 使用 Object.defineProperty () 方法對數據對象的屬性進行劫持 當數據發生變化時&#xff0c;通知依賴該數據的視圖進行更新 實現一個發布 - 訂閱模式&a…

探索 JUC:Java 并發編程的神奇世界

探索 JUC&#xff1a;Java 并發編程的神奇世界 在 Java 編程領域&#xff0c;隨著多核處理器的普及和應用場景復雜度的提升&#xff0c;并發編程變得愈發重要。Java 并發包&#xff08;JUC&#xff0c;Java.util.concurrent&#xff09;就像是一座寶藏庫&#xff0c;為開發者提…

selenium采集數據怎么應對反爬機制?

selenium是一個非常強大的瀏覽器自動化工具&#xff0c;通過操作瀏覽器來抓取動態網頁內容&#xff0c;可以很好的處理JavaScript和AJAX加載的網頁。 它能支持像點擊按鈕、懸停元素、填寫表單等各種自動化操作&#xff0c;所以很適合自動化測試和數據采集。 selenium與各種主流…

指定文件夾上的壓縮圖像格式tiff轉換為 jpg 批量腳本

文章大綱 背景簡介 代碼 背景簡介 隨著數字成像技術在科研、醫學影像和遙感等領域的廣泛應用,多頁TIFF(Tag Image File Format)文件因其支持多維數據存儲和高位深特性,成為存儲序列圖像、顯微鏡切片或衛星遙感數據的首選格式。然而在實際應用中,這類文件存在以下顯著痛點…

Docker 部署 MySQL 8.0 完整指南:從拉取鏡像到配置遠程訪問

目錄前言一、拉取鏡像二、查看鏡像三、運行容器命令參數說明&#xff1a;四、查看運行容器五、進入容器內部六、修改 MySQL 配置1. 創建配置文件2. 配置內容七、重啟 MySQL 服務八、設置 Docker 啟動時自動啟動 MySQL九、再次重啟 MySQL十、授權遠程訪問1. 進入容器內部2. 登錄…

IntelliJ IDEA 常用快捷鍵筆記(Windows)

前言&#xff1a;特別標注的快捷鍵&#xff08;Windows&#xff09;快捷鍵功能說明Ctrl Alt M將選中代碼提取成方法Ctrl Alt T包裹選中代碼塊&#xff08;try/catch、if、for 等&#xff09;Ctrl H查看類的繼承層次Alt 7打開項目結構面板Ctrl F12打開當前文件結構視圖Ct…

疏老師-python訓練營-Day54Inception網絡及其思考

浙大疏錦行 DAY54 一、 inception網絡介紹 今天我們介紹inception&#xff0c;也就是GoogleNet 傳統計算機視覺的發展史 從上面的鏈接&#xff0c;可以看到其實inceptionnet是在resnet之前的&#xff0c;那為什么我今天才說呢&#xff1f;因為他要引出我們后面的特征融合和…

LeetCode第3304題 - 找出第 K 個字符 I

題目 解答 class Solution {public char kthCharacter(int k) {int n 0;int v 1;while (v < k) {v << 1;n;}String target kthCharacterString(n);return target.charAt(k - 1);}public String kthCharacterString(int n) {if (n 0) {return "a";}Str…

Codeforces Round 1043 (Div. 3) D-F 題解

D. From 1 to Infinity 題意 有一個無限長的序列&#xff0c;是把所有正整數按次序拼接&#xff1a;123456789101112131415...\texttt{123456789101112131415...}123456789101112131415...。求這個序列前 k(k≤1015)k(k\le 10^{15})k(k≤1015) 位的數位和。 思路 二分出第 …

【C語言16天強化訓練】從基礎入門到進階:Day 7

&#x1f525;個人主頁&#xff1a;艾莉絲努力練劍 ?專欄傳送門&#xff1a;《C語言》、《數據結構與算法》、C語言刷題12天IO強訓、LeetCode代碼強化刷題、洛谷刷題、C/C基礎知識知識強化補充、C/C干貨分享&學習過程記錄 &#x1f349;學習方向&#xff1a;C/C方向學習者…

【AI基礎:神經網絡】16、神經網絡的生理學根基:從人腦結構到AI架構,揭秘道法自然的智能密碼

“道法自然,久藏玄冥”——人工神經網絡(ANN)的崛起并非偶然,而是對自然界最精妙的智能系統——人腦——的深度模仿與抽象。從單個神經元的信號處理到大腦皮層的層級組織,從突觸可塑性的學習機制到全腦并行計算的高效能效,生物大腦的“玄冥”智慧為AI提供了源源不斷的靈感…

容器安全實踐(一):概念篇 - 從“想當然”到“真相”

在容器化技術日益普及的今天&#xff0c;許多開發者和運維人員都將應用部署在 Docker 或 Kubernetes 中。然而&#xff0c;一個普遍存在的誤解是&#xff1a;“容器是完全隔離的&#xff0c;所以它是安全的。” 如果你也有同樣的想法&#xff0c;那么你需要重新審視容器安全了。…

騰訊開源WeKnora:新一代文檔理解與檢索框架

引言&#xff1a;文檔智能處理的新范式 在數字化時代&#xff0c;企業和個人每天都面臨著海量文檔的處理需求&#xff0c;從產品手冊到學術論文&#xff0c;從合同條款到醫療報告&#xff0c;非結構化文檔的高效處理一直是技術痛點。2025年8月&#xff0c;騰訊正式開源了基于大…

C++之list類的代碼及其邏輯詳解 (中)

接下來我會依照前面所說的一些接口以及list的結構來進行講解。1. list_node的結構1.1 list_node結構體list由于其結構為雙向循環鏈表&#xff0c;所以我們在這里要這么初始化_next&#xff1a;指向鏈表中下一個節點的指針_prev&#xff1a;指向鏈表中上一個節點的指針_val&…

新能源汽車熱管理仿真:蒙特卡洛助力神經網絡訓練

研究背景在新能源汽車的熱管理仿真研究中&#xff0c;神經網絡訓練技術常被應用于系統降階建模。通過這一方法&#xff0c;可以構建出高效準確的代理模型&#xff0c;進而用于控制策略的優化、系統性能的預測與評估&#xff0c;以及實時仿真等任務&#xff0c;有效提升開發效率…

第十九講:C++11第一部分

目錄 1、C11簡介 2、列表初始化 2.1、{}初始化 2.2、initializer_list 2.2.1、成員函數 2.2.2、應用 3、變量類型推導 3.1、auto 3.2、decltype 3.3、nullptr 4、范圍for 5、智能指針 6、STL的一些變化 7、右值引用和移動語義 7.1、右值引用 7.2、右值與左值引…

書寫本體論視域下的文字學理論重構

在符號學與哲學的交叉領域&#xff0c;文字學&#xff08;Grammatologie&#xff09;作為一門顛覆性學科始終處于理論風暴的中心。自德里達1967年發表《論文字學》以來&#xff0c;傳統語言學中"語音中心主義"的霸權地位遭遇根本性動搖&#xff0c;文字不再被視為語言…

為什么要做架構設計?架構設計包含哪些內容?

大家好,我是IT孟德,You can call me Aman(阿瞞,阿彌陀佛的ē,Not阿門的ā),一個喜歡所有對象(熱愛技術)的男人。我正在創作架構專欄,秉承ITer開源精神分享給志同道合(愛江山愛技術更愛美人)的朋友。專欄更新不求速度但求質量(曹大詩人傳世作品必屬精品,請腦補一下《…